@vacano/ui 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/GlobalStyle.tsx","../src/components/Accordion/styled.ts","../src/components/Accordion/Accordion.tsx","../src/components/Alert/styled.ts","../src/components/Alert/Alert.tsx","../src/components/Avatar/helpers.ts","../src/components/Avatar/constants.ts","../src/components/Avatar/styled.ts","../src/components/Avatar/Avatar.tsx","../src/components/AvatarGroup/styled.ts","../src/components/AvatarGroup/AvatarGroup.tsx","../src/components/Badge/styled.ts","../src/components/Badge/Badge.tsx","../src/components/Breadcrumbs/BreadcrumbItem.tsx","../src/components/Breadcrumbs/styled.ts","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Card/styled.ts","../src/components/Card/Card.tsx","../src/components/Card/CardBody.tsx","../src/components/Card/CardFooter.tsx","../src/components/Card/CardHeader.tsx","../src/components/Confirmation/constants.ts","../src/components/Confirmation/styled.ts","../src/components/Confirmation/ConfirmationBar.tsx","../src/components/Confirmation/context.tsx","../src/components/Confirmation/ConfirmationProvider.tsx","../src/components/Confirmation/useConfirmation.ts","../src/components/Container/constants.ts","../src/components/Container/styled.ts","../src/components/Container/Container.tsx","../src/components/DateRange/helpers.ts","../src/components/DateRange/styled.ts","../src/components/DateRange/DateRange.tsx","../src/components/Divider/styled.ts","../src/components/Divider/Divider.tsx","../src/components/Drawer/styled.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/styled.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/EmptyState/styled.ts","../src/components/EmptyState/EmptyState.tsx","../src/components/FieldRow/styled.ts","../src/components/FieldRow/FieldRow.tsx","../src/components/FileUpload/helpers.ts","../src/components/FileUpload/styled.ts","../src/components/FileUpload/FileUpload.tsx","../src/components/FileUpload/FileUploadItem.tsx","../src/components/Hashtag/styled.ts","../src/components/Hashtag/Hashtag.tsx","../src/components/Heading/styled.ts","../src/components/Heading/Heading.tsx","../src/components/MenuButton/styled.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/Notification/constants.ts","../src/components/Notification/context.tsx","../src/components/Notification/helpers.ts","../src/components/Notification/styled.ts","../src/components/Notification/NotificationBar.tsx","../src/components/Notification/reducer.ts","../src/components/Notification/NotificationProvider.tsx","../src/components/Notification/useNotification.ts","../src/components/NotifyConfirmation/context.tsx","../src/components/NotifyConfirmation/constants.ts","../src/components/NotifyConfirmation/styled.ts","../src/components/NotifyConfirmation/NotifyConfirmationBar.tsx","../src/components/NotifyConfirmation/NotifyConfirmationProvider.tsx","../src/components/NotifyConfirmation/useNotifyConfirmation.ts","../src/components/Overline/styled.ts","../src/components/Overline/Overline.tsx","../src/components/ShellScreen/styled.ts","../src/components/ShellScreen/ShellScreen.tsx","../src/components/Pagination/helpers.ts","../src/components/Pagination/styled.ts","../src/components/Pagination/Pagination.tsx","../src/components/Panel/constants.ts","../src/components/Panel/helpers.ts","../src/components/Panel/styled.ts","../src/components/Panel/Panel.tsx","../src/components/PendingScreen/constants.ts","../src/components/PendingScreen/helpers.ts","../src/components/PendingScreen/styled.ts","../src/components/SplitFlapText/constants.ts","../src/components/SplitFlapText/helpers.ts","../src/components/SplitFlapText/styled.ts","../src/components/SplitFlapText/SplitFlapText.tsx","../src/components/PendingScreen/PendingScreen.tsx","../src/components/Progress/constants.ts","../src/components/Progress/styled.ts","../src/components/Progress/Progress.tsx","../src/components/SaveProgress/context.tsx","../src/components/SaveProgress/styled.ts","../src/components/SaveProgress/SaveProgressProvider.tsx","../src/components/SaveProgress/useSaveProgress.ts","../src/components/Skeleton/styled.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/Stat/styled.ts","../src/components/Stat/Stat.tsx","../src/components/StepLog/styled.ts","../src/components/StepLog/StepLog.tsx","../src/components/Stepper/styled.ts","../src/components/Stepper/Stepper.tsx","../src/components/Tabs/styled.ts","../src/components/Tabs/Tabs.tsx","../src/components/Timeline/styled.ts","../src/components/Timeline/Timeline.tsx","../src/components/Toastr/context.tsx","../src/components/Toastr/constants.ts","../src/components/Toastr/reducer.ts","../src/components/Toastr/helpers.ts","../src/components/Toastr/styled.ts","../src/components/Toastr/ToastItem.tsx","../src/components/Toastr/ToastContainer.tsx","../src/components/Toastr/ToastProvider.tsx","../src/components/Toastr/useToast.ts","../src/components/Tooltip/constants.ts","../src/components/Tooltip/helpers.ts","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/User/styled.ts","../src/components/User/User.tsx"],"sourcesContent":["import { css, Global } from '@emotion/react'\n\nconst globalStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n * {\n margin: 0;\n padding: 0;\n }\n\n html {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji';\n }\n\n body {\n min-height: 100vh;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n }\n\n img,\n picture,\n video,\n canvas,\n svg {\n display: block;\n max-width: 100%;\n }\n\n input,\n button,\n textarea,\n select {\n font: inherit;\n color: inherit;\n }\n\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n overflow-wrap: break-word;\n }\n\n a {\n color: inherit;\n text-decoration: inherit;\n }\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n }\n\n ul,\n ol {\n list-style: none;\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n /* Tabular figures for numbers in data contexts */\n .tabular-nums {\n font-variant-numeric: tabular-nums;\n }\n\n /* Proportional figures for running text */\n .proportional-nums {\n font-variant-numeric: proportional-nums;\n }\n\n /* Selection styling */\n ::selection {\n background-color: rgba(0, 122, 255, 0.25);\n }\n\n /* Focus visible for accessibility */\n :focus-visible {\n outline: 2px solid rgba(0, 122, 255, 0.5);\n outline-offset: 2px;\n }\n\n :focus:not(:focus-visible) {\n outline: none;\n }\n`\n\nexport const GlobalStyle = () => {\n return <Global styles={globalStyles} />\n}\n","import styled from '@emotion/styled'\n\nimport { type AccordionVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $variant: AccordionVariant\n}\n\ntype StyledItemProps = {\n $variant: AccordionVariant\n $disabled: boolean\n}\n\ntype StyledTriggerProps = {\n $disabled: boolean\n $expanded: boolean\n}\n\ntype StyledContentWrapperProps = {\n $expanded: boolean\n}\n\ntype StyledIconProps = {\n $expanded: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${({ $variant }) => ($variant === 'splitted' ? '8px' : '0')};\n`\n\nexport const StyledItem = styled.div<StyledItemProps>`\n border-bottom: ${({ $variant }) =>\n $variant === 'outlined' ? `1px solid ${COLORS.gray}` : 'none'};\n border-radius: ${({ $variant }) => ($variant === 'splitted' ? '8px' : '0')};\n background-color: ${({ $variant }) => ($variant === 'splitted' ? '#f9fafb' : 'transparent')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n\n &:first-of-type {\n border-top: ${({ $variant }) =>\n $variant === 'outlined' ? `1px solid ${COLORS.gray}` : 'none'};\n }\n`\n\nexport const StyledTrigger = styled.button<StyledTriggerProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 14px 16px;\n background: none;\n border: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n font-size: 14px;\n font-weight: 600;\n color: ${({ $expanded }) => ($expanded ? COLORS.black : COLORS['iron-grey'])};\n text-align: left;\n outline: none;\n transition: color 0.2s ease;\n\n &:hover {\n color: ${COLORS.black};\n }\n`\n\nexport const StyledIcon = styled.span<StyledIconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n color: ${COLORS['iron-grey']};\n transition: transform 0.2s ease;\n transform: rotate(${({ $expanded }) => ($expanded ? '180deg' : '0deg')});\n`\n\nexport const StyledContentWrapper = styled.div<StyledContentWrapperProps>`\n display: grid;\n grid-template-rows: ${({ $expanded }) => ($expanded ? '1fr' : '0fr')};\n transition: grid-template-rows 0.2s ease;\n`\n\nexport const StyledContentInner = styled.div`\n overflow: hidden;\n`\n\nexport const StyledContent = styled.div`\n padding: 0 16px 14px;\n font-size: 14px;\n line-height: 1.5;\n color: ${COLORS['iron-grey']};\n`\n","import { useCallback, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledContent,\n StyledContentInner,\n StyledContentWrapper,\n StyledIcon,\n StyledItem,\n StyledTrigger,\n} from './styled'\nimport { type AccordionProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('accordion')\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n)\n\nexport const Accordion = ({\n className,\n classnames,\n defaultValue = [],\n items,\n multiple = false,\n onChange,\n ref,\n value: controlledValue,\n variant = 'outlined',\n ...rest\n}: AccordionProps) => {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue)\n\n const isControlled = controlledValue !== undefined\n const expanded = isControlled ? controlledValue : internalValue\n\n const toggle = useCallback(\n (itemValue: string) => {\n const isExpanded = expanded.includes(itemValue)\n\n let next: string[]\n\n if (multiple) {\n next = isExpanded ? expanded.filter((v) => v !== itemValue) : [...expanded, itemValue]\n } else {\n next = isExpanded ? [] : [itemValue]\n }\n\n if (!isControlled) {\n setInternalValue(next)\n }\n\n onChange?.(next)\n },\n [expanded, isControlled, multiple, onChange],\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $variant={variant}\n className={css('container', className)}\n role=\"region\"\n >\n {items.map((item) => {\n const isExpanded = expanded.includes(item.value)\n\n return (\n <StyledItem\n key={item.value}\n $variant={variant}\n $disabled={Boolean(item.disabled)}\n className={css('item', classnames?.item)}\n >\n <StyledTrigger\n type=\"button\"\n aria-expanded={isExpanded}\n $disabled={Boolean(item.disabled)}\n $expanded={isExpanded}\n disabled={item.disabled}\n onClick={() => toggle(item.value)}\n className={css('trigger', classnames?.trigger)}\n >\n {item.title}\n <StyledIcon $expanded={isExpanded} className={css('icon', classnames?.icon)}>\n <ChevronIcon />\n </StyledIcon>\n </StyledTrigger>\n\n <StyledContentWrapper $expanded={isExpanded}>\n <StyledContentInner>\n <StyledContent className={css('content', classnames?.content)}>\n {item.content}\n </StyledContent>\n </StyledContentInner>\n </StyledContentWrapper>\n </StyledItem>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { type AlertRadius, type AlertVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst RADIUS: Record<AlertRadius, string> = {\n none: '0',\n sm: '8px',\n md: '12px',\n lg: '16px',\n full: '9999px',\n}\n\nconst ICON_COLORS: Record<AlertVariant, string> = {\n normal: COLORS.black,\n success: COLORS.green,\n warning: COLORS.yellow,\n danger: COLORS.red,\n}\n\nexport const StyledContainer = styled.div<{ $radius: AlertRadius; $center: boolean }>`\n display: flex;\n align-items: ${({ $center }) => ($center ? 'center' : 'flex-start')};\n gap: 12px;\n padding: 16px;\n border-radius: ${({ $radius }) => RADIUS[$radius]};\n background-color: ${COLORS.gray};\n`\n\nexport const StyledIcon = styled.div<{ $variant: AlertVariant }>`\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: ${COLORS.white};\n box-shadow:\n 0 0 0 4px ${COLORS.gray},\n 0 0 0 5px rgba(0, 0, 0, 0.06);\n\n &::after {\n content: '';\n }\n\n > span {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background-color: ${({ $variant }) => ICON_COLORS[$variant]};\n color: ${COLORS.white};\n }\n\n > span svg {\n width: 16px;\n height: 16px;\n }\n`\n\nexport const StyledBody = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n min-width: 0;\n`\n\nexport const StyledTitle = styled.div`\n font-size: 14px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n`\n","import { StyledBody, StyledContainer, StyledDescription, StyledIcon, StyledTitle } from './styled'\nimport { type AlertProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('alert')\n\nexport const Alert = ({\n className,\n classnames,\n description,\n icon,\n radius = 'lg',\n ref,\n title,\n variant = 'normal',\n ...rest\n}: AlertProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n role=\"alert\"\n className={css('container', className)}\n $radius={radius}\n $center={!description}\n >\n {icon && (\n <StyledIcon $variant={variant} className={css('icon', classnames?.icon)}>\n <span>{icon}</span>\n </StyledIcon>\n )}\n\n <StyledBody>\n {title && <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>}\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledBody>\n </StyledContainer>\n )\n}\n","export const getInitials = (name: string): string => {\n const parts = name.trim().split(/\\s+/)\n\n if (parts.length >= 2) {\n const first = parts[0]?.[0] ?? ''\n const last = parts[parts.length - 1]?.[0] ?? ''\n\n return (first + last).toUpperCase()\n }\n\n return name.slice(0, 2).toUpperCase()\n}\n","import { AvatarColor, AvatarRadius, AvatarSize } from './types'\nimport { COLORS } from '../../lib'\n\nexport const AVATAR_SIZES: Record<AvatarSize, number> = {\n sm: 32,\n md: 40,\n lg: 56,\n}\n\nexport const AVATAR_FONT_SIZES: Record<AvatarSize, number> = {\n sm: 12,\n md: 14,\n lg: 20,\n}\n\nexport const AVATAR_ICON_SIZES: Record<AvatarSize, number> = {\n sm: 18,\n md: 22,\n lg: 30,\n}\n\nexport const AVATAR_RADIUS: Record<AvatarRadius, string> = {\n sm: '6px',\n md: '10px',\n lg: '14px',\n full: '50%',\n}\n\nexport const AVATAR_COLORS: Record<\n AvatarColor,\n { background: string; color: string; border: string }\n> = {\n default: { background: COLORS.gray, color: COLORS.black, border: COLORS.gray },\n primary: {\n background: COLORS['baltic-blue'],\n color: COLORS.white,\n border: COLORS['baltic-blue'],\n },\n success: { background: COLORS.green, color: COLORS.white, border: COLORS.green },\n warning: { background: COLORS.yellow, color: COLORS.black, border: COLORS.yellow },\n danger: { background: COLORS.red, color: COLORS.white, border: COLORS.red },\n}\n","import styled from '@emotion/styled'\n\nimport {\n AVATAR_COLORS,\n AVATAR_FONT_SIZES,\n AVATAR_ICON_SIZES,\n AVATAR_RADIUS,\n AVATAR_SIZES,\n} from './constants'\nimport { AvatarColor, AvatarRadius, AvatarSize } from './types'\n\ntype StyledContainerProps = {\n $size: AvatarSize\n $radius: AvatarRadius\n $color: AvatarColor\n $bordered: boolean\n $disabled: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: ${({ $size }) => AVATAR_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_SIZES[$size]}px;\n border-radius: ${({ $radius }) => AVATAR_RADIUS[$radius]};\n background-color: ${({ $color }) => AVATAR_COLORS[$color].background};\n color: ${({ $color }) => AVATAR_COLORS[$color].color};\n font-size: ${({ $size }) => AVATAR_FONT_SIZES[$size]}px;\n font-weight: 600;\n line-height: 1;\n flex-shrink: 0;\n user-select: none;\n box-sizing: border-box;\n ${({ $bordered, $color }) =>\n $bordered && `box-shadow: 0 0 0 2px #fff, 0 0 0 4px ${AVATAR_COLORS[$color].border};`}\n ${({ $disabled }) => $disabled && 'opacity: 0.5; pointer-events: none;'}\n`\n\nexport const StyledImage = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n`\n\ntype StyledFallbackProps = {\n $size: AvatarSize\n}\n\nexport const StyledFallback = styled.span<StyledFallbackProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n width: ${({ $size }) => AVATAR_ICON_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_ICON_SIZES[$size]}px;\n }\n`\n\nexport const StyledInitials = styled.span`\n letter-spacing: 0.5px;\n`\n","import { useState } from 'react'\n\nimport { getInitials } from './helpers'\nimport { StyledContainer, StyledFallback, StyledImage, StyledInitials } from './styled'\nimport { AvatarProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('avatar')\n\nexport const Avatar = ({\n bordered = false,\n className,\n classnames,\n color = 'default',\n disabled = false,\n icon,\n name,\n radius = 'full',\n ref,\n size = 'md',\n src,\n ...rest\n}: AvatarProps) => {\n const [imageError, setImageError] = useState(false)\n\n const showImage = src && !imageError\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $size={size}\n $radius={radius}\n $color={color}\n $bordered={bordered}\n $disabled={disabled}\n >\n {showImage ? (\n <StyledImage\n className={css('image', classnames?.image)}\n src={src}\n alt={name || ''}\n onError={() => setImageError(true)}\n />\n ) : icon ? (\n <StyledFallback className={css('fallback', classnames?.fallback)} $size={size}>\n {icon}\n </StyledFallback>\n ) : name ? (\n <StyledInitials className={css('initials', classnames?.initials)}>\n {getInitials(name)}\n </StyledInitials>\n ) : (\n <StyledFallback className={css('fallback', classnames?.fallback)} $size={size}>\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n </StyledFallback>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { AVATAR_FONT_SIZES, AVATAR_SIZES } from '../Avatar/constants'\nimport { AvatarSize } from '../Avatar/types'\n\ntype StyledGroupProps = {\n $size: AvatarSize\n}\n\nexport const StyledGroup = styled.div<StyledGroupProps>`\n display: inline-flex;\n align-items: center;\n\n & > * + * {\n margin-left: -${({ $size }) => Math.round(AVATAR_SIZES[$size] * 0.25)}px;\n }\n`\n\ntype StyledCountProps = {\n $size: AvatarSize\n}\n\nexport const StyledCount = styled.div<StyledCountProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => AVATAR_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_SIZES[$size]}px;\n border-radius: 50%;\n background-color: #e4e4e7;\n color: #71717a;\n font-size: ${({ $size }) => AVATAR_FONT_SIZES[$size]}px;\n font-weight: 600;\n line-height: 1;\n flex-shrink: 0;\n`\n","import { Children, cloneElement, isValidElement } from 'react'\n\nimport { StyledCount, StyledGroup } from './styled'\nimport { AvatarGroupProps } from './types'\nimport { AvatarProps } from '../Avatar/types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('avatar-group')\n\nexport const AvatarGroup = ({\n children,\n className,\n classnames,\n max = 5,\n ref,\n size = 'md',\n ...rest\n}: AvatarGroupProps) => {\n const avatars = Children.toArray(children).filter(isValidElement)\n const visible = avatars.slice(0, max)\n const remaining = avatars.length - max\n\n return (\n <StyledGroup {...rest} ref={ref} className={css('container', className)} $size={size}>\n {visible.map((child) =>\n isValidElement<AvatarProps>(child) ? cloneElement(child, { size }) : child,\n )}\n {remaining > 0 && (\n <StyledCount className={css('count', classnames?.count)} $size={size}>\n +{remaining}\n </StyledCount>\n )}\n </StyledGroup>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { BadgeColor, BadgePlacement, BadgeShape, BadgeSize, BadgeVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst COLOR_MAP: Record<BadgeColor, { bg: string; text: string; border: string; flatBg: string }> =\n {\n default: { bg: COLORS.black, text: COLORS.white, border: COLORS.black, flatBg: COLORS.gray },\n success: { bg: COLORS.green, text: COLORS.white, border: COLORS.green, flatBg: '#dcfce7' },\n warning: { bg: COLORS.yellow, text: COLORS.black, border: COLORS.yellow, flatBg: '#fef9c3' },\n danger: { bg: COLORS.red, text: COLORS.white, border: COLORS.red, flatBg: '#fee2e2' },\n }\n\nconst SIZE_MAP: Record<\n BadgeSize,\n { minWidth: number; height: number; fontSize: number; padding: string; dotSize: number }\n> = {\n sm: { minWidth: 16, height: 16, fontSize: 10, padding: '0 4px', dotSize: 8 },\n md: { minWidth: 20, height: 20, fontSize: 11, padding: '0 5px', dotSize: 10 },\n lg: { minWidth: 24, height: 24, fontSize: 12, padding: '0 6px', dotSize: 12 },\n}\n\nconst getPlacement = ($placement: BadgePlacement, $shape: BadgeShape) => {\n const offset = $shape === 'circle' ? '10%' : '0%'\n\n switch ($placement) {\n case 'top-right':\n return `top: 0; right: 0; transform: translate(50%, -50%) translate(-${offset}, ${offset});`\n case 'top-left':\n return `top: 0; left: 0; transform: translate(-50%, -50%) translate(${offset}, ${offset});`\n case 'bottom-right':\n return `bottom: 0; right: 0; transform: translate(50%, 50%) translate(-${offset}, -${offset});`\n case 'bottom-left':\n return `bottom: 0; left: 0; transform: translate(-50%, 50%) translate(${offset}, -${offset});`\n }\n}\n\nconst getVariantStyles = ($variant: BadgeVariant, $color: BadgeColor) => {\n const c = COLOR_MAP[$color]\n\n switch ($variant) {\n case 'solid':\n return `background-color: ${c.bg}; color: ${c.text};`\n case 'flat':\n return `background-color: ${c.flatBg}; color: ${$color === 'default' ? COLORS.black : c.bg};`\n case 'bordered':\n return `background-color: transparent; color: ${c.border}; border: 1.5px solid ${c.border};`\n }\n}\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-flex;\n`\n\ntype StyledBadgeProps = {\n $color: BadgeColor\n $dot: boolean\n $invisible: boolean\n $placement: BadgePlacement\n $shape: BadgeShape\n $showOutline: boolean\n $size: BadgeSize\n $variant: BadgeVariant\n}\n\nexport const StyledBadge = styled.span<StyledBadgeProps>`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n white-space: nowrap;\n font-weight: 600;\n border-radius: 999px;\n z-index: 1;\n transition:\n transform 0.15s ease,\n opacity 0.15s ease;\n\n ${({ $dot, $size }) =>\n $dot\n ? `\n width: ${SIZE_MAP[$size].dotSize}px;\n height: ${SIZE_MAP[$size].dotSize}px;\n min-width: auto;\n padding: 0;\n `\n : `\n min-width: ${SIZE_MAP[$size].minWidth}px;\n height: ${SIZE_MAP[$size].height}px;\n font-size: ${SIZE_MAP[$size].fontSize}px;\n padding: ${SIZE_MAP[$size].padding};\n `}\n\n ${({ $variant, $color }) => getVariantStyles($variant, $color)}\n\n ${({ $placement, $shape }) => getPlacement($placement, $shape)}\n\n ${({ $showOutline }) =>\n $showOutline &&\n `\n box-shadow: 0 0 0 2px ${COLORS.white};\n `}\n\n ${({ $invisible }) =>\n $invisible &&\n `\n opacity: 0;\n transform: scale(0);\n `}\n`\n","import { StyledBadge, StyledContainer } from './styled'\nimport { BadgeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('badge')\n\nexport const Badge = ({\n children,\n className,\n classnames,\n color = 'default',\n content,\n dot = false,\n invisible = false,\n placement = 'top-right',\n ref,\n shape = 'rectangle',\n showOutline = true,\n size = 'md',\n variant = 'solid',\n ...rest\n}: BadgeProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n <StyledBadge\n className={css('badge', classnames?.badge)}\n $color={color}\n $dot={dot}\n $invisible={invisible}\n $placement={placement}\n $shape={shape}\n $showOutline={showOutline}\n $size={size}\n $variant={variant}\n >\n {!dot && content}\n </StyledBadge>\n </StyledContainer>\n )\n}\n","import { BreadcrumbItemProps } from './types'\n\nexport const BreadcrumbItem = ({ children, ...rest }: BreadcrumbItemProps) => {\n return <li {...rest}>{children}</li>\n}\n","import styled from '@emotion/styled'\n\nimport { BreadcrumbsSize, BreadcrumbsVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst SIZES: Record<BreadcrumbsSize, { fontSize: number; gap: number; padding: string }> = {\n sm: { fontSize: 12, gap: 4, padding: '4px 8px' },\n md: { fontSize: 14, gap: 6, padding: '6px 12px' },\n lg: { fontSize: 16, gap: 8, padding: '8px 16px' },\n}\n\ntype StyledContainerProps = {\n $variant: BreadcrumbsVariant\n $size: BreadcrumbsSize\n}\n\nexport const StyledContainer = styled.nav<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n ${({ $variant, $size }) => {\n const { padding } = SIZES[$size]\n\n switch ($variant) {\n case 'solid':\n return `\n background-color: ${COLORS.gray};\n border-radius: 10px;\n padding: ${padding};\n `\n case 'bordered':\n return `\n border: 1px solid ${COLORS.gray};\n border-radius: 10px;\n padding: ${padding};\n `\n default:\n return ''\n }\n }}\n`\n\ntype StyledListProps = {\n $size: BreadcrumbsSize\n}\n\nexport const StyledList = styled.ol<StyledListProps>`\n display: flex;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n list-style: none;\n margin: 0;\n padding: 0;\n flex-wrap: wrap;\n`\n\ntype StyledItemProps = {\n $size: BreadcrumbsSize\n $current: boolean\n $disabled: boolean\n}\n\nexport const StyledItem = styled.li<StyledItemProps>`\n display: inline-flex;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n font-size: ${({ $size }) => SIZES[$size].fontSize}px;\n line-height: 1.5;\n color: ${({ $current }) => ($current ? COLORS.black : COLORS['iron-grey'])};\n font-weight: ${({ $current }) => ($current ? 600 : 400)};\n ${({ $disabled, $current }) => $disabled && !$current && 'opacity: 0.5; pointer-events: none;'}\n`\n\ntype StyledLinkProps = {\n $current: boolean\n $disabled: boolean\n}\n\nexport const StyledLink = styled.a<StyledLinkProps>`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n text-decoration: none;\n color: inherit;\n cursor: ${({ $current, $disabled }) => ($current || $disabled ? 'default' : 'pointer')};\n transition: color 0.15s ease;\n\n & svg {\n width: 1em;\n height: 1em;\n }\n\n ${({ $current, $disabled }) =>\n !$current &&\n !$disabled &&\n `\n &:hover {\n color: ${COLORS.black};\n }\n `}\n`\n\ntype StyledSeparatorProps = {\n $size: BreadcrumbsSize\n}\n\nexport const StyledSeparator = styled.span<StyledSeparatorProps>`\n display: inline-flex;\n align-items: center;\n color: ${COLORS['iron-grey']};\n font-size: ${({ $size }) => SIZES[$size].fontSize}px;\n user-select: none;\n\n & svg {\n width: ${({ $size }) => SIZES[$size].fontSize - 2}px;\n height: ${({ $size }) => SIZES[$size].fontSize - 2}px;\n }\n`\n\nexport const StyledEllipsis = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n border: none;\n background: transparent;\n color: ${COLORS['iron-grey']};\n font-size: inherit;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n color: ${COLORS.black};\n }\n`\n","import { Children, isValidElement, ReactElement } from 'react'\n\nimport {\n StyledContainer,\n StyledEllipsis,\n StyledItem,\n StyledLink,\n StyledList,\n StyledSeparator,\n} from './styled'\nimport { BreadcrumbItemProps, BreadcrumbsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('breadcrumbs')\n\nconst DefaultSeparator = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nexport const Breadcrumbs = ({\n children,\n className,\n classnames,\n disabled = false,\n itemsAfterCollapse = 1,\n itemsBeforeCollapse = 1,\n maxItems,\n ref,\n separator,\n size = 'md',\n variant = 'light',\n ...rest\n}: BreadcrumbsProps) => {\n const items = Children.toArray(children).filter((child) =>\n isValidElement(child),\n ) as ReactElement<BreadcrumbItemProps>[]\n\n const totalItems = items.length\n const shouldCollapse = maxItems !== undefined && totalItems > maxItems\n\n const renderSeparator = (key: string) => (\n <StyledSeparator className={css('separator', classnames?.separator)} $size={size} key={key}>\n {separator || <DefaultSeparator />}\n </StyledSeparator>\n )\n\n const renderItem = (child: ReactElement<BreadcrumbItemProps>, index: number, isLast: boolean) => {\n const { current, disabled: itemDisabled, href, startContent, endContent } = child.props\n const isCurrent = current || isLast\n const isDisabled = disabled || (itemDisabled && !isCurrent)\n\n return (\n <StyledItem key={index} $size={size} $current={isCurrent} $disabled={!!isDisabled}>\n <StyledLink\n as={href && !isCurrent ? 'a' : 'span'}\n href={href && !isCurrent ? href : undefined}\n $current={isCurrent}\n $disabled={!!isDisabled}\n >\n {startContent}\n {child.props.children}\n {endContent}\n </StyledLink>\n {!isLast && renderSeparator(`sep-${index}`)}\n </StyledItem>\n )\n }\n\n const renderItems = () => {\n if (shouldCollapse) {\n const before = items.slice(0, itemsBeforeCollapse)\n const after = items.slice(totalItems - itemsAfterCollapse)\n\n return (\n <>\n {before.map((child, i) => renderItem(child, i, false))}\n <StyledItem $size={size} $current={false} $disabled={false}>\n <StyledEllipsis\n className={css('ellipsis', classnames?.ellipsis)}\n aria-label=\"Show more\"\n >\n ...\n </StyledEllipsis>\n {renderSeparator('sep-ellipsis')}\n </StyledItem>\n {after.map((child, i) => {\n const originalIndex = totalItems - itemsAfterCollapse + i\n\n return renderItem(child, originalIndex, originalIndex === totalItems - 1)\n })}\n </>\n )\n }\n\n return items.map((child, i) => renderItem(child, i, i === totalItems - 1))\n }\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n $size={size}\n aria-label=\"Breadcrumbs\"\n >\n <StyledList className={css('list', classnames?.list)} $size={size}>\n {renderItems()}\n </StyledList>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { CardRadius, CardShadow } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nconst SHADOW_MAP: Record<CardShadow, string> = {\n none: 'none',\n sm: `0 1px 2px ${alpha(COLORS.black, 5)}`,\n md: `0 4px 14px ${alpha(COLORS.black, 10)}`,\n lg: `0 10px 30px ${alpha(COLORS.black, 15)}`,\n}\n\nconst RADIUS_MAP: Record<CardRadius, string> = {\n none: '0',\n sm: '8px',\n md: '12px',\n lg: '16px',\n}\n\ntype StyledCardProps = {\n $blurred: boolean\n $border: boolean\n $disabled: boolean\n $footerBlurred: boolean\n $fullWidth: boolean\n $hoverable: boolean\n $pressable: boolean\n $radius: CardRadius\n $shadow: CardShadow\n}\n\nexport const StyledCard = styled.div<StyledCardProps>`\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: ${({ $blurred }) => ($blurred ? alpha(COLORS.white, 70) : COLORS.white)};\n border-radius: ${({ $radius }) => RADIUS_MAP[$radius]};\n border: ${({ $border }) => ($border ? `1px solid ${alpha(COLORS['iron-grey'], 15)}` : 'none')};\n box-shadow: ${({ $shadow }) => SHADOW_MAP[$shadow]};\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n cursor: ${({ $pressable }) => ($pressable ? 'pointer' : 'default')};\n transition:\n box-shadow 0.2s ease,\n transform 0.2s ease;\n\n ${({ $blurred }) =>\n $blurred &&\n `\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n `}\n\n ${({ $hoverable, $pressable }) =>\n ($hoverable || $pressable) &&\n `\n &:hover {\n box-shadow: ${SHADOW_MAP.lg};\n }\n `}\n\n ${({ $pressable }) =>\n $pressable &&\n `\n user-select: none;\n\n &:active {\n transform: scale(0.98);\n }\n `}\n`\n\nexport const StyledCardHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 16px 0;\n z-index: 1;\n`\n\nexport const StyledCardBody = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 12px 16px;\n z-index: 1;\n`\n\ntype StyledCardFooterProps = {\n $blurred: boolean\n}\n\nexport const StyledCardFooter = styled.div<StyledCardFooterProps>`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 16px 16px;\n z-index: 1;\n\n ${({ $blurred }) =>\n $blurred &&\n `\n padding: 12px 16px;\n background-color: ${alpha(COLORS.white, 60)};\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border-top: 1px solid ${alpha(COLORS['iron-grey'], 15)};\n `}\n`\n","import { StyledCard } from './styled'\nimport { CardProps, CardShadow } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const Card = ({\n blurred = false,\n border = false,\n children,\n className,\n disabled = false,\n footerBlurred = false,\n fullWidth = false,\n hoverable = false,\n pressable = false,\n radius = 'lg',\n ref,\n shadow = 'md',\n ...rest\n}: CardProps) => {\n const resolvedShadow: CardShadow = typeof shadow === 'boolean' ? (shadow ? 'md' : 'none') : shadow\n\n return (\n <StyledCard\n {...rest}\n ref={ref}\n className={css('container', className)}\n $blurred={blurred}\n $border={border}\n $disabled={disabled}\n $footerBlurred={footerBlurred}\n $fullWidth={fullWidth}\n $hoverable={hoverable}\n $pressable={pressable}\n $radius={radius}\n $shadow={resolvedShadow}\n tabIndex={pressable && !disabled ? 0 : undefined}\n role={pressable ? 'button' : undefined}\n >\n {children}\n </StyledCard>\n )\n}\n","import { StyledCardBody } from './styled'\nimport { CardBodyProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardBody = ({ children, className, ref, ...rest }: CardBodyProps) => (\n <StyledCardBody {...rest} ref={ref} className={css('body', className)}>\n {children}\n </StyledCardBody>\n)\n","import { StyledCardFooter } from './styled'\nimport { CardFooterProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardFooter = ({\n blurred = false,\n children,\n className,\n ref,\n ...rest\n}: CardFooterProps) => (\n <StyledCardFooter {...rest} ref={ref} className={css('footer', className)} $blurred={blurred}>\n {children}\n </StyledCardFooter>\n)\n","import { StyledCardHeader } from './styled'\nimport { CardHeaderProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardHeader = ({ children, className, ref, ...rest }: CardHeaderProps) => (\n <StyledCardHeader {...rest} ref={ref} className={css('header', className)}>\n {children}\n </StyledCardHeader>\n)\n","export const DEFAULT_CONFIRM_LABEL = 'Confirm'\nexport const DEFAULT_CANCEL_LABEL = 'Cancel'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS, Z_INDEX } from '../../lib'\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`\n\nconst fadeOut = keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n`\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n`\n\ntype StyledOverlayProps = {\n $isExiting: boolean\n}\n\nexport const StyledOverlay = styled.div<StyledOverlayProps>`\n position: fixed;\n inset: 0;\n z-index: ${Z_INDEX.confirmation};\n background-color: rgba(0, 0, 0, 0.15);\n backdrop-filter: blur(2px);\n animation: ${({ $isExiting }) => ($isExiting ? fadeOut : fadeIn)} 0.2s ease-out forwards;\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n left: 50%;\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: ${Z_INDEX.confirmationBar};\n`\n\nexport const StyledMessage = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS.black};\n white-space: nowrap;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CANCEL_LABEL, DEFAULT_CONFIRM_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledMessage, StyledOverlay } from './styled'\nimport type { ConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype ConfirmationBarProps = {\n confirmation: ConfirmationState\n onDone: () => void\n}\n\nexport const ConfirmationBar = ({ confirmation, onDone }: ConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { message, onConfirm, onCancel, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const cancelLabel = options.cancelLabel || DEFAULT_CANCEL_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleCancel = useCallback(() => {\n if (isLoading) return\n exit(onCancel)\n }, [exit, isLoading, onCancel])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleCancel()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleCancel, isLoading])\n\n return (\n <>\n <StyledOverlay $isExiting={isExiting} onClick={handleCancel} />\n <StyledContainer $isExiting={isExiting}>\n <StyledMessage>{message}</StyledMessage>\n <StyledActions>\n <Button variant=\"system\" size=\"compact\" onClick={handleCancel} disabled={isLoading}>\n {cancelLabel}\n </Button>\n <Button variant=\"danger\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n </>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ConfirmationContextValue } from './types'\n\nexport const ConfirmationContext = createContext<ConfirmationContextValue | null>(null)\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { ConfirmationBar } from './ConfirmationBar'\nimport { ConfirmationContext } from './context'\nimport type { ConfirmationOptions, ConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const ConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<ConfirmationState | null>(null)\n\n const show = useCallback(\n (\n message: ReactNode,\n onConfirm: () => void,\n onCancel?: () => void,\n options?: ConfirmationOptions,\n ) => {\n setState({\n open: true,\n message,\n onConfirm,\n onCancel: onCancel || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <ConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <ConfirmationBar confirmation={state} onDone={hide} />}\n </ConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ConfirmationContext } from './context'\n\nexport const useConfirmation = () => {\n const context = useContext(ConfirmationContext)\n\n if (!context) {\n throw new Error('useConfirmation must be used within ConfirmationProvider')\n }\n\n return context\n}\n","import { BREAKPOINTS } from '../../lib'\n\nexport const CONTAINER_MAX_WIDTHS: Record<keyof typeof BREAKPOINTS, string> = {\n sm: `${BREAKPOINTS.sm}px`,\n md: `${BREAKPOINTS.md}px`,\n lg: `${BREAKPOINTS.lg}px`,\n xl: `${BREAKPOINTS.xl}px`,\n '2xl': `${BREAKPOINTS['2xl']}px`,\n}\n","import styled from '@emotion/styled'\n\nimport { CONTAINER_MAX_WIDTHS } from './constants'\nimport { mediaUp } from '../../lib'\n\nexport const StyledContainer = styled.div`\n width: 100%;\n\n ${mediaUp('sm')} {\n max-width: ${CONTAINER_MAX_WIDTHS.sm};\n }\n\n ${mediaUp('md')} {\n max-width: ${CONTAINER_MAX_WIDTHS.md};\n }\n\n ${mediaUp('lg')} {\n max-width: ${CONTAINER_MAX_WIDTHS.lg};\n }\n\n ${mediaUp('xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS.xl};\n }\n\n ${mediaUp('2xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS['2xl']};\n }\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledContainer } from './styled'\nimport { ContainerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('container')\nexport const Container = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ContainerProps>) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n </StyledContainer>\n)\n","export const formatDate = (date: Date, locale: string): string => {\n return new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'long' }).format(date)\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.span`\n display: inline-flex;\n align-items: baseline;\n gap: 5px;\n font-size: 13px;\n font-weight: 500;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledHash = styled.span`\n font-weight: 500;\n`\n\nexport const StyledSeparator = styled.span``\n","import { formatDate } from './helpers'\nimport { StyledContainer, StyledHash, StyledSeparator } from './styled'\nimport { DateRangeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('date-range')\n\nexport const DateRange = ({\n className,\n classnames,\n from,\n locale = 'en',\n presentLabel = 'Present Time',\n ref,\n to,\n ...rest\n}: DateRangeProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledHash className={css('hash', classnames?.hash)}>#</StyledHash>\n <span className={css('from', classnames?.from)}>{formatDate(from, locale)}</span>\n <StyledSeparator className={css('separator', classnames?.separator)}>&mdash;</StyledSeparator>\n <span className={css('to', classnames?.to)}>{to ? formatDate(to, locale) : presentLabel}</span>\n </StyledContainer>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $spacing: number\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n margin-top: ${(props) => props.$spacing}px;\n margin-bottom: ${(props) => props.$spacing}px;\n`\n\nexport const StyledLine = styled.div`\n flex: 1;\n height: 1px;\n background-color: ${COLORS.gray};\n`\n\nexport const StyledLabel = styled.span`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n white-space: nowrap;\n`\n","import { StyledContainer, StyledLabel, StyledLine } from './styled'\nimport { DividerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('divider')\n\nexport const Divider = ({\n children,\n className,\n classnames,\n ref,\n spacing = 8,\n ...rest\n}: DividerProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $spacing={spacing}>\n <StyledLine className={css('line', classnames?.line)} />\n {children && (\n <>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n <StyledLine className={css('line', classnames?.line)} />\n </>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DrawerPosition } from './types'\nimport { alpha, COLORS, KEYFRAMES, Z_INDEX } from '../../lib'\n\nconst slideIn = {\n left: KEYFRAMES.slideInLeft,\n right: KEYFRAMES.slideInRight,\n top: KEYFRAMES.slideInTop,\n bottom: KEYFRAMES.slideInBottom,\n}\n\ntype StyledContainerProps = {\n $animated: boolean\n $position: DrawerPosition\n $size: string\n}\n\nconst getPositionStyles = (position: DrawerPosition, size: string) => {\n switch (position) {\n case 'left':\n return `\n top: 0;\n left: 0;\n height: 100%;\n width: ${size};\n `\n case 'right':\n return `\n top: 0;\n right: 0;\n height: 100%;\n width: ${size};\n `\n case 'top':\n return `\n top: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n case 'bottom':\n return `\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n }\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n z-index: ${Z_INDEX.modal};\n background-color: ${COLORS['white']};\n box-shadow: 0 4px 24px ${alpha(COLORS['black'], 20)};\n ${(props) => getPositionStyles(props.$position, props.$size)}\n animation: ${(props) => slideIn[props.$position]} ${(props) =>\n props.$animated ? '0.05s' : '0s'} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContainer } from './styled'\nimport { DrawerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('drawer')\nexport const Drawer = ({\n animated,\n children,\n className,\n open,\n position = 'right',\n ref,\n size = '400px',\n ...rest\n}: DrawerProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animated={Boolean(animated)}\n $position={position}\n $size={size}\n >\n {children}\n </StyledContainer>,\n document.body,\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DropdownAlign, DropdownPosition } from './types'\nimport { COLORS, Z_INDEX } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-block;\n`\n\nexport const StyledTrigger = styled.div`\n cursor: pointer;\n`\n\nconst contentStyles = `\n min-width: 160px;\n padding: 8px;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n`\n\nconst getTransform = ($open: boolean, $position: DropdownPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledContent = styled.div<{\n $align: DropdownAlign\n $open: boolean\n $position: DropdownPosition\n}>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${({ $align }) => ($align === 'left' ? 'left: 0;' : 'right: 0;')}\n z-index: ${Z_INDEX.dropdown};\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalContent = styled.div<{ $open: boolean; $position: DropdownPosition }>`\n position: fixed;\n z-index: ${Z_INDEX.portalDropdown};\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n","import { cloneElement, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContainer, StyledContent, StyledPortalContent, StyledTrigger } from './styled'\nimport { DropdownPosition, DropdownProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('dropdown')\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nconst DROPDOWN_GAP = 4\nconst DROPDOWN_MIN_HEIGHT = 100\n\nexport const Dropdown = ({\n align = 'left',\n autoClose = true,\n children,\n className,\n classnames,\n onClose,\n onOpen,\n open: controlledOpen,\n portalRenderNode,\n ref,\n trigger,\n ...rest\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DropdownPosition>('bottom')\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const contentHeight = contentRef.current?.offsetHeight ?? DROPDOWN_MIN_HEIGHT\n const contentWidth = contentRef.current?.offsetWidth ?? 160\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - DROPDOWN_GAP\n const spaceAbove = triggerRect.top - DROPDOWN_GAP\n\n const newPosition: DropdownPosition =\n spaceBelow < contentHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n let left: number\n if (align === 'left') {\n left = triggerRect.left\n } else {\n left = triggerRect.right - contentWidth\n }\n\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + DROPDOWN_GAP\n : triggerRect.top - contentHeight - DROPDOWN_GAP\n\n setPortalPosition({ top, left })\n }\n }, [align, portalRenderNode])\n\n const handleToggle = useCallback(() => {\n if (isControlled) {\n if (open) {\n onClose?.()\n } else {\n onOpen?.()\n }\n } else {\n setInternalOpen((prev) => {\n const next = !prev\n if (next) {\n onOpen?.()\n } else {\n onClose?.()\n }\n return next\n })\n }\n }, [isControlled, open, onClose, onOpen])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n const handleContentClick = useCallback(() => {\n if (autoClose) {\n handleClose()\n }\n }, [autoClose, handleClose])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideContent = contentRef.current && !contentRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideContent) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const content = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n onClick={handleContentClick}\n >\n {children}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n $align={align}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n onClick={handleContentClick}\n >\n {children}\n </StyledContent>\n )\n\n return (\n <StyledContainer {...rest} ref={ref ?? containerRef} className={css('container', className)}>\n <StyledTrigger\n ref={triggerRef}\n onClick={handleToggle}\n className={css('trigger', classnames?.trigger)}\n >\n {cloneElement(trigger)}\n </StyledTrigger>\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 40px 24px;\n`\n\nexport const StyledIconArea = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 200px;\n height: 200px;\n margin-bottom: 16px;\n`\n\nexport const StyledRings = styled.div`\n position: absolute;\n inset: 0;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n border-radius: 50%;\n border: 1px solid ${COLORS.gray};\n }\n\n &::before {\n inset: 30px;\n opacity: 0.8;\n }\n\n &::after {\n inset: 8px;\n opacity: 0.5;\n }\n`\n\nexport const StyledRingsOuter = styled.div`\n position: absolute;\n inset: 0;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n border-radius: 50%;\n border: 1px solid ${COLORS.gray};\n }\n\n &::before {\n inset: -14px;\n opacity: 0.3;\n }\n\n &::after {\n inset: 52px;\n }\n`\n\nexport const StyledIconBox = styled.div`\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS['iron-grey']};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.05),\n 0 1px 3px rgba(0, 0, 0, 0.1);\n`\n\nexport const StyledTitle = styled.h3`\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n max-width: 360px;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n`\n","import {\n StyledActions,\n StyledContainer,\n StyledDescription,\n StyledIconArea,\n StyledIconBox,\n StyledRings,\n StyledRingsOuter,\n StyledTitle,\n} from './styled'\nimport { type EmptyStateProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('empty-state')\n\nexport const EmptyState = ({\n actions,\n className,\n classnames,\n description,\n icon,\n ref,\n title,\n ...rest\n}: EmptyStateProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {icon && (\n <StyledIconArea className={css('icon', classnames?.icon)}>\n <StyledRingsOuter />\n <StyledRings />\n <StyledIconBox>{icon}</StyledIconBox>\n </StyledIconArea>\n )}\n\n <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>\n\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n\n {actions && (\n <StyledActions className={css('actions', classnames?.actions)}>{actions}</StyledActions>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nexport const StyledFieldRow = styled.div<{ $gap: number | string }>`\n display: grid;\n grid-template-rows: auto 1fr auto;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n column-gap: ${(props) => (typeof props.$gap === 'number' ? `${props.$gap}px` : props.$gap)};\n\n > * {\n grid-row: 1 / -1;\n display: grid;\n grid-template-rows: subgrid;\n gap: 2px;\n }\n\n > * > [class*='field-label'] {\n grid-row: 1;\n }\n\n > * > [class*='field-message'] {\n grid-row: 3;\n }\n\n > * > :not([class*='field-label']):not([class*='field-message']) {\n grid-row: 2;\n }\n`\n","import { StyledFieldRow } from './styled'\nimport { FieldRowProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-row')\nexport const FieldRow = ({ className, gap = 16, ref, ...rest }: FieldRowProps) => {\n return <StyledFieldRow {...rest} ref={ref} $gap={gap} className={css('container', className)} />\n}\n","export const formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 B'\n\n const units = ['B', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n const size = bytes / Math.pow(1024, i)\n\n return `${size % 1 === 0 ? size : size.toFixed(1)} ${units[i]}`\n}\n\nexport const isFileTypeAccepted = (file: File, accept: string): boolean => {\n const acceptedTypes = accept.split(',').map((t) => t.trim())\n\n return acceptedTypes.some((type) => {\n if (type.startsWith('.')) {\n return file.name.toLowerCase().endsWith(type.toLowerCase())\n }\n\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.replace('/*', '/'))\n }\n\n return file.type === type\n })\n}\n","import styled from '@emotion/styled'\n\nimport { FileUploadItemStatus } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledFileUpload = styled.div`\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\n\nexport const StyledDropzone = styled.div<{ $disabled: boolean; $dragOver: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n border: 1.5px dashed ${({ $dragOver }) => ($dragOver ? COLORS.black : COLORS.gray)};\n border-radius: 12px;\n background-color: ${({ $dragOver }) => ($dragOver ? '#f9fafb' : 'transparent')};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n\n ${({ $disabled, $dragOver }) =>\n !$disabled &&\n !$dragOver &&\n `\n &:hover {\n border-color: ${COLORS['iron-grey']};\n background-color: #f9fafb;\n }\n `}\n`\n\nexport const StyledDropzoneIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n border: 1px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n\n & svg {\n width: 20px;\n height: 20px;\n }\n`\n\nexport const StyledDropzoneText = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n text-align: center;\n`\n\nexport const StyledDropzoneAction = styled.span`\n color: ${COLORS.black};\n font-weight: 600;\n cursor: pointer;\n`\n\nexport const StyledDropzoneHint = styled.div`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n text-align: center;\n`\n\nexport const StyledInput = styled.input`\n display: none;\n`\n\nexport const StyledList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\n// File item styles\n\nconst STATUS_BORDER: Record<FileUploadItemStatus, string> = {\n uploading: COLORS.gray,\n complete: COLORS.gray,\n failed: COLORS.red,\n}\n\nexport const StyledItem = styled.div<{ $status: FileUploadItemStatus }>`\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 14px;\n border: 1px solid ${({ $status }) => STATUS_BORDER[$status]};\n border-radius: 12px;\n transition: border-color 0.15s ease;\n`\n\nexport const StyledItemIcon = styled.div<{ $status: FileUploadItemStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n background-color: ${({ $status }) => ($status === 'failed' ? '#fef2f2' : '#f9fafb')};\n color: ${({ $status }) => ($status === 'failed' ? COLORS.red : COLORS['iron-grey'])};\n\n & svg {\n width: 20px;\n height: 20px;\n }\n`\n\nexport const StyledItemContent = styled.div`\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledItemHeader = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledItemInfo = styled.div`\n min-width: 0;\n`\n\nexport const StyledItemName = styled.div`\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledItemSize = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledItemProgress = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 2px;\n`\n\nexport const StyledProgressTrack = styled.div`\n flex: 1;\n height: 8px;\n border-radius: 4px;\n background-color: ${COLORS.gray};\n overflow: hidden;\n`\n\nexport const StyledProgressBar = styled.div<{ $value: number; $status: FileUploadItemStatus }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: 4px;\n background-color: ${({ $status }) => ($status === 'failed' ? COLORS.red : COLORS.black)};\n transition: width 0.2s ease;\n`\n\nexport const StyledProgressText = styled.span`\n flex-shrink: 0;\n font-size: 14px;\n color: ${COLORS.black};\n font-weight: 500;\n min-width: 36px;\n text-align: right;\n`\n\nexport const StyledItemAction = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n background: transparent;\n color: ${COLORS['iron-grey']};\n cursor: pointer;\n border-radius: 4px;\n transition: color 0.15s ease;\n\n & svg {\n width: 16px;\n height: 16px;\n }\n\n &:hover {\n color: ${COLORS.black};\n }\n`\n\nexport const StyledRetryLink = styled.button`\n display: inline;\n padding: 0;\n border: none;\n background: transparent;\n color: ${COLORS.red};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n`\n\nexport const StyledStatusRow = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledCheckIcon = styled.span`\n display: inline-flex;\n color: ${COLORS.green};\n\n & svg {\n width: 16px;\n height: 16px;\n }\n`\n","import { useCallback, useRef, useState } from 'react'\n\nimport { isFileTypeAccepted } from './helpers'\nimport {\n StyledDropzone,\n StyledDropzoneAction,\n StyledDropzoneHint,\n StyledDropzoneIcon,\n StyledDropzoneText,\n StyledFileUpload,\n StyledInput,\n} from './styled'\nimport { FileUploadProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('file-upload')\n\nconst UploadIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n </svg>\n)\n\nexport const FileUpload = ({\n accept,\n children,\n className,\n classnames,\n description,\n disabled = false,\n hint,\n icon,\n maxSize,\n multiple = false,\n onChange,\n onReject,\n ref,\n ...rest\n}: FileUploadProps) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const [dragOver, setDragOver] = useState(false)\n\n const processFiles = useCallback(\n (fileList: FileList | null) => {\n if (!fileList || fileList.length === 0) return\n\n const files = Array.from(fileList)\n\n if (accept) {\n const rejected = files.filter((f) => !isFileTypeAccepted(f, accept))\n if (rejected.length > 0) {\n onReject?.(rejected, 'type')\n const accepted = files.filter((f) => isFileTypeAccepted(f, accept))\n if (accepted.length === 0) return\n onChange?.(accepted)\n return\n }\n }\n\n if (maxSize) {\n const rejected = files.filter((f) => f.size > maxSize)\n if (rejected.length > 0) {\n onReject?.(rejected, 'size')\n const accepted = files.filter((f) => f.size <= maxSize)\n if (accepted.length === 0) return\n onChange?.(accepted)\n return\n }\n }\n\n onChange?.(files)\n },\n [accept, maxSize, onChange, onReject],\n )\n\n const handleClick = () => {\n if (disabled) return\n inputRef.current?.click()\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n processFiles(e.target.files)\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) setDragOver(true)\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n if (!disabled) processFiles(e.dataTransfer.files)\n }\n\n return (\n <StyledFileUpload ref={ref} className={className} {...rest}>\n <StyledDropzone\n className={css('dropzone', classnames?.dropzone)}\n $disabled={disabled}\n $dragOver={dragOver}\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n >\n <StyledDropzoneIcon className={css('icon', classnames?.icon)}>\n {icon || <UploadIcon />}\n </StyledDropzoneIcon>\n\n <StyledDropzoneText className={css('text', classnames?.text)}>\n {description || (\n <span>\n <StyledDropzoneAction>Click to upload</StyledDropzoneAction> or drag and drop\n </span>\n )}\n </StyledDropzoneText>\n\n {hint && (\n <StyledDropzoneHint className={css('hint', classnames?.hint)}>{hint}</StyledDropzoneHint>\n )}\n </StyledDropzone>\n\n <StyledInput\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n tabIndex={-1}\n />\n\n {children}\n </StyledFileUpload>\n )\n}\n","import { formatFileSize } from './helpers'\nimport {\n StyledCheckIcon,\n StyledItem,\n StyledItemAction,\n StyledItemContent,\n StyledItemHeader,\n StyledItemIcon,\n StyledItemInfo,\n StyledItemName,\n StyledItemProgress,\n StyledItemSize,\n StyledProgressBar,\n StyledProgressText,\n StyledProgressTrack,\n StyledRetryLink,\n StyledStatusRow,\n} from './styled'\nimport { FileUploadItemProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('file-upload-item')\n\nconst DefaultFileIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n)\n\nconst CloseIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n)\n\nconst CheckIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nexport const FileUploadItem = ({\n name,\n size,\n status = 'uploading',\n progress = 0,\n icon,\n onRemove,\n onRetry,\n className,\n classnames,\n ref,\n}: FileUploadItemProps) => {\n return (\n <StyledItem ref={ref} className={css('item', className)} $status={status}>\n <StyledItemIcon className={css('icon', classnames?.icon)} $status={status}>\n {icon || <DefaultFileIcon />}\n </StyledItemIcon>\n\n <StyledItemContent>\n <StyledItemHeader>\n <StyledItemInfo className={css('info', classnames?.info)}>\n <StyledItemName className={css('name', classnames?.name)}>{name}</StyledItemName>\n <StyledItemSize className={css('size', classnames?.size)}>\n {formatFileSize(size)}\n </StyledItemSize>\n </StyledItemInfo>\n\n {onRemove && (\n <StyledItemAction\n className={css('action', classnames?.action)}\n onClick={onRemove}\n aria-label=\"Remove file\"\n type=\"button\"\n >\n <CloseIcon />\n </StyledItemAction>\n )}\n </StyledItemHeader>\n\n {status === 'uploading' && (\n <StyledItemProgress className={css('progress', classnames?.progress)}>\n <StyledProgressTrack>\n <StyledProgressBar $value={progress} $status={status} />\n </StyledProgressTrack>\n <StyledProgressText>{progress}%</StyledProgressText>\n </StyledItemProgress>\n )}\n\n {status === 'complete' && (\n <StyledStatusRow>\n <StyledCheckIcon>\n <CheckIcon />\n </StyledCheckIcon>\n Complete\n </StyledStatusRow>\n )}\n\n {status === 'failed' && (\n <StyledStatusRow>\n Upload failed.{' '}\n {onRetry && (\n <StyledRetryLink onClick={onRetry} type=\"button\">\n Try again\n </StyledRetryLink>\n )}\n </StyledStatusRow>\n )}\n </StyledItemContent>\n </StyledItem>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst base = `\n display: inline-flex;\n font-size: 14px;\n gap: 3px;\n color: ${COLORS['iron-grey']};\n transition: color 0.15s ease;\n text-decoration: none;\n`\n\nconst clickable = `\n cursor: pointer;\n &:hover {\n color: ${COLORS['steel-blue']};\n }\n`\n\nexport const StyledContainer = styled.span<{ $clickable: boolean }>`\n ${base}\n cursor: ${({ $clickable }) => ($clickable ? 'pointer' : 'default')};\n ${({ $clickable }) => $clickable && clickable}\n`\n\nexport const StyledLink = styled.a`\n ${base}\n ${clickable}\n`\n\nexport const StyledHash = styled.span``\n\nexport const StyledLabel = styled.span``\n","import { StyledContainer, StyledHash, StyledLabel, StyledLink } from './styled'\nimport { HashtagProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('hashtag')\n\nexport const Hashtag = ({\n children,\n className,\n classnames,\n href,\n onClick,\n ref,\n ...rest\n}: HashtagProps) => {\n const content = (\n <>\n <StyledHash className={css('hash', classnames?.hash)}>#</StyledHash>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n </>\n )\n\n if (href) {\n return (\n <StyledLink\n ref={ref as never}\n href={href}\n className={css('container', className)}\n onClick={onClick}\n >\n {content}\n </StyledLink>\n )\n }\n\n const clickable = Boolean(onClick)\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $clickable={clickable}\n onClick={onClick}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n >\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { HeadingLevel } from './types'\nimport { COLORS } from '../../lib'\n\nconst SIZE_MAP: Record<HeadingLevel, { fontSize: number; lineHeight: number }> = {\n 1: { fontSize: 32, lineHeight: 1.2 },\n 2: { fontSize: 24, lineHeight: 1.25 },\n 3: { fontSize: 18, lineHeight: 1.3 },\n 4: { fontSize: 16, lineHeight: 1.4 },\n 5: { fontSize: 14, lineHeight: 1.4 },\n 6: { fontSize: 12, lineHeight: 1.5 },\n}\n\ntype StyledHeadingProps = {\n $level: HeadingLevel\n}\n\nexport const StyledHeading = styled.h1<StyledHeadingProps>`\n margin: 0;\n font-weight: 700;\n color: ${COLORS.black};\n font-size: ${({ $level }) => SIZE_MAP[$level].fontSize}px;\n line-height: ${({ $level }) => SIZE_MAP[$level].lineHeight};\n`\n","import { StyledHeading } from './styled'\nimport { HeadingProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('heading')\n\nexport const Heading = ({ as, children, className, level = 3, ref, ...rest }: HeadingProps) => (\n <StyledHeading\n {...rest}\n as={`h${as ?? level}` as 'h1'}\n ref={ref}\n className={css('container', className)}\n $level={level}\n >\n {children}\n </StyledHeading>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst SIZES = {\n default: { box: 40, line: 22, weight: 2.5, gap: 6 },\n compact: { box: 32, line: 18, weight: 2, gap: 5 },\n} as const\n\nexport const StyledButton = styled.button<{ $size: 'default' | 'compact'; $disabled: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => SIZES[$size].box}px;\n height: ${({ $size }) => SIZES[$size].box}px;\n padding: 0;\n border: none;\n border-radius: 8px;\n background: transparent;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n outline: none;\n transition: background-color 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${COLORS.gray};\n }\n\n &:focus-visible {\n box-shadow: 0 0 0 2px ${COLORS['steel-blue']};\n }\n`\n\nexport const StyledLines = styled.div<{ $size: 'default' | 'compact'; $open: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n`\n\nexport const StyledLine = styled.span<{\n $size: 'default' | 'compact'\n $position: 'top' | 'middle' | 'bottom'\n $open: boolean\n}>`\n display: block;\n width: ${({ $size }) => SIZES[$size].line}px;\n height: ${({ $size }) => SIZES[$size].weight}px;\n background-color: ${COLORS.black};\n border-radius: 2px;\n transition:\n transform 0.3s ease,\n opacity 0.2s ease;\n transform-origin: center;\n\n ${({ $position, $size, $open }) => {\n const { gap, weight } = SIZES[$size]\n const offset = gap + weight\n\n if ($position === 'top') {\n return $open ? `transform: translateY(${offset}px) rotate(45deg);` : ''\n }\n\n if ($position === 'middle') {\n return $open ? 'opacity: 0;' : ''\n }\n\n if ($position === 'bottom') {\n return $open ? `transform: translateY(-${offset}px) rotate(-45deg);` : ''\n }\n }}\n`\n","import { useCallback, useState } from 'react'\n\nimport { StyledButton, StyledLine, StyledLines } from './styled'\nimport { type MenuButtonProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('menu-button')\n\nexport const MenuButton = ({\n className,\n classnames,\n defaultOpen = false,\n disabled = false,\n onOpenChange,\n open: controlledOpen,\n ref,\n size = 'default',\n ...rest\n}: MenuButtonProps) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleClick = useCallback(() => {\n if (disabled) return\n\n const next = !isOpen\n\n if (!isControlled) {\n setInternalOpen(next)\n }\n\n onOpenChange?.(next)\n }, [disabled, isOpen, isControlled, onOpenChange])\n\n return (\n <StyledButton\n {...rest}\n ref={ref}\n type=\"button\"\n disabled={disabled}\n aria-label={isOpen ? 'Close menu' : 'Open menu'}\n aria-expanded={isOpen}\n className={css('container', className)}\n $size={size}\n $disabled={disabled}\n onClick={handleClick}\n >\n <StyledLines $size={size} $open={isOpen}>\n <StyledLine\n $size={size}\n $position=\"top\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n <StyledLine\n $size={size}\n $position=\"middle\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n <StyledLine\n $size={size}\n $position=\"bottom\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n </StyledLines>\n </StyledButton>\n )\n}\n","import { NotificationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const DEFAULT_NOTIFICATION_DURATION = 5000\n\ntype NotificationVariantColors = {\n background: string\n text: string\n}\n\nexport const NOTIFICATION_VARIANT_COLORS: Record<NotificationVariant, NotificationVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n info: {\n background: COLORS['steel-blue'],\n text: COLORS.white,\n },\n}\n","import { createContext } from 'react'\n\nimport type { NotificationContextValue } from './types'\n\nexport const NotificationContext = createContext<NotificationContextValue | null>(null)\n","import { NOTIFICATION_VARIANT_COLORS } from './constants'\nimport { NotificationVariant } from './types'\n\nexport const getNotificationVariantColors = (variant: NotificationVariant) => {\n return NOTIFICATION_VARIANT_COLORS[variant] ?? NOTIFICATION_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getNotificationVariantColors } from './helpers'\nimport type { NotificationVariant } from './types'\nimport { KEYFRAMES } from '../../lib'\n\nexport const StyledNotificationContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 9999;\n pointer-events: none;\n`\n\ntype StyledNotificationBarProps = {\n $variant: NotificationVariant\n $isExiting: boolean\n}\n\nexport const StyledNotificationBar = styled.div<StyledNotificationBarProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n min-height: 44px;\n padding: 12px 48px;\n background-color: ${({ $variant }) => getNotificationVariantColors($variant).background};\n color: ${({ $variant }) => getNotificationVariantColors($variant).text};\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutTopFade : KEYFRAMES.slideInTopFade}\n 0.3s ease-out forwards;\n pointer-events: auto;\n`\n\nexport const StyledNotificationMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n`\n\nexport const StyledNotificationCloseButton = styled.button`\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledNotificationWrapper = styled.div`\n position: relative;\n`\n","import { useEffect, useState } from 'react'\n\nimport {\n StyledNotificationBar,\n StyledNotificationCloseButton,\n StyledNotificationMessage,\n StyledNotificationWrapper,\n} from './styled'\nimport type { Notification } from './types'\nimport { X } from '../../icons/Lucide'\n\ntype NotificationBarProps = {\n notification: Notification\n onRemove: () => void\n onAnimationEnd: () => void\n}\n\nexport const NotificationBar = ({\n notification,\n onRemove,\n onAnimationEnd,\n}: NotificationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n }\n\n const handleAnimationEnd = () => {\n if (isExiting) {\n onRemove()\n onAnimationEnd()\n }\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n handleRemove()\n }, notification.duration)\n\n return () => clearTimeout(timer)\n }, [notification.duration, notification.id])\n\n return (\n <StyledNotificationWrapper>\n <StyledNotificationBar\n $variant={notification.variant}\n $isExiting={isExiting}\n onAnimationEnd={handleAnimationEnd}\n >\n <StyledNotificationMessage>{notification.message}</StyledNotificationMessage>\n <StyledNotificationCloseButton onClick={handleRemove}>\n <X style={{ width: 18, height: 18 }} />\n </StyledNotificationCloseButton>\n </StyledNotificationBar>\n </StyledNotificationWrapper>\n )\n}\n","import type { NotificationAction, NotificationState } from './types'\n\nexport const notificationReducer = (\n state: NotificationState,\n action: NotificationAction,\n): NotificationState => {\n switch (action.type) {\n case 'ADD_NOTIFICATION': {\n const newNotification = action.payload\n\n // If no current notification, show immediately\n if (!state.current) {\n return {\n ...state,\n current: newNotification,\n }\n }\n\n // Otherwise add to queue\n return {\n ...state,\n queue: [...state.queue, newNotification],\n }\n }\n\n case 'REMOVE_CURRENT': {\n return {\n ...state,\n current: null,\n }\n }\n\n case 'SHOW_NEXT': {\n const nextNotification = state.queue[0]\n\n if (!nextNotification) {\n return state\n }\n\n return {\n current: nextNotification,\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialNotificationState: NotificationState = {\n current: null,\n queue: [],\n}\n","import { useCallback, useReducer, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { DEFAULT_NOTIFICATION_DURATION } from './constants'\nimport { NotificationContext } from './context'\nimport { NotificationBar } from './NotificationBar'\nimport { initialNotificationState, notificationReducer } from './reducer'\nimport { StyledNotificationContainer } from './styled'\nimport type { NotificationVariant } from './types'\n\nexport const NotificationProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(notificationReducer, initialNotificationState)\n\n const show = useCallback(\n (\n message: ReactNode,\n variant: NotificationVariant = 'default',\n duration: number = DEFAULT_NOTIFICATION_DURATION,\n ) => {\n const id = `notification-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_NOTIFICATION',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleRemove = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleShowNext = useCallback(() => {\n // Small delay before showing next notification\n setTimeout(() => {\n dispatch({ type: 'SHOW_NEXT' })\n }, 100)\n }, [])\n\n return (\n <NotificationContext.Provider value={{ show, hide }}>\n {children}\n <StyledNotificationContainer>\n {state.current && (\n <NotificationBar\n key={state.current.id}\n notification={state.current}\n onRemove={handleRemove}\n onAnimationEnd={handleShowNext}\n />\n )}\n </StyledNotificationContainer>\n </NotificationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotificationContext } from './context'\n\nexport const useNotification = () => {\n const context = useContext(NotificationContext)\n\n if (!context) {\n throw new Error('useNotification must be used within NotificationProvider')\n }\n\n return context\n}\n","import { createContext } from 'react'\n\nimport type { NotifyConfirmationContextValue } from './types'\n\nexport const NotifyConfirmationContext = createContext<NotifyConfirmationContextValue | null>(null)\n","export const DEFAULT_CONFIRM_LABEL = 'Agree'\nexport const DEFAULT_DISCARD_LABEL = 'Discard'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(100%);\n }\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n right: 24px;\n display: flex;\n flex-direction: column;\n max-width: 400px;\n padding: 16px 16px 0 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n overflow: hidden;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: 1000;\n`\n\nexport const StyledLabel = styled.p`\n margin: 0;\n font-weight: 600;\n font-size: 14px;\n color: ${COLORS.black};\n text-align: left;\n`\n\nexport const StyledDescription = styled.p`\n margin: 4px 0 0;\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n text-align: left;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n margin: 12px -16px 0;\n padding: 12px 16px;\n border-top: 1px solid ${COLORS.gray};\n background-color: rgba(0, 0, 0, 0.01);\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CONFIRM_LABEL, DEFAULT_DISCARD_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledDescription, StyledLabel } from './styled'\nimport type { NotifyConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype NotifyConfirmationBarProps = {\n confirmation: NotifyConfirmationState\n onDone: () => void\n}\n\nexport const NotifyConfirmationBar = ({ confirmation, onDone }: NotifyConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { label, description, onConfirm, onDiscard, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const discardLabel = options.discardLabel || DEFAULT_DISCARD_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleDiscard = useCallback(() => {\n if (isLoading) return\n exit(onDiscard)\n }, [exit, isLoading, onDiscard])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleDiscard()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleDiscard, isLoading])\n\n return (\n <StyledContainer $isExiting={isExiting}>\n <StyledLabel>{label}</StyledLabel>\n <StyledDescription>{description}</StyledDescription>\n <StyledActions>\n <Button variant=\"transparent\" size=\"compact\" onClick={handleDiscard} disabled={isLoading}>\n {discardLabel}\n </Button>\n <Button variant=\"system\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n )\n}\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { NotifyConfirmationContext } from './context'\nimport { NotifyConfirmationBar } from './NotifyConfirmationBar'\nimport type { NotifyConfirmationOptions, NotifyConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const NotifyConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<NotifyConfirmationState | null>(null)\n\n const show = useCallback(\n (\n label: ReactNode,\n description: ReactNode,\n onConfirm: () => void | Promise<void>,\n onDiscard?: () => void,\n options?: NotifyConfirmationOptions,\n ) => {\n setState({\n open: true,\n label,\n description,\n onConfirm,\n onDiscard: onDiscard || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <NotifyConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <NotifyConfirmationBar confirmation={state} onDone={hide} />}\n </NotifyConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotifyConfirmationContext } from './context'\n\nexport const useNotifyConfirmation = () => {\n const context = useContext(NotifyConfirmationContext)\n\n if (!context) {\n throw new Error('useNotifyConfirmation must be used within NotifyConfirmationProvider')\n }\n\n return context\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`\n\nexport const StyledLabel = styled.span`\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledDescription = styled.span`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n","import { StyledContainer, StyledDescription, StyledLabel } from './styled'\nimport { OverlineProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('overline')\n\nexport const Overline = ({\n children,\n className,\n classnames,\n description,\n ref,\n ...rest\n}: OverlineProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledContainer>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n min-height: 100dvh;\n padding: 40px 24px;\n overflow: hidden;\n`\n\nexport const StyledGrid = styled.div<{ $size: number }>`\n position: absolute;\n inset: 0;\n background-image:\n linear-gradient(${COLORS.gray} 1px, transparent 1px),\n linear-gradient(90deg, ${COLORS.gray} 1px, transparent 1px);\n background-size: ${({ $size }) => `${$size}px ${$size}px`};\n mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 100%);\n -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 100%);\n pointer-events: none;\n`\n\nexport const StyledInner = styled.div`\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n max-width: 400px;\n`\n\nexport const StyledLogo = styled.div`\n margin-bottom: 32px;\n`\n\nexport const StyledIconBox = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS['iron-grey']};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.05),\n 0 1px 3px rgba(0, 0, 0, 0.1);\n margin-bottom: 24px;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 8px;\n margin-bottom: 32px;\n`\n\nexport const StyledTitle = styled.h1`\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.3;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n max-width: 360px;\n`\n\nexport const StyledContent = styled.div`\n width: 100%;\n`\n\nexport const StyledFooter = styled.div`\n margin-top: 32px;\n text-align: center;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledFooter,\n StyledGrid,\n StyledHeader,\n StyledIconBox,\n StyledInner,\n StyledLogo,\n StyledTitle,\n} from './styled'\nimport { type ShellScreenProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('shell-screen')\n\nexport const ShellScreen = ({\n children,\n className,\n classnames,\n description,\n footer,\n gridSize = 64,\n icon,\n logo,\n ref,\n title,\n ...rest\n}: ShellScreenProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledGrid $size={gridSize} className={css('grid', classnames?.grid)} />\n\n <StyledInner>\n {logo && <StyledLogo>{logo}</StyledLogo>}\n\n {icon && <StyledIconBox className={css('icon')}>{icon}</StyledIconBox>}\n\n {(title || description) && (\n <StyledHeader className={css('header', classnames?.header)}>\n {title && (\n <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>\n )}\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n\n {children && (\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n )}\n\n {footer && (\n <StyledFooter className={css('footer', classnames?.footer)}>{footer}</StyledFooter>\n )}\n </StyledInner>\n </StyledContainer>\n )\n}\n","export type PaginationRange = (number | 'dots')[]\n\nexport const getPaginationRange = (\n total: number,\n current: number,\n siblings: number,\n boundaries: number,\n): PaginationRange => {\n const totalNumbers = siblings * 2 + 3 + boundaries * 2\n\n if (totalNumbers >= total) {\n return Array.from({ length: total }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(current - siblings, boundaries + 1)\n const rightSiblingIndex = Math.min(current + siblings, total - boundaries)\n\n const showLeftDots = leftSiblingIndex > boundaries + 2\n const showRightDots = rightSiblingIndex < total - boundaries - 1\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n const leftRange = Array.from({ length: leftCount }, (_, i) => i + 1)\n const rightRange = Array.from({ length: boundaries }, (_, i) => total - boundaries + i + 1)\n\n return [...leftRange, 'dots' as const, ...rightRange]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n const leftRange = Array.from({ length: boundaries }, (_, i) => i + 1)\n const rightRange = Array.from({ length: rightCount }, (_, i) => total - rightCount + i + 1)\n\n return [...leftRange, 'dots' as const, ...rightRange]\n }\n\n const leftRange = Array.from({ length: boundaries }, (_, i) => i + 1)\n const middleRange = Array.from(\n { length: rightSiblingIndex - leftSiblingIndex + 1 },\n (_, i) => leftSiblingIndex + i,\n )\n const rightRange = Array.from({ length: boundaries }, (_, i) => total - boundaries + i + 1)\n\n return [...leftRange, 'dots' as const, ...middleRange, 'dots' as const, ...rightRange]\n}\n","import styled from '@emotion/styled'\n\nimport { PaginationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.nav`\n display: inline-flex;\n align-items: center;\n gap: 2px;\n position: relative;\n`\n\ntype StyledItemProps = {\n $active: boolean\n $variant: PaginationVariant\n $disabled: boolean\n}\n\nconst getItemStyles = (variant: PaginationVariant, active: boolean) => {\n if (!active) {\n switch (variant) {\n case 'bordered':\n return `\n background-color: transparent;\n border: 1px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n case 'light':\n return `\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n default:\n return `\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n }\n }\n\n return `\n color: ${COLORS.white};\n position: relative;\n z-index: 1;\n `\n}\n\nexport const StyledItem = styled.button<StyledItemProps>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n user-select: none;\n transition:\n background-color 0.15s ease,\n color 0.15s ease;\n ${({ $variant, $active }) => getItemStyles($variant, $active)}\n ${({ $disabled }) =>\n $disabled &&\n `\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n `}\n`\n\nexport const StyledCursor = styled.span`\n position: absolute;\n width: 36px;\n height: 36px;\n border-radius: 10px;\n background-color: ${COLORS.black};\n z-index: 0;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: none;\n`\n\nexport const StyledEllipsis = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n user-select: none;\n`\n\ntype StyledControlProps = {\n $disabled: boolean\n}\n\nexport const StyledControl = styled.button<StyledControlProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: 10px;\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n font-size: 16px;\n cursor: pointer;\n user-select: none;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n }\n\n ${({ $disabled }) =>\n $disabled &&\n `\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n `}\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { getPaginationRange } from './helpers'\nimport { StyledContainer, StyledControl, StyledCursor, StyledEllipsis, StyledItem } from './styled'\nimport { PaginationProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('pagination')\n\nexport const Pagination = ({\n boundaries = 1,\n className,\n classnames,\n disabled = false,\n initialPage = 1,\n loop = false,\n onChange,\n page: controlledPage,\n ref,\n showControls = false,\n siblings = 1,\n total,\n variant = 'flat',\n ...rest\n}: PaginationProps) => {\n const isControlled = controlledPage !== undefined\n const [internalPage, setInternalPage] = useState(initialPage)\n const currentPage = isControlled ? controlledPage : internalPage\n\n const itemsRef = useRef<Map<number, HTMLButtonElement>>(new Map())\n const containerRef = useRef<HTMLElement>(null)\n const cursorRef = useRef<HTMLSpanElement>(null)\n\n const range = getPaginationRange(total, currentPage, siblings, boundaries)\n\n const setPage = useCallback(\n (newPage: number) => {\n if (!isControlled) {\n setInternalPage(newPage)\n }\n\n onChange?.(newPage)\n },\n [isControlled, onChange],\n )\n\n const handlePageClick = useCallback(\n (page: number) => {\n if (page < 1 || page > total || page === currentPage) return\n setPage(page)\n },\n [currentPage, setPage, total],\n )\n\n const handlePrev = useCallback(() => {\n if (currentPage <= 1) {\n if (loop) setPage(total)\n return\n }\n\n setPage(currentPage - 1)\n }, [currentPage, loop, setPage, total])\n\n const handleNext = useCallback(() => {\n if (currentPage >= total) {\n if (loop) setPage(1)\n return\n }\n\n setPage(currentPage + 1)\n }, [currentPage, loop, setPage, total])\n\n useEffect(() => {\n const cursor = cursorRef.current\n const container = containerRef.current\n const itemEl = itemsRef.current.get(currentPage)\n\n if (!cursor || !container || !itemEl) return\n\n const containerRect = container.getBoundingClientRect()\n const itemRect = itemEl.getBoundingClientRect()\n const x = itemRect.left - containerRect.left\n\n cursor.style.transform = `translateX(${x}px)`\n }, [currentPage, range])\n\n return (\n <StyledContainer {...rest} ref={ref || containerRef} className={css('container', className)}>\n <StyledCursor ref={cursorRef} className={css('cursor', classnames?.cursor)} />\n {showControls && (\n <StyledControl\n className={css('controls', classnames?.controls)}\n $disabled={disabled || (!loop && currentPage <= 1)}\n onClick={handlePrev}\n aria-label=\"Previous page\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </StyledControl>\n )}\n {range.map((item, index) =>\n item === 'dots' ? (\n <StyledEllipsis key={`dots-${index}`} className={css('ellipsis', classnames?.ellipsis)}>\n ...\n </StyledEllipsis>\n ) : (\n <StyledItem\n key={item}\n ref={(el) => {\n if (el) {\n itemsRef.current.set(item, el)\n } else {\n itemsRef.current.delete(item)\n }\n }}\n className={css('item', classnames?.item)}\n $active={item === currentPage}\n $variant={variant}\n $disabled={disabled}\n onClick={() => handlePageClick(item)}\n aria-label={`Page ${item}`}\n aria-current={item === currentPage ? 'page' : undefined}\n >\n {item}\n </StyledItem>\n ),\n )}\n {showControls && (\n <StyledControl\n className={css('controls', classnames?.controls)}\n $disabled={disabled || (!loop && currentPage >= total)}\n onClick={handleNext}\n aria-label=\"Next page\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </StyledControl>\n )}\n </StyledContainer>\n )\n}\n","import { PanelVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype PanelVariantColors = {\n background: string\n border: string\n title: string\n description: string\n}\n\nexport const PANEL_VARIANT_COLORS: Record<PanelVariant, PanelVariantColors> = {\n light: {\n background: COLORS.white,\n border: alpha(COLORS.black, 30),\n title: COLORS.black,\n description: COLORS['iron-grey'],\n },\n dark: {\n background: alpha(COLORS.white, 5),\n border: alpha(COLORS.white, 30),\n title: COLORS.white,\n description: '#9ca3af',\n },\n}\n","import { PANEL_VARIANT_COLORS } from './constants'\nimport { PanelVariant } from './types'\n\nexport const getPanelVariantColors = (variant: PanelVariant) => {\n return PANEL_VARIANT_COLORS[variant] ?? PANEL_VARIANT_COLORS['light']\n}\n","import styled from '@emotion/styled'\n\nimport { getPanelVariantColors } from './helpers'\nimport { PanelVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $variant: PanelVariant\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px;\n border: 1px dashed ${({ $variant }) => getPanelVariantColors($variant).border};\n border-radius: 16px;\n background-color: ${({ $variant }) => getPanelVariantColors($variant).background};\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n`\n\nexport const StyledLabel = styled.div`\n position: absolute;\n top: -1px;\n right: 12px;\n padding: 4px 12px;\n border-radius: 0 0 8px 8px;\n background-color: ${COLORS.black};\n color: ${COLORS.white};\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n line-height: 1.4;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\ntype StyledTitleProps = {\n $variant: PanelVariant\n}\n\nexport const StyledTitle = styled.div<StyledTitleProps>`\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n color: ${({ $variant }) => getPanelVariantColors($variant).title};\n`\n\ntype StyledDescriptionProps = {\n $variant: PanelVariant\n}\n\nexport const StyledDescription = styled.div<StyledDescriptionProps>`\n font-size: 14px;\n line-height: 1.5;\n color: ${({ $variant }) => getPanelVariantColors($variant).description};\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledHeader,\n StyledLabel,\n StyledTitle,\n} from './styled'\nimport { PanelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('panel')\n\nexport const Panel = ({\n children,\n className,\n classnames,\n description,\n label,\n ref,\n title,\n variant = 'light',\n ...rest\n}: PanelProps) => {\n const hasHeader = title || description\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {label && <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>}\n {hasHeader && (\n <StyledHeader>\n {title && (\n <StyledTitle className={css('title', classnames?.title)} $variant={variant}>\n {title}\n </StyledTitle>\n )}\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n </StyledContainer>\n )\n}\n","export const DEFAULT_PHRASES = [\n // Космос и запуск\n 'Готовим стартовый стол к запуску',\n 'Прогреваем фотонные двигатели',\n 'Запрашиваем разрешение у ЦУПа',\n 'Проверяем герметичность шлюзов',\n 'Выводим реактор на рабочую мощность',\n 'Ожидаем окно для маневра',\n 'Проверяем целостность теплозащиты',\n 'Разворачиваем солнечные паруса',\n 'Активируем систему навигации',\n 'Инициализируем бортовой компьютер',\n 'Рассчитываем вектор ускорения',\n 'Продуваем топливные магистрали',\n 'Тестируем аварийную систему спасения',\n 'Стабилизируем гироскопы на платформе',\n 'Загружаем полетное задание в память',\n\n // Навигация и телеметрия\n 'Синхронизируем орбитальные часы',\n 'Рассчитываем траекторию кометы',\n 'Настраиваем антенну дальней связи',\n 'Считываем телеметрию со спутника',\n 'Корректируем азимут наведения',\n 'Фиксируем координаты черной дыры',\n 'Загружаем карту звездного неба',\n 'Калибруем инерциальную платформу',\n 'Принимаем эфемериды от станции',\n 'Уточняем параметры орбиты',\n 'Привязываемся к опорным звездам',\n 'Строим модель гравитационного поля',\n\n // Исследования и анализ\n 'Анализируем метрики далеких звезд',\n 'Ждем прохождения первого нейтрино',\n 'Декодируем сигналы из туманности',\n 'Замеряем гравитационные волны',\n 'Отправляем зонд в пояс астероидов',\n 'Перехватываем межзвездные частицы',\n 'Обрабатываем данные телескопа',\n 'Анализируем спектр далекой звезды',\n 'Собираем пробы лунного грунта',\n 'Сканируем поверхность экзопланеты',\n 'Измеряем реликтовое излучение',\n 'Картографируем магнитные аномалии',\n 'Исследуем состав колец Сатурна',\n 'Регистрируем вспышку сверхновой',\n 'Фиксируем рентгеновский пульсар',\n 'Моделируем столкновение галактик',\n 'Наблюдаем транзит далекой планеты',\n\n // Технологии и вычисления\n 'Калибруем квантовый компилятор',\n 'Переводим данные в гиперпространство',\n 'Синтезируем топливо из вакуума',\n 'Компилируем нейронную матрицу',\n 'Оптимизируем квантовые вентили',\n 'Разматываем кубиты суперпозиции',\n 'Интерполируем пространство решений',\n 'Нормализуем тензорное поле',\n 'Индексируем базу знаний вселенной',\n 'Дефрагментируем пространство-время',\n 'Хешируем координаты червоточины',\n 'Верифицируем квантовую запутанность',\n\n // Связь и коммуникации\n 'Устанавливаем связь с Вояджером',\n 'Расшифровываем послание с Проксимы',\n 'Ретранслируем сигнал через Юпитер',\n 'Пингуем ближайший ретранслятор',\n 'Буферизуем поток тахионных данных',\n 'Шифруем канал субпространственной связи',\n 'Декомпрессируем архив звездных карт',\n\n // Бортовые системы\n 'Проверяем давление в отсеках',\n 'Балансируем нагрузку на генераторы',\n 'Охлаждаем сверхпроводящие магниты',\n 'Калибруем датчики внешней среды',\n 'Перезагружаем модуль жизнеобеспечения',\n 'Тестируем маневровые двигатели',\n 'Обновляем прошивку скафандров',\n 'Юстируем зеркала главного телескопа',\n 'Переключаем контур охлаждения',\n 'Диагностируем плазменный щит',\n 'Затягиваем болты на обшивке',\n]\n\nexport const DEFAULT_INTERVAL = 3500\n","import { DEFAULT_INTERVAL, DEFAULT_PHRASES } from './constants'\n\nexport const getPhrases = (phrases?: string[]) => {\n return phrases && phrases.length > 0 ? phrases : DEFAULT_PHRASES\n}\n\nexport const getInterval = (interval?: number) => {\n return interval && interval > 0 ? interval : DEFAULT_INTERVAL\n}\n\nexport const getBoardWidth = (phrases: string[]) => {\n return Math.max(...phrases.map((p) => p.length))\n}\n\nexport const padPhrase = (phrase: string, width: number) => {\n const padding = Math.floor((width - phrase.length) / 2)\n return phrase.padStart(phrase.length + padding).padEnd(width)\n}\n\nexport const createShuffledQueue = (length: number, excludeIndex?: number): number[] => {\n const indices = Array.from({ length }, (_, i) => i)\n\n for (let i = indices.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[indices[i], indices[j]] = [indices[j]!, indices[i]!]\n }\n\n if (excludeIndex !== undefined && indices[0] === excludeIndex) {\n const swapWith = 1 + Math.floor(Math.random() * (indices.length - 1))\n ;[indices[0], indices[swapWith]] = [indices[swapWith]!, indices[0]!]\n }\n\n return indices\n}\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst orbit1 = keyframes`\n from { transform: rotate(0deg) translateX(20px) rotate(0deg); }\n to { transform: rotate(360deg) translateX(20px) rotate(-360deg); }\n`\n\nconst orbit2 = keyframes`\n from { transform: rotate(120deg) translateX(14px) rotate(-120deg); }\n to { transform: rotate(480deg) translateX(14px) rotate(-480deg); }\n`\n\nconst orbit3 = keyframes`\n from { transform: rotate(240deg) translateX(26px) rotate(-240deg); }\n to { transform: rotate(600deg) translateX(26px) rotate(-600deg); }\n`\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n gap: 28px;\n`\n\nexport const StyledIndicator = styled.div`\n position: relative;\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nexport const StyledOrbitDot = styled.div<{ $index: number }>`\n position: absolute;\n width: ${(props) => (props.$index === 0 ? 6 : props.$index === 1 ? 4 : 3)}px;\n height: ${(props) => (props.$index === 0 ? 6 : props.$index === 1 ? 4 : 3)}px;\n border-radius: 50%;\n background: ${COLORS['black']};\n opacity: ${(props) => (props.$index === 0 ? 1 : props.$index === 1 ? 0.6 : 0.35)};\n animation: ${(props) => (props.$index === 0 ? orbit1 : props.$index === 1 ? orbit2 : orbit3)}\n ${(props) => (props.$index === 0 ? 3 : props.$index === 1 ? 2 : 4.5)}s linear infinite;\n`\n\nexport const StyledScreenReaderOnly = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n text-align: center;\n max-width: 360px;\n`\n","export const CYCLE_TICK_MS = 40\n\nexport const SETTLE_BASE_MS = 200\n\nexport const SETTLE_STAGGER_MS = 30\n\nexport const SHUFFLE_ALPHABET =\n 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯабвгдежзиклмнопрстуфхцчшщэюя' +\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +\n '0123456789'\n","import { CYCLE_TICK_MS, SETTLE_BASE_MS, SETTLE_STAGGER_MS, SHUFFLE_ALPHABET } from './constants'\n\nexport const randomChar = () => {\n return SHUFFLE_ALPHABET[Math.floor(Math.random() * SHUFFLE_ALPHABET.length)]!\n}\n\nexport const getSettleTime = (index: number) => {\n return SETTLE_BASE_MS + index * SETTLE_STAGGER_MS\n}\n\nexport const getCycleTick = () => CYCLE_TICK_MS\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n justify-content: center;\n white-space: pre;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'JetBrains Mono', monospace;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.6;\n color: ${COLORS['black']};\n min-height: 1.6em;\n`\n\nexport const StyledChar = styled.span`\n display: inline-block;\n width: 0.65em;\n text-align: center;\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { getCycleTick, getSettleTime, randomChar } from './helpers'\nimport { StyledChar, StyledContainer } from './styled'\nimport type { SplitFlapTextProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('split-flap-text')\n\nexport const SplitFlapText = ({ className, ref, text, ...rest }: SplitFlapTextProps) => {\n const [displayChars, setDisplayChars] = useState<string[]>(() => text.split(''))\n const prevTextRef = useRef(text)\n\n const settledRef = useRef<boolean[]>([])\n const cycleTimerRef = useRef<ReturnType<typeof setInterval>>(null)\n const settleTimersRef = useRef<ReturnType<typeof setTimeout>[]>([])\n const targetCharsRef = useRef<string[]>(text.split(''))\n\n const clearTimers = useCallback(() => {\n if (cycleTimerRef.current) {\n clearInterval(cycleTimerRef.current)\n cycleTimerRef.current = null\n }\n for (const t of settleTimersRef.current) {\n clearTimeout(t)\n }\n settleTimersRef.current = []\n }, [])\n\n const startFlip = useCallback(\n (targetText: string[]) => {\n clearTimers()\n\n targetCharsRef.current = targetText\n settledRef.current = targetText.map((ch) => ch === ' ')\n\n cycleTimerRef.current = setInterval(() => {\n setDisplayChars((prev) =>\n prev.map((_, i) => {\n if (settledRef.current[i]) return targetCharsRef.current[i]!\n return randomChar()\n }),\n )\n }, getCycleTick())\n\n settleTimersRef.current = targetText.map((_, i) => {\n return setTimeout(() => {\n settledRef.current[i] = true\n\n if (settledRef.current.every(Boolean)) {\n if (cycleTimerRef.current) {\n clearInterval(cycleTimerRef.current)\n cycleTimerRef.current = null\n }\n setDisplayChars([...targetCharsRef.current])\n }\n }, getSettleTime(i))\n })\n },\n [clearTimers],\n )\n\n useEffect(() => {\n if (text !== prevTextRef.current) {\n prevTextRef.current = text\n startFlip(text.split(''))\n }\n }, [text, startFlip])\n\n useEffect(() => {\n return clearTimers\n }, [clearTimers])\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} aria-hidden=\"true\">\n {displayChars.map((char, i) => (\n <StyledChar key={i}>{char === ' ' ? '\\u00A0' : char}</StyledChar>\n ))}\n </StyledContainer>\n )\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { createShuffledQueue, getBoardWidth, getInterval, getPhrases, padPhrase } from './helpers'\nimport {\n StyledContainer,\n StyledDescription,\n StyledIndicator,\n StyledOrbitDot,\n StyledScreenReaderOnly,\n} from './styled'\nimport type { PendingScreenProps } from './types'\nimport { SplitFlapText } from '../SplitFlapText'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('pending-screen')\n\nexport const PendingScreen = ({\n className,\n classnames,\n description,\n interval,\n phrases: phrasesProp,\n ref,\n ...rest\n}: PendingScreenProps) => {\n const resolvedPhrases = useMemo(() => getPhrases(phrasesProp), [phrasesProp])\n const resolvedInterval = useMemo(() => getInterval(interval), [interval])\n const boardWidth = useMemo(() => getBoardWidth(resolvedPhrases), [resolvedPhrases])\n\n const queueRef = useRef<number[]>([])\n const queuePosRef = useRef(0)\n\n const getNextIndex = useCallback(\n (currentIndex: number) => {\n if (queuePosRef.current >= queueRef.current.length) {\n queueRef.current = createShuffledQueue(resolvedPhrases.length, currentIndex)\n queuePosRef.current = 0\n }\n return queueRef.current[queuePosRef.current++]!\n },\n [resolvedPhrases.length],\n )\n\n const [currentIndex, setCurrentIndex] = useState(() => {\n queueRef.current = createShuffledQueue(resolvedPhrases.length)\n const first = queueRef.current[0]!\n queuePosRef.current = 1\n return first\n })\n\n const phraseTimerRef = useRef<ReturnType<typeof setInterval>>(null)\n\n const advance = useCallback(() => {\n setCurrentIndex((prev) => getNextIndex(prev))\n }, [getNextIndex])\n\n useEffect(() => {\n phraseTimerRef.current = setInterval(advance, resolvedInterval)\n return () => {\n if (phraseTimerRef.current) clearInterval(phraseTimerRef.current)\n }\n }, [advance, resolvedInterval])\n\n const currentPhrase = resolvedPhrases[currentIndex]!\n const paddedText = padPhrase(currentPhrase, boardWidth)\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"status\">\n <StyledIndicator className={css('indicator', classnames?.indicator)}>\n <StyledOrbitDot $index={0} />\n <StyledOrbitDot $index={1} />\n <StyledOrbitDot $index={2} />\n </StyledIndicator>\n\n <SplitFlapText text={paddedText} className={css('board', classnames?.board)} />\n\n <StyledScreenReaderOnly>{currentPhrase}</StyledScreenReaderOnly>\n\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledContainer>\n )\n}\n","import { VacanoComponentSize } from '../../lib'\n\nexport const PROGRESS_SIZE_PROPS: Record<VacanoComponentSize, { height: number; radius: number }> =\n {\n compact: {\n height: 4,\n radius: 2,\n },\n default: {\n height: 8,\n radius: 4,\n },\n }\n","import styled from '@emotion/styled'\n\nimport { PROGRESS_SIZE_PROPS } from './constants'\nimport { COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledTrack = styled.div<{ $size: VacanoComponentSize }>`\n width: 100%;\n height: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].height}px;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS['gray']};\n overflow: hidden;\n`\n\nexport const StyledBar = styled.div<{ $size: VacanoComponentSize; $value: number }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS.black};\n transition: width 0.2s ease;\n`\n","import { StyledBar, StyledTrack } from './styled'\nimport { ProgressProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('progress')\n\nexport const Progress = ({\n value,\n size = 'default',\n className,\n classnames,\n ref,\n ...rest\n}: ProgressProps) => {\n return (\n <StyledTrack\n {...rest}\n ref={ref}\n $size={size}\n className={css('track', className, classnames?.track)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <StyledBar $size={size} $value={value} className={css('bar', classnames?.bar)} />\n </StyledTrack>\n )\n}\n","import { createContext } from 'react'\n\nimport type { SaveProgressContextValue } from './types'\n\nexport const SaveProgressContext = createContext<SaveProgressContextValue | null>(null)\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: fixed;\n bottom: 24px;\n right: 24px;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background-color: ${alpha(COLORS['iron-grey'], 10)};\n backdrop-filter: blur(8px);\n border-radius: 24px;\n animation: ${KEYFRAMES.fadeIn} 0.2s ease-out;\n pointer-events: none;\n color: ${COLORS['black']};\n`\n\nexport const StyledMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n`\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { SaveProgressContext } from './context'\nimport { StyledContainer, StyledMessage } from './styled'\nimport type { SaveProgressProviderProps } from './types'\nimport { Spinner } from '../Spinner'\n\nexport const SaveProgressProvider = ({\n children,\n defaultMessage = 'Saving',\n}: SaveProgressProviderProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const [message, setMessage] = useState(defaultMessage)\n\n const show = useCallback(\n (customMessage?: string) => {\n setMessage(customMessage ?? defaultMessage)\n setIsVisible(true)\n },\n [defaultMessage],\n )\n\n const hide = useCallback(() => {\n setIsVisible(false)\n }, [])\n\n const value = useMemo(() => ({ isVisible, show, hide }), [isVisible, show, hide])\n\n return (\n <SaveProgressContext.Provider value={value}>\n {children}\n {isVisible && (\n <StyledContainer>\n <Spinner size=\"sm\" />\n <StyledMessage>{message}</StyledMessage>\n </StyledContainer>\n )}\n </SaveProgressContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { SaveProgressContext } from './context'\n\nexport const useSaveProgress = () => {\n const context = useContext(SaveProgressContext)\n\n if (!context) {\n throw new Error('useSaveProgress must be used within SaveProgressProvider')\n }\n\n return context\n}\n","import { css, keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { SkeletonAnimation, SkeletonRadius } from './types'\n\nconst pulse = keyframes`\n 0% { opacity: 1; }\n 50% { opacity: 0.4; }\n 100% { opacity: 1; }\n`\n\nconst wave = keyframes`\n 0% { transform: translateX(-100%); }\n 60% { transform: translateX(100%); }\n 100% { transform: translateX(100%); }\n`\n\nconst pulseStyle = css`\n animation: ${pulse} 1.5s ease-in-out infinite;\n`\n\nconst waveStyle = css`\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.5), transparent);\n animation: ${wave} 1.6s linear infinite;\n }\n`\n\nconst ANIMATION_STYLES: Record<SkeletonAnimation, ReturnType<typeof css> | null> = {\n pulse: pulseStyle,\n wave: waveStyle,\n none: null,\n}\n\nconst RADIUS_MAP: Record<SkeletonRadius, string> = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n full: '9999px',\n}\n\ntype StyledSkeletonProps = {\n $width: number | string\n $height: number | string\n $radius: SkeletonRadius\n $animation: SkeletonAnimation\n $circle: boolean\n}\n\nconst resolveSize = (value: number | string) => (typeof value === 'number' ? `${value}px` : value)\n\nexport const StyledSkeleton = styled.div<StyledSkeletonProps>`\n position: relative;\n overflow: hidden;\n background-color: #e5e7eb;\n width: ${({ $width, $circle, $height }) =>\n $circle ? resolveSize($height) : resolveSize($width)};\n height: ${({ $height }) => resolveSize($height)};\n border-radius: ${({ $circle, $radius }) => ($circle ? '50%' : RADIUS_MAP[$radius])};\n ${({ $animation }) => ANIMATION_STYLES[$animation]}\n`\n","import { StyledSkeleton } from './styled'\nimport { SkeletonProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('skeleton')\n\nexport const Skeleton = ({\n animation = 'pulse',\n circle = false,\n className,\n height = 16,\n radius = 'md',\n ref,\n width = '100%',\n ...rest\n}: SkeletonProps) => (\n <StyledSkeleton\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animation={animation}\n $circle={circle}\n $height={height}\n $radius={radius}\n $width={width}\n />\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.span`\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n font-size: 13px;\n color: #666;\n`\n\nexport const StyledValue = styled.strong`\n font-weight: 700;\n color: ${COLORS.black};\n`\n\nexport const StyledLabel = styled.span``\n","import { StyledContainer, StyledLabel, StyledValue } from './styled'\nimport { StatProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stat')\n\nexport const Stat = ({ className, classnames, label, ref, value, ...rest }: StatProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledValue className={css('value', classnames?.value)}>{value}</StyledValue>\n <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>\n </StyledContainer>\n)\n","import { css, keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { type StepLogStatus } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n overflow: hidden;\n`\n\nexport const StyledStep = styled.div`\n &:not(:last-child) {\n border-bottom: 1px solid ${COLORS.gray};\n }\n`\n\ntype StyledHeaderProps = {\n $expanded: boolean\n $interactive: boolean\n}\n\nexport const StyledHeader = styled.button<StyledHeaderProps>`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 10px 16px;\n background-color: ${({ $expanded }) => ($expanded ? alpha(COLORS.black, 3) : 'transparent')};\n border: none;\n cursor: ${({ $interactive }) => ($interactive ? 'pointer' : 'default')};\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n text-align: left;\n outline: none;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${({ $interactive }) =>\n $interactive ? alpha(COLORS.black, 3) : 'transparent'};\n }\n`\n\nexport const StyledChevron = styled.span<{ $expanded: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${COLORS['iron-grey']};\n transition: transform 0.15s ease;\n transform: rotate(${({ $expanded }) => ($expanded ? '90deg' : '0deg')});\n`\n\nexport const StyledChevronPlaceholder = styled.span`\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n`\n\nconst STATUS_COLORS: Record<StepLogStatus, string> = {\n success: COLORS.green,\n error: COLORS.red,\n running: COLORS['steel-blue'],\n pending: COLORS.gray,\n}\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`\n\nconst runningStyle = css`\n animation: ${spin} 1s linear infinite;\n`\n\nexport const StyledStatusIcon = styled.span<{ $status: StepLogStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${({ $status }) => STATUS_COLORS[$status]};\n ${({ $status }) => $status === 'running' && runningStyle}\n`\n\nexport const StyledTitle = styled.span<{ $muted: boolean }>`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ${({ $muted }) => ($muted ? COLORS['iron-grey'] : COLORS.black)};\n`\n\nexport const StyledDuration = styled.span`\n flex-shrink: 0;\n font-size: 12px;\n font-weight: 400;\n color: ${COLORS['iron-grey']};\n font-variant-numeric: tabular-nums;\n`\n\nexport const StyledLogWrapper = styled.div<{ $expanded: boolean }>`\n display: grid;\n grid-template-rows: ${({ $expanded }) => ($expanded ? '1fr' : '0fr')};\n transition: grid-template-rows 0.15s ease;\n`\n\nexport const StyledLogInner = styled.div`\n overflow: hidden;\n`\n\nexport const StyledLog = styled.div`\n padding: 8px 0;\n background-color: ${COLORS.white};\n border-top: 1px solid ${COLORS.gray};\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 12px;\n line-height: 20px;\n`\n\nexport const StyledLogLine = styled.div`\n display: flex;\n padding: 0 16px;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 3)};\n }\n`\n\nexport const StyledLineNumber = styled.span`\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n padding-right: 16px;\n color: ${COLORS['iron-grey']};\n user-select: none;\n`\n\nexport const StyledLineText = styled.span`\n flex: 1;\n min-width: 0;\n white-space: pre;\n color: ${COLORS.black};\n`\n","import { useCallback, useState } from 'react'\n\nimport {\n StyledChevron,\n StyledChevronPlaceholder,\n StyledContainer,\n StyledDuration,\n StyledHeader,\n StyledLineNumber,\n StyledLineText,\n StyledLog,\n StyledLogInner,\n StyledLogLine,\n StyledLogWrapper,\n StyledStatusIcon,\n StyledStep,\n StyledTitle,\n} from './styled'\nimport { type StepLogProps, type StepLogStatus } from './types'\nimport { ChevronRight } from '../../icons/Lucide/components/ChevronRight'\nimport { Circle } from '../../icons/Lucide/components/Circle'\nimport { CircleCheck } from '../../icons/Lucide/components/CircleCheck'\nimport { CircleX } from '../../icons/Lucide/components/CircleX'\nimport { LoaderCircle } from '../../icons/Lucide/components/LoaderCircle'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('step-log')\n\nconst STATUS_ICONS: Record<StepLogStatus, typeof CircleCheck> = {\n success: CircleCheck,\n error: CircleX,\n running: LoaderCircle,\n pending: Circle,\n}\n\nexport const StepLog = ({\n className,\n classnames,\n defaultValue = [],\n onChange,\n ref,\n steps,\n value: controlledValue,\n ...rest\n}: StepLogProps) => {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue)\n\n const isControlled = controlledValue !== undefined\n const expanded = isControlled ? controlledValue : internalValue\n\n const toggle = useCallback(\n (stepValue: string) => {\n const isExpanded = expanded.includes(stepValue)\n const next = isExpanded ? expanded.filter((v) => v !== stepValue) : [...expanded, stepValue]\n\n if (!isControlled) {\n setInternalValue(next)\n }\n\n onChange?.(next)\n },\n [expanded, isControlled, onChange],\n )\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {steps.map((step) => {\n const isExpanded = expanded.includes(step.value)\n const status = step.status ?? 'pending'\n const isInteractive = status !== 'pending'\n const hasLines = step.lines && step.lines.length > 0\n const StatusIcon = STATUS_ICONS[status]\n\n return (\n <StyledStep key={step.value} className={css('step', classnames?.step)}>\n <StyledHeader\n type=\"button\"\n $expanded={isExpanded}\n $interactive={isInteractive}\n onClick={isInteractive ? () => toggle(step.value) : undefined}\n className={css('header', classnames?.header)}\n >\n {isInteractive ? (\n <StyledChevron $expanded={isExpanded}>\n <ChevronRight size={14} />\n </StyledChevron>\n ) : (\n <StyledChevronPlaceholder />\n )}\n\n <StyledStatusIcon $status={status}>\n <StatusIcon size={16} />\n </StyledStatusIcon>\n\n <StyledTitle $muted={status === 'pending'}>{step.title}</StyledTitle>\n\n {step.duration && <StyledDuration>{step.duration}</StyledDuration>}\n </StyledHeader>\n\n {isInteractive && hasLines && (\n <StyledLogWrapper $expanded={isExpanded}>\n <StyledLogInner>\n <StyledLog className={css('log', classnames?.log)}>\n {step.lines!.map((logLine) => (\n <StyledLogLine key={logLine.line}>\n <StyledLineNumber>{logLine.line}</StyledLineNumber>\n <StyledLineText>{logLine.text}</StyledLineText>\n </StyledLogLine>\n ))}\n </StyledLog>\n </StyledLogInner>\n </StyledLogWrapper>\n )}\n </StyledStep>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { StepperOrientation } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n`\n\nexport const StyledStepWrapper = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n ${(props) => props.$orientation === 'horizontal' && 'flex: 1; min-width: 0;'}\n\n &:last-child {\n flex: 0;\n }\n`\n\nexport const StyledStep = styled.button<{\n $active: boolean\n $completed: boolean\n $clickable: boolean\n}>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: ${(props) => (props.$clickable ? 'pointer' : 'default')};\n flex-shrink: 0;\n`\n\nexport const StyledCircle = styled.div<{ $active: boolean; $completed: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 600;\n flex-shrink: 0;\n transition:\n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n\n ${(props) =>\n props.$active || props.$completed\n ? `\n background-color: ${COLORS.black};\n border: 2px solid ${COLORS.black};\n color: ${COLORS.white};\n `\n : `\n background-color: transparent;\n border: 2px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n `}\n`\n\nexport const StyledLabel = styled.span<{ $active: boolean; $completed: boolean }>`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n color: ${(props) => (props.$active || props.$completed ? COLORS.black : COLORS['iron-grey'])};\n transition: color 0.2s ease;\n`\n\nexport const StyledLine = styled.div<{ $completed: boolean; $orientation: StepperOrientation }>`\n background-color: ${(props) => (props.$completed ? COLORS.black : COLORS.gray)};\n transition: background-color 0.2s ease;\n\n ${(props) =>\n props.$orientation === 'vertical'\n ? `\n width: 2px;\n height: 24px;\n margin: 8px 0 8px 15px;\n `\n : `\n flex: 1;\n height: 2px;\n min-width: 16px;\n margin: 0 12px;\n `}\n`\n","import { useMemo } from 'react'\n\nimport {\n StyledCircle,\n StyledContainer,\n StyledLabel,\n StyledLine,\n StyledStep,\n StyledStepWrapper,\n} from './styled'\nimport { StepperProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stepper')\n\nexport const Stepper = ({\n className,\n classnames,\n onChange,\n orientation = 'horizontal',\n ref,\n steps,\n value,\n ...rest\n}: StepperProps) => {\n const currentIndex = useMemo(() => {\n return steps.findIndex((step) => step.value === value)\n }, [steps, value])\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $orientation={orientation}\n className={css('container', className)}\n >\n {steps.map((step, index) => {\n const isActive = step.value === value\n const isCompleted = index < currentIndex\n const isLast = index === steps.length - 1\n\n return (\n <StyledStepWrapper key={step.value} $orientation={orientation}>\n <StyledStep\n type=\"button\"\n $active={isActive}\n $completed={isCompleted}\n $clickable={Boolean(onChange)}\n onClick={() => onChange?.(step.value)}\n className={css('step', classnames?.step)}\n >\n <StyledCircle\n $active={isActive}\n $completed={isCompleted}\n className={css('circle', classnames?.circle)}\n >\n {index + 1}\n </StyledCircle>\n <StyledLabel\n $active={isActive}\n $completed={isCompleted}\n className={css('label', classnames?.label)}\n >\n {step.label}\n </StyledLabel>\n </StyledStep>\n {!isLast && (\n <StyledLine\n $completed={isCompleted}\n $orientation={orientation}\n className={css('line', classnames?.line)}\n />\n )}\n </StyledStepWrapper>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`\n\nexport const StyledTab = styled.button<{ $active: boolean; $disabled: boolean }>`\n padding: 6px 16px;\n border: none;\n border-radius: 12px;\n background-color: ${(props) => (props.$active ? COLORS.gray : 'transparent')};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition:\n background-color 0.15s ease,\n opacity 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$active ? COLORS.gray : 'rgba(0, 0, 0, 0.05)')};\n }\n`\n","import { StyledContainer, StyledTab } from './styled'\nimport { TabsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tabs')\n\nexport const Tabs = ({ className, classnames, onChange, ref, tabs, value, ...rest }: TabsProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"tablist\">\n {tabs.map((tab) => (\n <StyledTab\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={value === tab.value}\n $active={value === tab.value}\n $disabled={Boolean(tab.disabled)}\n disabled={tab.disabled}\n onClick={() => onChange(tab.value)}\n className={css('tab', classnames?.tab)}\n >\n {tab.label}\n </StyledTab>\n ))}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nexport const StyledItem = styled.div`\n display: grid;\n grid-template-columns: 20px 1fr;\n gap: 0 12px;\n`\n\nexport const StyledTrack = styled.div<{ $last: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n grid-row: 1 / -1;\n`\n\nexport const StyledDot = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: ${COLORS.black};\n flex-shrink: 0;\n margin-top: 5px;\n`\n\nexport const StyledLine = styled.div<{ $last: boolean }>`\n width: 2px;\n flex: 1;\n background-color: ${COLORS.gray};\n visibility: ${(props) => (props.$last ? 'hidden' : 'visible')};\n`\n\nexport const StyledContent = styled.div<{ $last: boolean }>`\n padding-bottom: ${(props) => (props.$last ? '0' : '24px')};\n min-width: 0;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledTitle = styled.div`\n font-size: 15px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 20px;\n min-width: 0;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n`\n\nexport const StyledDescription = styled.div`\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n margin-top: 2px;\n line-height: 1.4;\n`\n\nexport const StyledBody = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n margin-top: 8px;\n line-height: 1.5;\n`\n","import {\n StyledActions,\n StyledBody,\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledDot,\n StyledHeader,\n StyledItem,\n StyledLine,\n StyledTitle,\n StyledTrack,\n} from './styled'\nimport { TimelineProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('timeline')\n\nexport const Timeline = ({ className, classnames, items, ref, ...rest }: TimelineProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {items.map((item, index) => {\n const last = index === items.length - 1\n\n return (\n <StyledItem key={index} className={css('item', classnames?.item)}>\n <StyledTrack $last={last}>\n <StyledDot className={css('dot', classnames?.dot)} />\n <StyledLine className={css('line', classnames?.line)} $last={last} />\n </StyledTrack>\n <StyledContent className={css('content', classnames?.content)} $last={last}>\n <StyledHeader>\n <div>\n <StyledTitle className={css('title', classnames?.title)}>\n {item.title}\n </StyledTitle>\n {item.description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {item.description}\n </StyledDescription>\n )}\n </div>\n {item.actions && (\n <StyledActions className={css('actions', classnames?.actions)}>\n {item.actions}\n </StyledActions>\n )}\n </StyledHeader>\n {item.content && (\n <StyledBody className={css('body', classnames?.body)}>{item.content}</StyledBody>\n )}\n </StyledContent>\n </StyledItem>\n )\n })}\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ToastContextValue } from './types'\n\nexport const ToastContext = createContext<ToastContextValue | null>(null)\n","import { ToastVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const MAX_VISIBLE_TOASTS = 3\n\ntype ToastVariantColors = {\n background: string\n text: string\n border: string\n}\n\nexport const TOAST_VARIANT_COLORS: Record<ToastVariant, ToastVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n border: '#374151',\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n border: COLORS.green,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n border: COLORS.yellow,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n border: COLORS.red,\n },\n}\n","import { MAX_VISIBLE_TOASTS } from './constants'\nimport type { ToastAction, ToastState } from './types'\n\nexport const toastReducer = (state: ToastState, action: ToastAction): ToastState => {\n switch (action.type) {\n case 'ADD_TOAST': {\n const newToast = action.payload\n\n if (state.toasts.length < MAX_VISIBLE_TOASTS) {\n return {\n ...state,\n toasts: [...state.toasts, newToast],\n }\n }\n\n return {\n ...state,\n queue: [...state.queue, newToast],\n }\n }\n\n case 'REMOVE_TOAST': {\n const toastId = action.payload\n const updatedToasts = state.toasts.filter((toast) => toast.id !== toastId)\n const nextToast = state.queue[0]\n\n if (nextToast && updatedToasts.length < MAX_VISIBLE_TOASTS) {\n return {\n toasts: [...updatedToasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n return {\n ...state,\n toasts: updatedToasts,\n }\n }\n\n case 'SHOW_NEXT_FROM_QUEUE': {\n const nextToast = state.queue[0]\n\n if (!nextToast || state.toasts.length >= MAX_VISIBLE_TOASTS) {\n return state\n }\n\n return {\n toasts: [...state.toasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialToastState: ToastState = {\n toasts: [],\n queue: [],\n}\n","import { TOAST_VARIANT_COLORS } from './constants'\nimport { ToastVariant } from './types'\n\nexport const getToastVariantColors = (variant: ToastVariant) => {\n return TOAST_VARIANT_COLORS[variant] ?? TOAST_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getToastVariantColors } from './helpers'\nimport type { ToastVariant } from './types'\nimport { COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledToastrContainer = styled.div`\n position: fixed;\n bottom: 24px;\n left: 24px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n width: auto;\n max-width: 90vw;\n`\n\ntype StyledToastProps = {\n $variant: ToastVariant\n $isExiting: boolean\n}\n\nexport const StyledToast = styled.div<StyledToastProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 32px;\n padding: 8px 8px 8px 16px;\n background-color: ${({ $variant }) => getToastVariantColors($variant).background};\n color: ${({ $variant }) => getToastVariantColors($variant).text};\n border: 1px solid ${({ $variant }) => getToastVariantColors($variant).border};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutBottomFade : KEYFRAMES.slideInBottomFade}\n 0.3s ease-out;\n pointer-events: auto;\n max-width: 500px;\n`\n\nexport const StyledToastMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledToastCloseButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n flex-shrink: 0;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledToastrBottomRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n`\n\nexport const StyledQueueCounter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 32px;\n padding: 8px 16px;\n background-color: #374151;\n color: ${COLORS.white};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n pointer-events: auto;\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n margin-left: auto;\n`\n","import { useEffect, useState } from 'react'\n\nimport { StyledToast, StyledToastCloseButton, StyledToastMessage } from './styled'\nimport type { ToastItemProps } from './types'\nimport { X } from '../../icons/Lucide'\n\nexport const ToastItem = ({ toast, onHide }: ToastItemProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n setTimeout(() => {\n onHide(toast.id)\n }, 300)\n }\n\n useEffect(() => {\n if (toast.duration) {\n const timer = setTimeout(() => {\n handleRemove()\n }, toast.duration)\n\n return () => clearTimeout(timer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toast.duration, toast.id])\n\n return (\n <StyledToast $variant={toast.variant} $isExiting={isExiting}>\n <StyledToastMessage>{toast.message}</StyledToastMessage>\n <StyledToastCloseButton onClick={handleRemove}>\n <X style={{ width: 16, height: 16 }} />\n </StyledToastCloseButton>\n </StyledToast>\n )\n}\n","import { StyledQueueCounter, StyledToastrBottomRow, StyledToastrContainer } from './styled'\nimport { ToastItem } from './ToastItem'\nimport type { ToastContainerProps } from './types'\n\nexport const ToastContainer = ({ toasts, queueCount, onHide }: ToastContainerProps) => {\n if (toasts.length === 0) {\n return null\n }\n\n const lastIndex = toasts.length - 1\n\n return (\n <StyledToastrContainer>\n {toasts.map((toast, index) => {\n if (index === lastIndex && queueCount > 0) {\n return (\n <StyledToastrBottomRow key={toast.id}>\n <ToastItem toast={toast} onHide={onHide} />\n <StyledQueueCounter>+{queueCount}</StyledQueueCounter>\n </StyledToastrBottomRow>\n )\n }\n\n return <ToastItem key={toast.id} toast={toast} onHide={onHide} />\n })}\n </StyledToastrContainer>\n )\n}\n","import { useCallback, useReducer, type PropsWithChildren } from 'react'\n\nimport { ToastContext } from './context'\nimport { initialToastState, toastReducer } from './reducer'\nimport { ToastContainer } from './ToastContainer'\nimport type { ToastVariant } from './types'\n\nexport const ToastProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(toastReducer, initialToastState)\n\n const show = useCallback(\n (message: string, variant: ToastVariant = 'default', duration?: number) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_TOAST',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback((id: string) => {\n dispatch({\n type: 'REMOVE_TOAST',\n payload: id,\n })\n }, [])\n\n return (\n <ToastContext.Provider value={{ show, hide }}>\n {children}\n <ToastContainer toasts={state.toasts} queueCount={state.queue.length} onHide={hide} />\n </ToastContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ToastContext } from './context'\n\nexport const useToastr = () => {\n const context = useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastr must be used within ToastProvider')\n }\n\n return context\n}\n","import { TooltipVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype TooltipVariantColors = {\n background: string\n text: string\n border?: string\n}\n\nexport const TOOLTIP_VARIANT_COLORS: Record<TooltipVariant, TooltipVariantColors> = {\n dark: {\n background: COLORS.black,\n text: COLORS.white,\n },\n light: {\n background: COLORS.white,\n text: COLORS.black,\n border: COLORS.gray,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n}\n","import { TOOLTIP_VARIANT_COLORS } from './constants'\nimport { TooltipVariant } from './types'\n\nexport const getTooltipVariantColors = (variant: TooltipVariant) => {\n return TOOLTIP_VARIANT_COLORS[variant] ?? TOOLTIP_VARIANT_COLORS['dark']\n}\n","import styled from '@emotion/styled'\n\nimport { getTooltipVariantColors } from './helpers'\nimport { TooltipPlacement, TooltipVariant } from './types'\nimport { Z_INDEX } from '../../lib'\n\ntype StyledContentProps = {\n $placement: TooltipPlacement\n $variant: TooltipVariant\n $visible: boolean\n}\n\nconst getArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n const arrowColor = getTooltipVariantColors($variant).background\n switch ($placement) {\n case 'top':\n return `\n bottom: -12px;\n left: 50%;\n margin-left: -6px;\n border-top-color: ${arrowColor};\n `\n case 'bottom':\n return `\n top: -12px;\n left: 50%;\n margin-left: -6px;\n border-bottom-color: ${arrowColor};\n `\n case 'left':\n return `\n right: -12px;\n top: 50%;\n margin-top: -6px;\n border-left-color: ${arrowColor};\n `\n case 'right':\n return `\n left: -12px;\n top: 50%;\n margin-top: -6px;\n border-right-color: ${arrowColor};\n `\n default:\n return ''\n }\n}\n\nconst getLightArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n if ($variant !== 'light') return ''\n const borderColor = getTooltipVariantColors($variant).border\n switch ($placement) {\n case 'top':\n return `\n &::after {\n bottom: -14px;\n left: 50%;\n margin-left: -7px;\n border-top-color: ${borderColor};\n }\n `\n case 'bottom':\n return `\n &::after {\n top: -14px;\n left: 50%;\n margin-left: -7px;\n border-bottom-color: ${borderColor};\n }\n `\n case 'left':\n return `\n &::after {\n right: -14px;\n top: 50%;\n margin-top: -7px;\n border-left-color: ${borderColor};\n }\n `\n case 'right':\n return `\n &::after {\n left: -14px;\n top: 50%;\n margin-top: -7px;\n border-right-color: ${borderColor};\n }\n `\n default:\n return ''\n }\n}\n\nconst contentBaseStyles = (props: StyledContentProps) => `\n padding: 6px 12px;\n background-color: ${getTooltipVariantColors(props.$variant).background};\n color: ${getTooltipVariantColors(props.$variant).text};\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n width: max-content;\n max-width: 300px;\n white-space: normal;\n word-wrap: break-word;\n pointer-events: none;\n opacity: ${props.$visible ? 1 : 0};\n visibility: ${props.$visible ? 'visible' : 'hidden'};\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n ${props.$variant === 'light' ? `border: 1px solid ${getTooltipVariantColors(props.$variant).border};` : ''}\n\n &::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n ${getArrowStyles(props.$placement, props.$variant)}\n }\n\n ${\n props.$variant === 'light'\n ? `\n &::after {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n }\n `\n : ''\n }\n\n ${getLightArrowStyles(props.$placement, props.$variant)}\n`\n\nexport const StyledWrapper = styled.div`\n position: relative;\n display: inline-block;\n width: fit-content;\n`\n\nconst getPlacementStyles = ($placement: TooltipPlacement) => {\n switch ($placement) {\n case 'top':\n return `\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'bottom':\n return `\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'left':\n return `\n right: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n case 'right':\n return `\n left: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n default:\n return ''\n }\n}\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: absolute;\n z-index: ${Z_INDEX.dropdown};\n ${(props) => contentBaseStyles(props)}\n ${({ $placement }) => getPlacementStyles($placement)}\n`\n\nexport const StyledPortalContent = styled.div<StyledContentProps>`\n position: fixed;\n z-index: ${Z_INDEX.portalDropdown};\n ${(props) => contentBaseStyles(props)}\n`\n","import { useCallback, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledPortalContent, StyledWrapper } from './styled'\nimport { TooltipPlacement, TooltipProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tooltip')\n\nconst TOOLTIP_GAP = 8\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const Tooltip = ({\n children,\n className,\n classnames,\n content,\n delay = 200,\n placement = 'top',\n portalRenderNode,\n ref,\n variant = 'dark',\n ...rest\n}: TooltipProps) => {\n const [visible, setVisible] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n const [actualPlacement, setActualPlacement] = useState<TooltipPlacement>(placement)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const updatePosition = useCallback(() => {\n if (!wrapperRef.current) return\n\n const triggerRect = wrapperRef.current.getBoundingClientRect()\n const contentWidth = contentRef.current?.offsetWidth ?? 100\n const contentHeight = contentRef.current?.offsetHeight ?? 30\n\n const spaceTop = triggerRect.top - TOOLTIP_GAP\n const spaceBottom = window.innerHeight - triggerRect.bottom - TOOLTIP_GAP\n const spaceLeft = triggerRect.left - TOOLTIP_GAP\n const spaceRight = window.innerWidth - triggerRect.right - TOOLTIP_GAP\n\n let newPlacement = placement\n\n // Auto-adjust placement if not enough space\n if (placement === 'top' && spaceTop < contentHeight && spaceBottom > spaceTop) {\n newPlacement = 'bottom'\n } else if (placement === 'bottom' && spaceBottom < contentHeight && spaceTop > spaceBottom) {\n newPlacement = 'top'\n } else if (placement === 'left' && spaceLeft < contentWidth && spaceRight > spaceLeft) {\n newPlacement = 'right'\n } else if (placement === 'right' && spaceRight < contentWidth && spaceLeft > spaceRight) {\n newPlacement = 'left'\n }\n\n setActualPlacement(newPlacement)\n\n if (portalRenderNode) {\n let top: number\n let left: number\n\n switch (newPlacement) {\n case 'top':\n top = triggerRect.top - contentHeight - TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'bottom':\n top = triggerRect.bottom + TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.left - contentWidth - TOOLTIP_GAP\n break\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.right + TOOLTIP_GAP\n break\n default:\n top = 0\n left = 0\n }\n\n // Clamp to viewport\n const padding = 8\n left = Math.max(padding, Math.min(left, window.innerWidth - contentWidth - padding))\n top = Math.max(padding, Math.min(top, window.innerHeight - contentHeight - padding))\n\n setPortalPosition({ top, left })\n }\n }, [placement, portalRenderNode])\n\n useLayoutEffect(() => {\n if (visible) {\n updatePosition()\n }\n }, [visible, updatePosition])\n\n const handleMouseEnter = () => {\n const id = setTimeout(() => {\n setVisible(true)\n }, delay)\n setTimeoutId(id)\n }\n\n const handleMouseLeave = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n setTimeoutId(null)\n }\n setVisible(false)\n }\n\n const tooltipContent = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {content}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n >\n {content}\n </StyledContent>\n )\n\n return (\n <StyledWrapper\n {...rest}\n ref={(node) => {\n ;(wrapperRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n className={css('wrapper', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {tooltipContent}\n </StyledWrapper>\n )\n}\n","import styled from '@emotion/styled'\n\ntype StyledContainerProps = {\n $reverse: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: 12px;\n flex-direction: ${({ $reverse }) => ($reverse ? 'row-reverse' : 'row')};\n`\n\nexport const StyledInfo = styled.div<{ $align: 'left' | 'right' }>`\n display: flex;\n flex-direction: column;\n text-align: ${({ $align }) => $align};\n`\n\nexport const StyledName = styled.span`\n font-size: 14px;\n font-weight: 600;\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.span`\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n`\n","import { StyledContainer, StyledDescription, StyledInfo, StyledName } from './styled'\nimport { UserProps } from './types'\nimport { Avatar } from '../Avatar'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('user')\n\nexport const User = ({\n avatarPosition = 'left',\n avatarProps,\n className,\n classnames,\n description,\n name,\n ref,\n src,\n ...rest\n}: UserProps) => {\n const isRight = avatarPosition === 'right'\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $reverse={isRight}>\n <Avatar\n size=\"sm\"\n {...avatarProps}\n name={typeof name === 'string' ? name : undefined}\n src={src ?? avatarProps?.src}\n className={css('avatar', classnames?.avatar)}\n />\n <StyledInfo $align={isRight ? 'right' : 'left'}>\n <StyledName className={css('name', classnames?.name)}>{name}</StyledName>\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledInfo>\n </StyledContainer>\n )\n}\n"],"names":["globalStyles","css","GlobalStyle","jsx","Global","StyledContainer","styled","$variant","StyledItem","COLORS","$disabled","StyledTrigger","$expanded","StyledIcon","StyledContentWrapper","StyledContentInner","StyledContent","newClassNameGetter","ChevronIcon","Accordion","className","classnames","defaultValue","items","multiple","onChange","ref","controlledValue","variant","rest","internalValue","setInternalValue","useState","isControlled","expanded","toggle","useCallback","itemValue","isExpanded","next","v","item","jsxs","RADIUS","ICON_COLORS","$center","$radius","StyledBody","StyledTitle","StyledDescription","Alert","description","icon","radius","title","getInitials","name","parts","first","_a","last","_b","AVATAR_SIZES","AVATAR_FONT_SIZES","AVATAR_ICON_SIZES","AVATAR_RADIUS","AVATAR_COLORS","$size","$color","$bordered","StyledImage","StyledFallback","StyledInitials","Avatar","bordered","color","disabled","size","src","imageError","setImageError","showImage","StyledGroup","StyledCount","AvatarGroup","children","max","avatars","Children","isValidElement","visible","remaining","child","cloneElement","COLOR_MAP","SIZE_MAP","getPlacement","$placement","$shape","offset","getVariantStyles","c","StyledBadge","$dot","$showOutline","$invisible","Badge","content","dot","invisible","placement","shape","showOutline","BreadcrumbItem","SIZES","padding","StyledList","$current","StyledLink","StyledSeparator","StyledEllipsis","DefaultSeparator","Breadcrumbs","itemsAfterCollapse","itemsBeforeCollapse","maxItems","separator","totalItems","shouldCollapse","renderSeparator","key","renderItem","index","isLast","current","itemDisabled","href","startContent","endContent","isCurrent","isDisabled","renderItems","before","after","Fragment","i","originalIndex","SHADOW_MAP","alpha","RADIUS_MAP","StyledCard","$blurred","$border","$shadow","$fullWidth","$pressable","$hoverable","StyledCardHeader","StyledCardBody","StyledCardFooter","Card","blurred","border","footerBlurred","fullWidth","hoverable","pressable","shadow","resolvedShadow","CardBody","CardFooter","CardHeader","DEFAULT_CONFIRM_LABEL","DEFAULT_CANCEL_LABEL","fadeIn","keyframes","fadeOut","slideIn","slideOut","StyledOverlay","Z_INDEX","$isExiting","StyledMessage","StyledActions","ConfirmationBar","confirmation","onDone","isExiting","setIsExiting","isLoading","setIsLoading","message","onConfirm","onCancel","options","confirmLabel","cancelLabel","exit","callback","handleConfirm","result","handleCancel","useEffect","handleKeyDown","e","Button","ConfirmationContext","createContext","noop","ConfirmationProvider","state","setState","show","hide","useConfirmation","context","useContext","CONTAINER_MAX_WIDTHS","BREAKPOINTS","mediaUp","Container","formatDate","date","locale","StyledHash","DateRange","from","presentLabel","to","props","StyledLine","StyledLabel","Divider","spacing","KEYFRAMES","getPositionStyles","position","Drawer","animated","open","createPortal","contentStyles","getTransform","$open","$position","$align","StyledPortalContent","DROPDOWN_GAP","DROPDOWN_MIN_HEIGHT","Dropdown","align","autoClose","onClose","onOpen","controlledOpen","portalRenderNode","trigger","internalOpen","setInternalOpen","portalPosition","setPortalPosition","setPosition","containerRef","useRef","triggerRef","contentRef","updatePosition","triggerRect","contentHeight","contentWidth","spaceBelow","spaceAbove","newPosition","left","top","handleToggle","prev","handleClose","handleContentClick","useLayoutEffect","handleClickOutside","event","target","isOutsideContainer","isOutsideContent","handleEscape","handleScroll","handleResize","StyledIconArea","StyledRings","StyledRingsOuter","StyledIconBox","EmptyState","actions","StyledFieldRow","FieldRow","gap","formatFileSize","bytes","units","isFileTypeAccepted","file","accept","t","type","StyledFileUpload","StyledDropzone","$dragOver","StyledDropzoneIcon","StyledDropzoneText","StyledDropzoneAction","StyledDropzoneHint","StyledInput","STATUS_BORDER","$status","StyledItemIcon","StyledItemContent","StyledItemHeader","StyledItemInfo","StyledItemName","StyledItemSize","StyledItemProgress","StyledProgressTrack","StyledProgressBar","$value","StyledProgressText","StyledItemAction","StyledRetryLink","StyledStatusRow","StyledCheckIcon","UploadIcon","FileUpload","hint","maxSize","onReject","inputRef","dragOver","setDragOver","processFiles","fileList","files","rejected","f","accepted","handleClick","handleInputChange","handleDragOver","handleDragLeave","handleDrop","DefaultFileIcon","CloseIcon","CheckIcon","FileUploadItem","status","progress","onRemove","onRetry","base","clickable","$clickable","Hashtag","onClick","StyledHeading","$level","Heading","as","level","StyledButton","StyledLines","weight","MenuButton","defaultOpen","onOpenChange","isOpen","DEFAULT_NOTIFICATION_DURATION","NOTIFICATION_VARIANT_COLORS","NotificationContext","getNotificationVariantColors","StyledNotificationContainer","StyledNotificationBar","StyledNotificationMessage","StyledNotificationCloseButton","StyledNotificationWrapper","NotificationBar","notification","onAnimationEnd","handleRemove","handleAnimationEnd","timer","X","notificationReducer","action","newNotification","nextNotification","initialNotificationState","NotificationProvider","dispatch","useReducer","duration","id","handleShowNext","useNotification","NotifyConfirmationContext","DEFAULT_DISCARD_LABEL","NotifyConfirmationBar","label","onDiscard","discardLabel","handleDiscard","NotifyConfirmationProvider","useNotifyConfirmation","Overline","StyledGrid","StyledInner","StyledLogo","StyledHeader","StyledFooter","ShellScreen","footer","gridSize","logo","getPaginationRange","total","siblings","boundaries","_","leftSiblingIndex","rightSiblingIndex","showLeftDots","showRightDots","leftCount","leftRange","rightRange","rightCount","middleRange","getItemStyles","active","$active","StyledCursor","StyledControl","Pagination","initialPage","loop","controlledPage","showControls","internalPage","setInternalPage","currentPage","itemsRef","cursorRef","range","setPage","newPage","handlePageClick","page","handlePrev","handleNext","cursor","container","itemEl","containerRect","x","el","PANEL_VARIANT_COLORS","getPanelVariantColors","Panel","hasHeader","DEFAULT_PHRASES","DEFAULT_INTERVAL","getPhrases","phrases","getInterval","interval","getBoardWidth","p","padPhrase","phrase","width","createShuffledQueue","length","excludeIndex","indices","j","swapWith","orbit1","orbit2","orbit3","StyledIndicator","StyledOrbitDot","StyledScreenReaderOnly","CYCLE_TICK_MS","SETTLE_BASE_MS","SETTLE_STAGGER_MS","SHUFFLE_ALPHABET","randomChar","getSettleTime","getCycleTick","StyledChar","SplitFlapText","text","displayChars","setDisplayChars","prevTextRef","settledRef","cycleTimerRef","settleTimersRef","targetCharsRef","clearTimers","startFlip","targetText","ch","char","PendingScreen","phrasesProp","resolvedPhrases","useMemo","resolvedInterval","boardWidth","queueRef","queuePosRef","getNextIndex","currentIndex","setCurrentIndex","phraseTimerRef","advance","currentPhrase","paddedText","PROGRESS_SIZE_PROPS","StyledTrack","StyledBar","Progress","value","SaveProgressContext","SaveProgressProvider","defaultMessage","isVisible","setIsVisible","setMessage","customMessage","Spinner","useSaveProgress","pulse","wave","pulseStyle","waveStyle","ANIMATION_STYLES","resolveSize","StyledSkeleton","$width","$circle","$height","$animation","Skeleton","animation","circle","height","StyledValue","Stat","StyledStep","$interactive","StyledChevron","StyledChevronPlaceholder","STATUS_COLORS","spin","runningStyle","StyledStatusIcon","$muted","StyledDuration","StyledLogWrapper","StyledLogInner","StyledLog","StyledLogLine","StyledLineNumber","StyledLineText","STATUS_ICONS","CircleCheck","CircleX","LoaderCircle","Circle","StepLog","steps","stepValue","step","isInteractive","hasLines","StatusIcon","ChevronRight","logLine","StyledStepWrapper","StyledCircle","Stepper","orientation","isActive","isCompleted","StyledTab","Tabs","tabs","tab","StyledDot","Timeline","ToastContext","MAX_VISIBLE_TOASTS","TOAST_VARIANT_COLORS","toastReducer","newToast","toastId","updatedToasts","toast","nextToast","initialToastState","getToastVariantColors","StyledToastrContainer","StyledToast","StyledToastMessage","StyledToastCloseButton","StyledToastrBottomRow","StyledQueueCounter","ToastItem","onHide","ToastContainer","toasts","queueCount","lastIndex","ToastProvider","useToastr","TOOLTIP_VARIANT_COLORS","getTooltipVariantColors","getArrowStyles","arrowColor","getLightArrowStyles","borderColor","contentBaseStyles","StyledWrapper","getPlacementStyles","TOOLTIP_GAP","Tooltip","delay","setVisible","timeoutId","setTimeoutId","actualPlacement","setActualPlacement","wrapperRef","spaceTop","spaceBottom","spaceLeft","spaceRight","newPlacement","handleMouseEnter","handleMouseLeave","tooltipContent","node","$reverse","StyledInfo","StyledName","User","avatarPosition","avatarProps","isRight"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/GlobalStyle.tsx","../src/components/Accordion/styled.ts","../src/components/Accordion/Accordion.tsx","../src/components/Alert/styled.ts","../src/components/Alert/Alert.tsx","../src/components/Avatar/helpers.ts","../src/components/Avatar/constants.ts","../src/components/Avatar/styled.ts","../src/components/Avatar/Avatar.tsx","../src/components/AvatarGroup/styled.ts","../src/components/AvatarGroup/AvatarGroup.tsx","../src/components/Badge/styled.ts","../src/components/Badge/Badge.tsx","../src/components/Breadcrumbs/BreadcrumbItem.tsx","../src/components/Breadcrumbs/styled.ts","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Card/styled.ts","../src/components/Card/Card.tsx","../src/components/Card/CardBody.tsx","../src/components/Card/CardFooter.tsx","../src/components/Card/CardHeader.tsx","../src/components/Confirmation/constants.ts","../src/components/Confirmation/styled.ts","../src/components/Confirmation/ConfirmationBar.tsx","../src/components/Confirmation/context.tsx","../src/components/Confirmation/ConfirmationProvider.tsx","../src/components/Confirmation/useConfirmation.ts","../src/components/Container/constants.ts","../src/components/Container/styled.ts","../src/components/Container/Container.tsx","../src/components/DateRange/helpers.ts","../src/components/DateRange/styled.ts","../src/components/DateRange/DateRange.tsx","../src/components/Divider/styled.ts","../src/components/Divider/Divider.tsx","../src/components/Drawer/styled.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/styled.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/EmptyState/styled.ts","../src/components/EmptyState/EmptyState.tsx","../src/components/FieldRow/styled.ts","../src/components/FieldRow/FieldRow.tsx","../src/components/FileUpload/helpers.ts","../src/components/FileUpload/styled.ts","../src/components/FileUpload/FileUpload.tsx","../src/components/FileUpload/FileUploadItem.tsx","../src/components/Hashtag/styled.ts","../src/components/Hashtag/Hashtag.tsx","../src/components/Heading/styled.ts","../src/components/Heading/Heading.tsx","../src/components/MenuButton/styled.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/Notification/constants.ts","../src/components/Notification/context.tsx","../src/components/Notification/helpers.ts","../src/components/Notification/styled.ts","../src/components/Notification/NotificationBar.tsx","../src/components/Notification/reducer.ts","../src/components/Notification/NotificationProvider.tsx","../src/components/Notification/useNotification.ts","../src/components/NotifyConfirmation/context.tsx","../src/components/NotifyConfirmation/constants.ts","../src/components/NotifyConfirmation/styled.ts","../src/components/NotifyConfirmation/NotifyConfirmationBar.tsx","../src/components/NotifyConfirmation/NotifyConfirmationProvider.tsx","../src/components/NotifyConfirmation/useNotifyConfirmation.ts","../src/components/Overline/styled.ts","../src/components/Overline/Overline.tsx","../src/components/ShellScreen/styled.ts","../src/components/ShellScreen/ShellScreen.tsx","../src/components/Pagination/helpers.ts","../src/components/Pagination/styled.ts","../src/components/Pagination/Pagination.tsx","../src/components/Panel/constants.ts","../src/components/Panel/helpers.ts","../src/components/Panel/styled.ts","../src/components/Panel/Panel.tsx","../src/components/PendingScreen/constants.ts","../src/components/PendingScreen/helpers.ts","../src/components/PendingScreen/styled.ts","../src/components/SplitFlapText/constants.ts","../src/components/SplitFlapText/helpers.ts","../src/components/SplitFlapText/styled.ts","../src/components/SplitFlapText/SplitFlapText.tsx","../src/components/PendingScreen/PendingScreen.tsx","../src/components/Progress/constants.ts","../src/components/Progress/styled.ts","../src/components/Progress/Progress.tsx","../src/components/SaveProgress/context.tsx","../src/components/SaveProgress/styled.ts","../src/components/SaveProgress/SaveProgressProvider.tsx","../src/components/SaveProgress/useSaveProgress.ts","../src/components/Skeleton/styled.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/Stat/styled.ts","../src/components/Stat/Stat.tsx","../src/components/StepLog/styled.ts","../src/components/StepLog/StepLog.tsx","../src/components/Stepper/styled.ts","../src/components/Stepper/Stepper.tsx","../src/components/Tabs/styled.ts","../src/components/Tabs/Tabs.tsx","../src/components/Timeline/styled.ts","../src/components/Timeline/Timeline.tsx","../src/components/Toastr/context.tsx","../src/components/Toastr/constants.ts","../src/components/Toastr/reducer.ts","../src/components/Toastr/helpers.ts","../src/components/Toastr/styled.ts","../src/components/Toastr/ToastItem.tsx","../src/components/Toastr/ToastContainer.tsx","../src/components/Toastr/ToastProvider.tsx","../src/components/Toastr/useToast.ts","../src/components/Tooltip/constants.ts","../src/components/Tooltip/helpers.ts","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/User/styled.ts","../src/components/User/User.tsx"],"sourcesContent":["import { css, Global } from '@emotion/react'\n\nconst globalStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n * {\n margin: 0;\n padding: 0;\n }\n\n html {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji';\n }\n\n body {\n min-height: 100vh;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n }\n\n img,\n picture,\n video,\n canvas,\n svg {\n display: block;\n max-width: 100%;\n }\n\n input,\n button,\n textarea,\n select {\n font: inherit;\n color: inherit;\n }\n\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n overflow-wrap: break-word;\n }\n\n a {\n color: inherit;\n text-decoration: inherit;\n }\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n }\n\n ul,\n ol {\n list-style: none;\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n /* Tabular figures for numbers in data contexts */\n .tabular-nums {\n font-variant-numeric: tabular-nums;\n }\n\n /* Proportional figures for running text */\n .proportional-nums {\n font-variant-numeric: proportional-nums;\n }\n\n /* Selection styling */\n ::selection {\n background-color: rgba(0, 122, 255, 0.25);\n }\n\n /* Focus visible for accessibility */\n :focus-visible {\n outline: 2px solid rgba(0, 122, 255, 0.5);\n outline-offset: 2px;\n }\n\n :focus:not(:focus-visible) {\n outline: none;\n }\n`\n\nexport const GlobalStyle = () => {\n return <Global styles={globalStyles} />\n}\n","import styled from '@emotion/styled'\n\nimport { type AccordionVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $variant: AccordionVariant\n}\n\ntype StyledItemProps = {\n $variant: AccordionVariant\n $disabled: boolean\n}\n\ntype StyledTriggerProps = {\n $disabled: boolean\n $expanded: boolean\n}\n\ntype StyledContentWrapperProps = {\n $expanded: boolean\n}\n\ntype StyledIconProps = {\n $expanded: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${({ $variant }) => ($variant === 'splitted' ? '8px' : '0')};\n`\n\nexport const StyledItem = styled.div<StyledItemProps>`\n border-bottom: ${({ $variant }) =>\n $variant === 'outlined' ? `1px solid ${COLORS.gray}` : 'none'};\n border-radius: ${({ $variant }) => ($variant === 'splitted' ? '8px' : '0')};\n background-color: ${({ $variant }) => ($variant === 'splitted' ? '#f9fafb' : 'transparent')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n\n &:first-of-type {\n border-top: ${({ $variant }) =>\n $variant === 'outlined' ? `1px solid ${COLORS.gray}` : 'none'};\n }\n`\n\nexport const StyledTrigger = styled.button<StyledTriggerProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 14px 16px;\n background: none;\n border: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n font-size: 14px;\n font-weight: 600;\n color: ${({ $expanded }) => ($expanded ? COLORS.black : COLORS['iron-grey'])};\n text-align: left;\n outline: none;\n transition: color 0.2s ease;\n\n &:hover {\n color: ${COLORS.black};\n }\n`\n\nexport const StyledIcon = styled.span<StyledIconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n color: ${COLORS['iron-grey']};\n transition: transform 0.2s ease;\n transform: rotate(${({ $expanded }) => ($expanded ? '180deg' : '0deg')});\n`\n\nexport const StyledContentWrapper = styled.div<StyledContentWrapperProps>`\n display: grid;\n grid-template-rows: ${({ $expanded }) => ($expanded ? '1fr' : '0fr')};\n transition: grid-template-rows 0.2s ease;\n`\n\nexport const StyledContentInner = styled.div`\n overflow: hidden;\n`\n\nexport const StyledContent = styled.div`\n padding: 0 16px 14px;\n font-size: 14px;\n line-height: 1.5;\n color: ${COLORS['iron-grey']};\n`\n","import { useCallback, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledContent,\n StyledContentInner,\n StyledContentWrapper,\n StyledIcon,\n StyledItem,\n StyledTrigger,\n} from './styled'\nimport { type AccordionProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('accordion')\n\nconst ChevronIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n)\n\nexport const Accordion = ({\n className,\n classnames,\n defaultValue = [],\n items,\n multiple = false,\n onChange,\n ref,\n value: controlledValue,\n variant = 'outlined',\n ...rest\n}: AccordionProps) => {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue)\n\n const isControlled = controlledValue !== undefined\n const expanded = isControlled ? controlledValue : internalValue\n\n const toggle = useCallback(\n (itemValue: string) => {\n const isExpanded = expanded.includes(itemValue)\n\n let next: string[]\n\n if (multiple) {\n next = isExpanded ? expanded.filter((v) => v !== itemValue) : [...expanded, itemValue]\n } else {\n next = isExpanded ? [] : [itemValue]\n }\n\n if (!isControlled) {\n setInternalValue(next)\n }\n\n onChange?.(next)\n },\n [expanded, isControlled, multiple, onChange],\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $variant={variant}\n className={css('container', className)}\n role=\"region\"\n >\n {items.map((item) => {\n const isExpanded = expanded.includes(item.value)\n\n return (\n <StyledItem\n key={item.value}\n $variant={variant}\n $disabled={Boolean(item.disabled)}\n className={css('item', classnames?.item)}\n >\n <StyledTrigger\n type=\"button\"\n aria-expanded={isExpanded}\n $disabled={Boolean(item.disabled)}\n $expanded={isExpanded}\n disabled={item.disabled}\n onClick={() => toggle(item.value)}\n className={css('trigger', classnames?.trigger)}\n >\n {item.title}\n <StyledIcon $expanded={isExpanded} className={css('icon', classnames?.icon)}>\n <ChevronIcon />\n </StyledIcon>\n </StyledTrigger>\n\n <StyledContentWrapper $expanded={isExpanded}>\n <StyledContentInner>\n <StyledContent className={css('content', classnames?.content)}>\n {item.content}\n </StyledContent>\n </StyledContentInner>\n </StyledContentWrapper>\n </StyledItem>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { type AlertRadius, type AlertVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst RADIUS: Record<AlertRadius, string> = {\n none: '0',\n sm: '8px',\n md: '12px',\n lg: '16px',\n full: '9999px',\n}\n\nconst ICON_COLORS: Record<AlertVariant, string> = {\n normal: COLORS.black,\n success: COLORS.green,\n warning: COLORS.yellow,\n danger: COLORS.red,\n}\n\nexport const StyledContainer = styled.div<{ $radius: AlertRadius; $center: boolean }>`\n display: flex;\n align-items: ${({ $center }) => ($center ? 'center' : 'flex-start')};\n gap: 12px;\n padding: 16px;\n border-radius: ${({ $radius }) => RADIUS[$radius]};\n background-color: ${COLORS.gray};\n`\n\nexport const StyledIcon = styled.div<{ $variant: AlertVariant }>`\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: ${COLORS.white};\n box-shadow:\n 0 0 0 4px ${COLORS.gray},\n 0 0 0 5px rgba(0, 0, 0, 0.06);\n\n &::after {\n content: '';\n }\n\n > span {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background-color: ${({ $variant }) => ICON_COLORS[$variant]};\n color: ${COLORS.white};\n }\n\n > span svg {\n width: 16px;\n height: 16px;\n }\n`\n\nexport const StyledBody = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n min-width: 0;\n`\n\nexport const StyledTitle = styled.div`\n font-size: 14px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n`\n","import { StyledBody, StyledContainer, StyledDescription, StyledIcon, StyledTitle } from './styled'\nimport { type AlertProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('alert')\n\nexport const Alert = ({\n className,\n classnames,\n description,\n icon,\n radius = 'lg',\n ref,\n title,\n variant = 'normal',\n ...rest\n}: AlertProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n role=\"alert\"\n className={css('container', className)}\n $radius={radius}\n $center={!description}\n >\n {icon && (\n <StyledIcon $variant={variant} className={css('icon', classnames?.icon)}>\n <span>{icon}</span>\n </StyledIcon>\n )}\n\n <StyledBody>\n {title && <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>}\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledBody>\n </StyledContainer>\n )\n}\n","export const getInitials = (name: string): string => {\n const parts = name.trim().split(/\\s+/)\n\n if (parts.length >= 2) {\n const first = parts[0]?.[0] ?? ''\n const last = parts[parts.length - 1]?.[0] ?? ''\n\n return (first + last).toUpperCase()\n }\n\n return name.slice(0, 2).toUpperCase()\n}\n","import { AvatarColor, AvatarRadius, AvatarSize } from './types'\nimport { COLORS } from '../../lib'\n\nexport const AVATAR_SIZES: Record<AvatarSize, number> = {\n sm: 32,\n md: 40,\n lg: 56,\n}\n\nexport const AVATAR_FONT_SIZES: Record<AvatarSize, number> = {\n sm: 12,\n md: 14,\n lg: 20,\n}\n\nexport const AVATAR_ICON_SIZES: Record<AvatarSize, number> = {\n sm: 18,\n md: 22,\n lg: 30,\n}\n\nexport const AVATAR_RADIUS: Record<AvatarRadius, string> = {\n sm: '6px',\n md: '10px',\n lg: '14px',\n full: '50%',\n}\n\nexport const AVATAR_COLORS: Record<\n AvatarColor,\n { background: string; color: string; border: string }\n> = {\n default: { background: COLORS.gray, color: COLORS.black, border: COLORS.gray },\n primary: {\n background: COLORS['baltic-blue'],\n color: COLORS.white,\n border: COLORS['baltic-blue'],\n },\n success: { background: COLORS.green, color: COLORS.white, border: COLORS.green },\n warning: { background: COLORS.yellow, color: COLORS.black, border: COLORS.yellow },\n danger: { background: COLORS.red, color: COLORS.white, border: COLORS.red },\n}\n","import styled from '@emotion/styled'\n\nimport {\n AVATAR_COLORS,\n AVATAR_FONT_SIZES,\n AVATAR_ICON_SIZES,\n AVATAR_RADIUS,\n AVATAR_SIZES,\n} from './constants'\nimport { AvatarColor, AvatarRadius, AvatarSize } from './types'\n\ntype StyledContainerProps = {\n $size: AvatarSize\n $radius: AvatarRadius\n $color: AvatarColor\n $bordered: boolean\n $disabled: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: ${({ $size }) => AVATAR_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_SIZES[$size]}px;\n border-radius: ${({ $radius }) => AVATAR_RADIUS[$radius]};\n background-color: ${({ $color }) => AVATAR_COLORS[$color].background};\n color: ${({ $color }) => AVATAR_COLORS[$color].color};\n font-size: ${({ $size }) => AVATAR_FONT_SIZES[$size]}px;\n font-weight: 600;\n line-height: 1;\n flex-shrink: 0;\n user-select: none;\n box-sizing: border-box;\n ${({ $bordered, $color }) =>\n $bordered && `box-shadow: 0 0 0 2px #fff, 0 0 0 4px ${AVATAR_COLORS[$color].border};`}\n ${({ $disabled }) => $disabled && 'opacity: 0.5; pointer-events: none;'}\n`\n\nexport const StyledImage = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n`\n\ntype StyledFallbackProps = {\n $size: AvatarSize\n}\n\nexport const StyledFallback = styled.span<StyledFallbackProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n width: ${({ $size }) => AVATAR_ICON_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_ICON_SIZES[$size]}px;\n }\n`\n\nexport const StyledInitials = styled.span`\n letter-spacing: 0.5px;\n`\n","import { useState } from 'react'\n\nimport { getInitials } from './helpers'\nimport { StyledContainer, StyledFallback, StyledImage, StyledInitials } from './styled'\nimport { AvatarProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('avatar')\n\nexport const Avatar = ({\n bordered = false,\n className,\n classnames,\n color = 'default',\n disabled = false,\n icon,\n name,\n radius = 'full',\n ref,\n size = 'md',\n src,\n ...rest\n}: AvatarProps) => {\n const [imageError, setImageError] = useState(false)\n\n const showImage = src && !imageError\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $size={size}\n $radius={radius}\n $color={color}\n $bordered={bordered}\n $disabled={disabled}\n >\n {showImage ? (\n <StyledImage\n className={css('image', classnames?.image)}\n src={src}\n alt={name || ''}\n onError={() => setImageError(true)}\n />\n ) : icon ? (\n <StyledFallback className={css('fallback', classnames?.fallback)} $size={size}>\n {icon}\n </StyledFallback>\n ) : name ? (\n <StyledInitials className={css('initials', classnames?.initials)}>\n {getInitials(name)}\n </StyledInitials>\n ) : (\n <StyledFallback className={css('fallback', classnames?.fallback)} $size={size}>\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n </StyledFallback>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { AVATAR_FONT_SIZES, AVATAR_SIZES } from '../Avatar/constants'\nimport { AvatarSize } from '../Avatar/types'\n\ntype StyledGroupProps = {\n $size: AvatarSize\n}\n\nexport const StyledGroup = styled.div<StyledGroupProps>`\n display: inline-flex;\n align-items: center;\n\n & > * + * {\n margin-left: -${({ $size }) => Math.round(AVATAR_SIZES[$size] * 0.25)}px;\n }\n`\n\ntype StyledCountProps = {\n $size: AvatarSize\n}\n\nexport const StyledCount = styled.div<StyledCountProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => AVATAR_SIZES[$size]}px;\n height: ${({ $size }) => AVATAR_SIZES[$size]}px;\n border-radius: 50%;\n background-color: #e4e4e7;\n color: #71717a;\n font-size: ${({ $size }) => AVATAR_FONT_SIZES[$size]}px;\n font-weight: 600;\n line-height: 1;\n flex-shrink: 0;\n`\n","import { Children, cloneElement, isValidElement } from 'react'\n\nimport { StyledCount, StyledGroup } from './styled'\nimport { AvatarGroupProps } from './types'\nimport { AvatarProps } from '../Avatar/types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('avatar-group')\n\nexport const AvatarGroup = ({\n children,\n className,\n classnames,\n max = 5,\n ref,\n size = 'md',\n ...rest\n}: AvatarGroupProps) => {\n const avatars = Children.toArray(children).filter(isValidElement)\n const visible = avatars.slice(0, max)\n const remaining = avatars.length - max\n\n return (\n <StyledGroup {...rest} ref={ref} className={css('container', className)} $size={size}>\n {visible.map((child) =>\n isValidElement<AvatarProps>(child) ? cloneElement(child, { size }) : child,\n )}\n {remaining > 0 && (\n <StyledCount className={css('count', classnames?.count)} $size={size}>\n +{remaining}\n </StyledCount>\n )}\n </StyledGroup>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { BadgeColor, BadgePlacement, BadgeShape, BadgeSize, BadgeVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst COLOR_MAP: Record<BadgeColor, { bg: string; text: string; border: string; flatBg: string }> =\n {\n default: { bg: COLORS.black, text: COLORS.white, border: COLORS.black, flatBg: COLORS.gray },\n success: { bg: COLORS.green, text: COLORS.white, border: COLORS.green, flatBg: '#dcfce7' },\n warning: { bg: COLORS.yellow, text: COLORS.black, border: COLORS.yellow, flatBg: '#fef9c3' },\n danger: { bg: COLORS.red, text: COLORS.white, border: COLORS.red, flatBg: '#fee2e2' },\n }\n\nconst SIZE_MAP: Record<\n BadgeSize,\n { minWidth: number; height: number; fontSize: number; padding: string; dotSize: number }\n> = {\n sm: { minWidth: 16, height: 16, fontSize: 10, padding: '0 4px', dotSize: 8 },\n md: { minWidth: 20, height: 20, fontSize: 11, padding: '0 5px', dotSize: 10 },\n lg: { minWidth: 24, height: 24, fontSize: 12, padding: '0 6px', dotSize: 12 },\n}\n\nconst getPlacement = ($placement: BadgePlacement, $shape: BadgeShape) => {\n const offset = $shape === 'circle' ? '10%' : '0%'\n\n switch ($placement) {\n case 'top-right':\n return `top: 0; right: 0; transform: translate(50%, -50%) translate(-${offset}, ${offset});`\n case 'top-left':\n return `top: 0; left: 0; transform: translate(-50%, -50%) translate(${offset}, ${offset});`\n case 'bottom-right':\n return `bottom: 0; right: 0; transform: translate(50%, 50%) translate(-${offset}, -${offset});`\n case 'bottom-left':\n return `bottom: 0; left: 0; transform: translate(-50%, 50%) translate(${offset}, -${offset});`\n }\n}\n\nconst getVariantStyles = ($variant: BadgeVariant, $color: BadgeColor) => {\n const c = COLOR_MAP[$color]\n\n switch ($variant) {\n case 'solid':\n return `background-color: ${c.bg}; color: ${c.text};`\n case 'flat':\n return `background-color: ${c.flatBg}; color: ${$color === 'default' ? COLORS.black : c.bg};`\n case 'bordered':\n return `background-color: transparent; color: ${c.border}; border: 1.5px solid ${c.border};`\n }\n}\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-flex;\n`\n\ntype StyledBadgeProps = {\n $color: BadgeColor\n $dot: boolean\n $invisible: boolean\n $placement: BadgePlacement\n $shape: BadgeShape\n $showOutline: boolean\n $size: BadgeSize\n $variant: BadgeVariant\n}\n\nexport const StyledBadge = styled.span<StyledBadgeProps>`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n white-space: nowrap;\n font-weight: 600;\n border-radius: 999px;\n z-index: 1;\n transition:\n transform 0.15s ease,\n opacity 0.15s ease;\n\n ${({ $dot, $size }) =>\n $dot\n ? `\n width: ${SIZE_MAP[$size].dotSize}px;\n height: ${SIZE_MAP[$size].dotSize}px;\n min-width: auto;\n padding: 0;\n `\n : `\n min-width: ${SIZE_MAP[$size].minWidth}px;\n height: ${SIZE_MAP[$size].height}px;\n font-size: ${SIZE_MAP[$size].fontSize}px;\n padding: ${SIZE_MAP[$size].padding};\n `}\n\n ${({ $variant, $color }) => getVariantStyles($variant, $color)}\n\n ${({ $placement, $shape }) => getPlacement($placement, $shape)}\n\n ${({ $showOutline }) =>\n $showOutline &&\n `\n box-shadow: 0 0 0 2px ${COLORS.white};\n `}\n\n ${({ $invisible }) =>\n $invisible &&\n `\n opacity: 0;\n transform: scale(0);\n `}\n`\n","import { StyledBadge, StyledContainer } from './styled'\nimport { BadgeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('badge')\n\nexport const Badge = ({\n children,\n className,\n classnames,\n color = 'default',\n content,\n dot = false,\n invisible = false,\n placement = 'top-right',\n ref,\n shape = 'rectangle',\n showOutline = true,\n size = 'md',\n variant = 'solid',\n ...rest\n}: BadgeProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n <StyledBadge\n className={css('badge', classnames?.badge)}\n $color={color}\n $dot={dot}\n $invisible={invisible}\n $placement={placement}\n $shape={shape}\n $showOutline={showOutline}\n $size={size}\n $variant={variant}\n >\n {!dot && content}\n </StyledBadge>\n </StyledContainer>\n )\n}\n","import { BreadcrumbItemProps } from './types'\n\nexport const BreadcrumbItem = ({ children, ...rest }: BreadcrumbItemProps) => {\n return <li {...rest}>{children}</li>\n}\n","import styled from '@emotion/styled'\n\nimport { BreadcrumbsSize, BreadcrumbsVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst SIZES: Record<BreadcrumbsSize, { fontSize: number; gap: number; padding: string }> = {\n sm: { fontSize: 12, gap: 4, padding: '4px 8px' },\n md: { fontSize: 14, gap: 6, padding: '6px 12px' },\n lg: { fontSize: 16, gap: 8, padding: '8px 16px' },\n}\n\ntype StyledContainerProps = {\n $variant: BreadcrumbsVariant\n $size: BreadcrumbsSize\n}\n\nexport const StyledContainer = styled.nav<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n ${({ $variant, $size }) => {\n const { padding } = SIZES[$size]\n\n switch ($variant) {\n case 'solid':\n return `\n background-color: ${COLORS.gray};\n border-radius: 10px;\n padding: ${padding};\n `\n case 'bordered':\n return `\n border: 1px solid ${COLORS.gray};\n border-radius: 10px;\n padding: ${padding};\n `\n default:\n return ''\n }\n }}\n`\n\ntype StyledListProps = {\n $size: BreadcrumbsSize\n}\n\nexport const StyledList = styled.ol<StyledListProps>`\n display: flex;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n list-style: none;\n margin: 0;\n padding: 0;\n flex-wrap: wrap;\n`\n\ntype StyledItemProps = {\n $size: BreadcrumbsSize\n $current: boolean\n $disabled: boolean\n}\n\nexport const StyledItem = styled.li<StyledItemProps>`\n display: inline-flex;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n font-size: ${({ $size }) => SIZES[$size].fontSize}px;\n line-height: 1.5;\n color: ${({ $current }) => ($current ? COLORS.black : COLORS['iron-grey'])};\n font-weight: ${({ $current }) => ($current ? 600 : 400)};\n ${({ $disabled, $current }) => $disabled && !$current && 'opacity: 0.5; pointer-events: none;'}\n`\n\ntype StyledLinkProps = {\n $current: boolean\n $disabled: boolean\n}\n\nexport const StyledLink = styled.a<StyledLinkProps>`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n text-decoration: none;\n color: inherit;\n cursor: ${({ $current, $disabled }) => ($current || $disabled ? 'default' : 'pointer')};\n transition: color 0.15s ease;\n\n & svg {\n width: 1em;\n height: 1em;\n }\n\n ${({ $current, $disabled }) =>\n !$current &&\n !$disabled &&\n `\n &:hover {\n color: ${COLORS.black};\n }\n `}\n`\n\ntype StyledSeparatorProps = {\n $size: BreadcrumbsSize\n}\n\nexport const StyledSeparator = styled.span<StyledSeparatorProps>`\n display: inline-flex;\n align-items: center;\n color: ${COLORS['iron-grey']};\n font-size: ${({ $size }) => SIZES[$size].fontSize}px;\n user-select: none;\n\n & svg {\n width: ${({ $size }) => SIZES[$size].fontSize - 2}px;\n height: ${({ $size }) => SIZES[$size].fontSize - 2}px;\n }\n`\n\nexport const StyledEllipsis = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n border: none;\n background: transparent;\n color: ${COLORS['iron-grey']};\n font-size: inherit;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n color: ${COLORS.black};\n }\n`\n","import { Children, isValidElement, ReactElement } from 'react'\n\nimport {\n StyledContainer,\n StyledEllipsis,\n StyledItem,\n StyledLink,\n StyledList,\n StyledSeparator,\n} from './styled'\nimport { BreadcrumbItemProps, BreadcrumbsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('breadcrumbs')\n\nconst DefaultSeparator = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nexport const Breadcrumbs = ({\n children,\n className,\n classnames,\n disabled = false,\n itemsAfterCollapse = 1,\n itemsBeforeCollapse = 1,\n maxItems,\n ref,\n separator,\n size = 'md',\n variant = 'light',\n ...rest\n}: BreadcrumbsProps) => {\n const items = Children.toArray(children).filter((child) =>\n isValidElement(child),\n ) as ReactElement<BreadcrumbItemProps>[]\n\n const totalItems = items.length\n const shouldCollapse = maxItems !== undefined && totalItems > maxItems\n\n const renderSeparator = (key: string) => (\n <StyledSeparator className={css('separator', classnames?.separator)} $size={size} key={key}>\n {separator || <DefaultSeparator />}\n </StyledSeparator>\n )\n\n const renderItem = (child: ReactElement<BreadcrumbItemProps>, index: number, isLast: boolean) => {\n const { current, disabled: itemDisabled, href, startContent, endContent } = child.props\n const isCurrent = current || isLast\n const isDisabled = disabled || (itemDisabled && !isCurrent)\n\n return (\n <StyledItem key={index} $size={size} $current={isCurrent} $disabled={!!isDisabled}>\n <StyledLink\n as={href && !isCurrent ? 'a' : 'span'}\n href={href && !isCurrent ? href : undefined}\n $current={isCurrent}\n $disabled={!!isDisabled}\n >\n {startContent}\n {child.props.children}\n {endContent}\n </StyledLink>\n {!isLast && renderSeparator(`sep-${index}`)}\n </StyledItem>\n )\n }\n\n const renderItems = () => {\n if (shouldCollapse) {\n const before = items.slice(0, itemsBeforeCollapse)\n const after = items.slice(totalItems - itemsAfterCollapse)\n\n return (\n <>\n {before.map((child, i) => renderItem(child, i, false))}\n <StyledItem $size={size} $current={false} $disabled={false}>\n <StyledEllipsis\n className={css('ellipsis', classnames?.ellipsis)}\n aria-label=\"Show more\"\n >\n ...\n </StyledEllipsis>\n {renderSeparator('sep-ellipsis')}\n </StyledItem>\n {after.map((child, i) => {\n const originalIndex = totalItems - itemsAfterCollapse + i\n\n return renderItem(child, originalIndex, originalIndex === totalItems - 1)\n })}\n </>\n )\n }\n\n return items.map((child, i) => renderItem(child, i, i === totalItems - 1))\n }\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n $size={size}\n aria-label=\"Breadcrumbs\"\n >\n <StyledList className={css('list', classnames?.list)} $size={size}>\n {renderItems()}\n </StyledList>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { CardRadius, CardShadow } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nconst SHADOW_MAP: Record<CardShadow, string> = {\n none: 'none',\n sm: `0 1px 2px ${alpha(COLORS.black, 5)}`,\n md: `0 4px 14px ${alpha(COLORS.black, 10)}`,\n lg: `0 10px 30px ${alpha(COLORS.black, 15)}`,\n}\n\nconst RADIUS_MAP: Record<CardRadius, string> = {\n none: '0',\n sm: '8px',\n md: '12px',\n lg: '16px',\n}\n\ntype StyledCardProps = {\n $blurred: boolean\n $border: boolean\n $disabled: boolean\n $footerBlurred: boolean\n $fullWidth: boolean\n $hoverable: boolean\n $pressable: boolean\n $radius: CardRadius\n $shadow: CardShadow\n}\n\nexport const StyledCard = styled.div<StyledCardProps>`\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: ${({ $blurred }) => ($blurred ? alpha(COLORS.white, 70) : COLORS.white)};\n border-radius: ${({ $radius }) => RADIUS_MAP[$radius]};\n border: ${({ $border }) => ($border ? `1px solid ${alpha(COLORS['iron-grey'], 15)}` : 'none')};\n box-shadow: ${({ $shadow }) => SHADOW_MAP[$shadow]};\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n cursor: ${({ $pressable }) => ($pressable ? 'pointer' : 'default')};\n transition:\n box-shadow 0.2s ease,\n transform 0.2s ease;\n\n ${({ $blurred }) =>\n $blurred &&\n `\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n `}\n\n ${({ $hoverable, $pressable }) =>\n ($hoverable || $pressable) &&\n `\n &:hover {\n box-shadow: ${SHADOW_MAP.lg};\n }\n `}\n\n ${({ $pressable }) =>\n $pressable &&\n `\n user-select: none;\n\n &:active {\n transform: scale(0.98);\n }\n `}\n`\n\nexport const StyledCardHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 16px 0;\n z-index: 1;\n`\n\nexport const StyledCardBody = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 12px 16px;\n z-index: 1;\n`\n\ntype StyledCardFooterProps = {\n $blurred: boolean\n}\n\nexport const StyledCardFooter = styled.div<StyledCardFooterProps>`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 16px 16px;\n z-index: 1;\n\n ${({ $blurred }) =>\n $blurred &&\n `\n padding: 12px 16px;\n background-color: ${alpha(COLORS.white, 60)};\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n border-top: 1px solid ${alpha(COLORS['iron-grey'], 15)};\n `}\n`\n","import { StyledCard } from './styled'\nimport { CardProps, CardShadow } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const Card = ({\n blurred = false,\n border = false,\n children,\n className,\n disabled = false,\n footerBlurred = false,\n fullWidth = false,\n hoverable = false,\n pressable = false,\n radius = 'lg',\n ref,\n shadow = 'md',\n ...rest\n}: CardProps) => {\n const resolvedShadow: CardShadow = typeof shadow === 'boolean' ? (shadow ? 'md' : 'none') : shadow\n\n return (\n <StyledCard\n {...rest}\n ref={ref}\n className={css('container', className)}\n $blurred={blurred}\n $border={border}\n $disabled={disabled}\n $footerBlurred={footerBlurred}\n $fullWidth={fullWidth}\n $hoverable={hoverable}\n $pressable={pressable}\n $radius={radius}\n $shadow={resolvedShadow}\n tabIndex={pressable && !disabled ? 0 : undefined}\n role={pressable ? 'button' : undefined}\n >\n {children}\n </StyledCard>\n )\n}\n","import { StyledCardBody } from './styled'\nimport { CardBodyProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardBody = ({ children, className, ref, ...rest }: CardBodyProps) => (\n <StyledCardBody {...rest} ref={ref} className={css('body', className)}>\n {children}\n </StyledCardBody>\n)\n","import { StyledCardFooter } from './styled'\nimport { CardFooterProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardFooter = ({\n blurred = false,\n children,\n className,\n ref,\n ...rest\n}: CardFooterProps) => (\n <StyledCardFooter {...rest} ref={ref} className={css('footer', className)} $blurred={blurred}>\n {children}\n </StyledCardFooter>\n)\n","import { StyledCardHeader } from './styled'\nimport { CardHeaderProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\n\nexport const CardHeader = ({ children, className, ref, ...rest }: CardHeaderProps) => (\n <StyledCardHeader {...rest} ref={ref} className={css('header', className)}>\n {children}\n </StyledCardHeader>\n)\n","export const DEFAULT_CONFIRM_LABEL = 'Confirm'\nexport const DEFAULT_CANCEL_LABEL = 'Cancel'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS, Z_INDEX } from '../../lib'\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`\n\nconst fadeOut = keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n`\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n`\n\ntype StyledOverlayProps = {\n $isExiting: boolean\n}\n\nexport const StyledOverlay = styled.div<StyledOverlayProps>`\n position: fixed;\n inset: 0;\n z-index: ${Z_INDEX.confirmation};\n background-color: rgba(0, 0, 0, 0.15);\n backdrop-filter: blur(2px);\n animation: ${({ $isExiting }) => ($isExiting ? fadeOut : fadeIn)} 0.2s ease-out forwards;\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n left: 50%;\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: ${Z_INDEX.confirmationBar};\n`\n\nexport const StyledMessage = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS.black};\n white-space: nowrap;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CANCEL_LABEL, DEFAULT_CONFIRM_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledMessage, StyledOverlay } from './styled'\nimport type { ConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype ConfirmationBarProps = {\n confirmation: ConfirmationState\n onDone: () => void\n}\n\nexport const ConfirmationBar = ({ confirmation, onDone }: ConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { message, onConfirm, onCancel, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const cancelLabel = options.cancelLabel || DEFAULT_CANCEL_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleCancel = useCallback(() => {\n if (isLoading) return\n exit(onCancel)\n }, [exit, isLoading, onCancel])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleCancel()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleCancel, isLoading])\n\n return (\n <>\n <StyledOverlay $isExiting={isExiting} onClick={handleCancel} />\n <StyledContainer $isExiting={isExiting}>\n <StyledMessage>{message}</StyledMessage>\n <StyledActions>\n <Button variant=\"system\" size=\"compact\" onClick={handleCancel} disabled={isLoading}>\n {cancelLabel}\n </Button>\n <Button variant=\"danger\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n </>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ConfirmationContextValue } from './types'\n\nexport const ConfirmationContext = createContext<ConfirmationContextValue | null>(null)\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { ConfirmationBar } from './ConfirmationBar'\nimport { ConfirmationContext } from './context'\nimport type { ConfirmationOptions, ConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const ConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<ConfirmationState | null>(null)\n\n const show = useCallback(\n (\n message: ReactNode,\n onConfirm: () => void,\n onCancel?: () => void,\n options?: ConfirmationOptions,\n ) => {\n setState({\n open: true,\n message,\n onConfirm,\n onCancel: onCancel || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <ConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <ConfirmationBar confirmation={state} onDone={hide} />}\n </ConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ConfirmationContext } from './context'\n\nexport const useConfirmation = () => {\n const context = useContext(ConfirmationContext)\n\n if (!context) {\n throw new Error('useConfirmation must be used within ConfirmationProvider')\n }\n\n return context\n}\n","import { BREAKPOINTS } from '../../lib'\n\nexport const CONTAINER_MAX_WIDTHS: Record<keyof typeof BREAKPOINTS, string> = {\n sm: `${BREAKPOINTS.sm}px`,\n md: `${BREAKPOINTS.md}px`,\n lg: `${BREAKPOINTS.lg}px`,\n xl: `${BREAKPOINTS.xl}px`,\n '2xl': `${BREAKPOINTS['2xl']}px`,\n}\n","import styled from '@emotion/styled'\n\nimport { CONTAINER_MAX_WIDTHS } from './constants'\nimport { mediaUp } from '../../lib'\n\nexport const StyledContainer = styled.div`\n width: 100%;\n\n ${mediaUp('sm')} {\n max-width: ${CONTAINER_MAX_WIDTHS.sm};\n }\n\n ${mediaUp('md')} {\n max-width: ${CONTAINER_MAX_WIDTHS.md};\n }\n\n ${mediaUp('lg')} {\n max-width: ${CONTAINER_MAX_WIDTHS.lg};\n }\n\n ${mediaUp('xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS.xl};\n }\n\n ${mediaUp('2xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS['2xl']};\n }\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledContainer } from './styled'\nimport { ContainerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('container')\nexport const Container = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ContainerProps>) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n </StyledContainer>\n)\n","export const formatDate = (date: Date, locale: string): string => {\n return new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'long' }).format(date)\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.span`\n display: inline-flex;\n align-items: baseline;\n gap: 5px;\n font-size: 13px;\n font-weight: 500;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledHash = styled.span`\n font-weight: 500;\n`\n\nexport const StyledSeparator = styled.span``\n","import { formatDate } from './helpers'\nimport { StyledContainer, StyledHash, StyledSeparator } from './styled'\nimport { DateRangeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('date-range')\n\nexport const DateRange = ({\n className,\n classnames,\n from,\n locale = 'en',\n presentLabel = 'Present Time',\n ref,\n to,\n ...rest\n}: DateRangeProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledHash className={css('hash', classnames?.hash)}>#</StyledHash>\n <span className={css('from', classnames?.from)}>{formatDate(from, locale)}</span>\n <StyledSeparator className={css('separator', classnames?.separator)}>&mdash;</StyledSeparator>\n <span className={css('to', classnames?.to)}>{to ? formatDate(to, locale) : presentLabel}</span>\n </StyledContainer>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $spacing: number\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n margin-top: ${(props) => props.$spacing}px;\n margin-bottom: ${(props) => props.$spacing}px;\n`\n\nexport const StyledLine = styled.div`\n flex: 1;\n height: 1px;\n background-color: ${COLORS.gray};\n`\n\nexport const StyledLabel = styled.span`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n white-space: nowrap;\n`\n","import { StyledContainer, StyledLabel, StyledLine } from './styled'\nimport { DividerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('divider')\n\nexport const Divider = ({\n children,\n className,\n classnames,\n ref,\n spacing = 8,\n ...rest\n}: DividerProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $spacing={spacing}>\n <StyledLine className={css('line', classnames?.line)} />\n {children && (\n <>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n <StyledLine className={css('line', classnames?.line)} />\n </>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DrawerPosition } from './types'\nimport { alpha, COLORS, KEYFRAMES, Z_INDEX } from '../../lib'\n\nconst slideIn = {\n left: KEYFRAMES.slideInLeft,\n right: KEYFRAMES.slideInRight,\n top: KEYFRAMES.slideInTop,\n bottom: KEYFRAMES.slideInBottom,\n}\n\ntype StyledContainerProps = {\n $animated: boolean\n $position: DrawerPosition\n $size: string\n}\n\nconst getPositionStyles = (position: DrawerPosition, size: string) => {\n switch (position) {\n case 'left':\n return `\n top: 0;\n left: 0;\n height: 100%;\n width: ${size};\n `\n case 'right':\n return `\n top: 0;\n right: 0;\n height: 100%;\n width: ${size};\n `\n case 'top':\n return `\n top: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n case 'bottom':\n return `\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n }\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n z-index: ${Z_INDEX.modal};\n background-color: ${COLORS['white']};\n box-shadow: 0 4px 24px ${alpha(COLORS['black'], 20)};\n ${(props) => getPositionStyles(props.$position, props.$size)}\n animation: ${(props) => slideIn[props.$position]} ${(props) =>\n props.$animated ? '0.05s' : '0s'} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContainer } from './styled'\nimport { DrawerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('drawer')\nexport const Drawer = ({\n animated,\n children,\n className,\n open,\n position = 'right',\n ref,\n size = '400px',\n ...rest\n}: DrawerProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animated={Boolean(animated)}\n $position={position}\n $size={size}\n >\n {children}\n </StyledContainer>,\n document.body,\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DropdownAlign, DropdownPosition } from './types'\nimport { COLORS, Z_INDEX } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-block;\n`\n\nexport const StyledTrigger = styled.div`\n cursor: pointer;\n`\n\nconst contentStyles = `\n min-width: 160px;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n`\n\nconst getTransform = ($open: boolean, $position: DropdownPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledContent = styled.div<{\n $align: DropdownAlign\n $open: boolean\n $position: DropdownPosition\n}>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${({ $align }) => ($align === 'left' ? 'left: 0;' : 'right: 0;')}\n z-index: ${Z_INDEX.dropdown};\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalContent = styled.div<{ $open: boolean; $position: DropdownPosition }>`\n position: fixed;\n z-index: ${Z_INDEX.portalDropdown};\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n","import { cloneElement, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContainer, StyledContent, StyledPortalContent, StyledTrigger } from './styled'\nimport { DropdownPosition, DropdownProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('dropdown')\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nconst DROPDOWN_GAP = 4\nconst DROPDOWN_MIN_HEIGHT = 100\n\nexport const Dropdown = ({\n align = 'left',\n autoClose = true,\n children,\n className,\n classnames,\n onClose,\n onOpen,\n open: controlledOpen,\n portalRenderNode,\n ref,\n trigger,\n ...rest\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DropdownPosition>('bottom')\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const contentHeight = contentRef.current?.offsetHeight ?? DROPDOWN_MIN_HEIGHT\n const contentWidth = contentRef.current?.offsetWidth ?? 160\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - DROPDOWN_GAP\n const spaceAbove = triggerRect.top - DROPDOWN_GAP\n\n const newPosition: DropdownPosition =\n spaceBelow < contentHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n let left: number\n if (align === 'left') {\n left = triggerRect.left\n } else {\n left = triggerRect.right - contentWidth\n }\n\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + DROPDOWN_GAP\n : triggerRect.top - contentHeight - DROPDOWN_GAP\n\n setPortalPosition({ top, left })\n }\n }, [align, portalRenderNode])\n\n const handleToggle = useCallback(() => {\n if (isControlled) {\n if (open) {\n onClose?.()\n } else {\n onOpen?.()\n }\n } else {\n setInternalOpen((prev) => {\n const next = !prev\n if (next) {\n onOpen?.()\n } else {\n onClose?.()\n }\n return next\n })\n }\n }, [isControlled, open, onClose, onOpen])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n const handleContentClick = useCallback(() => {\n if (autoClose) {\n handleClose()\n }\n }, [autoClose, handleClose])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideContent = contentRef.current && !contentRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideContent) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const content = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n onClick={handleContentClick}\n >\n {children}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n $align={align}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n onClick={handleContentClick}\n >\n {children}\n </StyledContent>\n )\n\n return (\n <StyledContainer {...rest} ref={ref ?? containerRef} className={css('container', className)}>\n <StyledTrigger\n ref={triggerRef}\n onClick={handleToggle}\n className={css('trigger', classnames?.trigger)}\n >\n {cloneElement(trigger)}\n </StyledTrigger>\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 40px 24px;\n`\n\nexport const StyledIconArea = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 200px;\n height: 200px;\n margin-bottom: 16px;\n`\n\nexport const StyledRings = styled.div`\n position: absolute;\n inset: 0;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n border-radius: 50%;\n border: 1px solid ${COLORS.gray};\n }\n\n &::before {\n inset: 30px;\n opacity: 0.8;\n }\n\n &::after {\n inset: 8px;\n opacity: 0.5;\n }\n`\n\nexport const StyledRingsOuter = styled.div`\n position: absolute;\n inset: 0;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n border-radius: 50%;\n border: 1px solid ${COLORS.gray};\n }\n\n &::before {\n inset: -14px;\n opacity: 0.3;\n }\n\n &::after {\n inset: 52px;\n }\n`\n\nexport const StyledIconBox = styled.div`\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS['iron-grey']};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.05),\n 0 1px 3px rgba(0, 0, 0, 0.1);\n`\n\nexport const StyledTitle = styled.h3`\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n max-width: 360px;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n`\n","import {\n StyledActions,\n StyledContainer,\n StyledDescription,\n StyledIconArea,\n StyledIconBox,\n StyledRings,\n StyledRingsOuter,\n StyledTitle,\n} from './styled'\nimport { type EmptyStateProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('empty-state')\n\nexport const EmptyState = ({\n actions,\n className,\n classnames,\n description,\n icon,\n ref,\n title,\n ...rest\n}: EmptyStateProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {icon && (\n <StyledIconArea className={css('icon', classnames?.icon)}>\n <StyledRingsOuter />\n <StyledRings />\n <StyledIconBox>{icon}</StyledIconBox>\n </StyledIconArea>\n )}\n\n <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>\n\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n\n {actions && (\n <StyledActions className={css('actions', classnames?.actions)}>{actions}</StyledActions>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nexport const StyledFieldRow = styled.div<{ $gap: number | string }>`\n display: grid;\n grid-template-rows: auto 1fr auto;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n column-gap: ${(props) => (typeof props.$gap === 'number' ? `${props.$gap}px` : props.$gap)};\n\n > * {\n grid-row: 1 / -1;\n display: grid;\n grid-template-rows: subgrid;\n gap: 2px;\n }\n\n > * > [class*='field-label'] {\n grid-row: 1;\n }\n\n > * > [class*='field-message'] {\n grid-row: 3;\n }\n\n > * > :not([class*='field-label']):not([class*='field-message']) {\n grid-row: 2;\n }\n`\n","import { StyledFieldRow } from './styled'\nimport { FieldRowProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-row')\nexport const FieldRow = ({ className, gap = 16, ref, ...rest }: FieldRowProps) => {\n return <StyledFieldRow {...rest} ref={ref} $gap={gap} className={css('container', className)} />\n}\n","export const formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 B'\n\n const units = ['B', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(1024))\n const size = bytes / Math.pow(1024, i)\n\n return `${size % 1 === 0 ? size : size.toFixed(1)} ${units[i]}`\n}\n\nexport const isFileTypeAccepted = (file: File, accept: string): boolean => {\n const acceptedTypes = accept.split(',').map((t) => t.trim())\n\n return acceptedTypes.some((type) => {\n if (type.startsWith('.')) {\n return file.name.toLowerCase().endsWith(type.toLowerCase())\n }\n\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.replace('/*', '/'))\n }\n\n return file.type === type\n })\n}\n","import styled from '@emotion/styled'\n\nimport { FileUploadItemStatus } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledFileUpload = styled.div`\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 16px;\n`\n\nexport const StyledDropzone = styled.div<{ $disabled: boolean; $dragOver: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px;\n border: 1.5px dashed ${({ $dragOver }) => ($dragOver ? COLORS.black : COLORS.gray)};\n border-radius: 12px;\n background-color: ${({ $dragOver }) => ($dragOver ? '#f9fafb' : 'transparent')};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n\n ${({ $disabled, $dragOver }) =>\n !$disabled &&\n !$dragOver &&\n `\n &:hover {\n border-color: ${COLORS['iron-grey']};\n background-color: #f9fafb;\n }\n `}\n`\n\nexport const StyledDropzoneIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n border: 1px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n\n & svg {\n width: 20px;\n height: 20px;\n }\n`\n\nexport const StyledDropzoneText = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n text-align: center;\n`\n\nexport const StyledDropzoneAction = styled.span`\n color: ${COLORS.black};\n font-weight: 600;\n cursor: pointer;\n`\n\nexport const StyledDropzoneHint = styled.div`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n text-align: center;\n`\n\nexport const StyledInput = styled.input`\n display: none;\n`\n\nexport const StyledList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\n// File item styles\n\nconst STATUS_BORDER: Record<FileUploadItemStatus, string> = {\n uploading: COLORS.gray,\n complete: COLORS.gray,\n failed: COLORS.red,\n}\n\nexport const StyledItem = styled.div<{ $status: FileUploadItemStatus }>`\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 14px;\n border: 1px solid ${({ $status }) => STATUS_BORDER[$status]};\n border-radius: 12px;\n transition: border-color 0.15s ease;\n`\n\nexport const StyledItemIcon = styled.div<{ $status: FileUploadItemStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n border-radius: 8px;\n background-color: ${({ $status }) => ($status === 'failed' ? '#fef2f2' : '#f9fafb')};\n color: ${({ $status }) => ($status === 'failed' ? COLORS.red : COLORS['iron-grey'])};\n\n & svg {\n width: 20px;\n height: 20px;\n }\n`\n\nexport const StyledItemContent = styled.div`\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledItemHeader = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledItemInfo = styled.div`\n min-width: 0;\n`\n\nexport const StyledItemName = styled.div`\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledItemSize = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledItemProgress = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 2px;\n`\n\nexport const StyledProgressTrack = styled.div`\n flex: 1;\n height: 8px;\n border-radius: 4px;\n background-color: ${COLORS.gray};\n overflow: hidden;\n`\n\nexport const StyledProgressBar = styled.div<{ $value: number; $status: FileUploadItemStatus }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: 4px;\n background-color: ${({ $status }) => ($status === 'failed' ? COLORS.red : COLORS.black)};\n transition: width 0.2s ease;\n`\n\nexport const StyledProgressText = styled.span`\n flex-shrink: 0;\n font-size: 14px;\n color: ${COLORS.black};\n font-weight: 500;\n min-width: 36px;\n text-align: right;\n`\n\nexport const StyledItemAction = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n background: transparent;\n color: ${COLORS['iron-grey']};\n cursor: pointer;\n border-radius: 4px;\n transition: color 0.15s ease;\n\n & svg {\n width: 16px;\n height: 16px;\n }\n\n &:hover {\n color: ${COLORS.black};\n }\n`\n\nexport const StyledRetryLink = styled.button`\n display: inline;\n padding: 0;\n border: none;\n background: transparent;\n color: ${COLORS.red};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n`\n\nexport const StyledStatusRow = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledCheckIcon = styled.span`\n display: inline-flex;\n color: ${COLORS.green};\n\n & svg {\n width: 16px;\n height: 16px;\n }\n`\n","import { useCallback, useRef, useState } from 'react'\n\nimport { isFileTypeAccepted } from './helpers'\nimport {\n StyledDropzone,\n StyledDropzoneAction,\n StyledDropzoneHint,\n StyledDropzoneIcon,\n StyledDropzoneText,\n StyledFileUpload,\n StyledInput,\n} from './styled'\nimport { FileUploadProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('file-upload')\n\nconst UploadIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n </svg>\n)\n\nexport const FileUpload = ({\n accept,\n children,\n className,\n classnames,\n description,\n disabled = false,\n hint,\n icon,\n maxSize,\n multiple = false,\n onChange,\n onReject,\n ref,\n ...rest\n}: FileUploadProps) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const [dragOver, setDragOver] = useState(false)\n\n const processFiles = useCallback(\n (fileList: FileList | null) => {\n if (!fileList || fileList.length === 0) return\n\n const files = Array.from(fileList)\n\n if (accept) {\n const rejected = files.filter((f) => !isFileTypeAccepted(f, accept))\n if (rejected.length > 0) {\n onReject?.(rejected, 'type')\n const accepted = files.filter((f) => isFileTypeAccepted(f, accept))\n if (accepted.length === 0) return\n onChange?.(accepted)\n return\n }\n }\n\n if (maxSize) {\n const rejected = files.filter((f) => f.size > maxSize)\n if (rejected.length > 0) {\n onReject?.(rejected, 'size')\n const accepted = files.filter((f) => f.size <= maxSize)\n if (accepted.length === 0) return\n onChange?.(accepted)\n return\n }\n }\n\n onChange?.(files)\n },\n [accept, maxSize, onChange, onReject],\n )\n\n const handleClick = () => {\n if (disabled) return\n inputRef.current?.click()\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n processFiles(e.target.files)\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) setDragOver(true)\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n if (!disabled) processFiles(e.dataTransfer.files)\n }\n\n return (\n <StyledFileUpload ref={ref} className={className} {...rest}>\n <StyledDropzone\n className={css('dropzone', classnames?.dropzone)}\n $disabled={disabled}\n $dragOver={dragOver}\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n >\n <StyledDropzoneIcon className={css('icon', classnames?.icon)}>\n {icon || <UploadIcon />}\n </StyledDropzoneIcon>\n\n <StyledDropzoneText className={css('text', classnames?.text)}>\n {description || (\n <span>\n <StyledDropzoneAction>Click to upload</StyledDropzoneAction> or drag and drop\n </span>\n )}\n </StyledDropzoneText>\n\n {hint && (\n <StyledDropzoneHint className={css('hint', classnames?.hint)}>{hint}</StyledDropzoneHint>\n )}\n </StyledDropzone>\n\n <StyledInput\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n tabIndex={-1}\n />\n\n {children}\n </StyledFileUpload>\n )\n}\n","import { formatFileSize } from './helpers'\nimport {\n StyledCheckIcon,\n StyledItem,\n StyledItemAction,\n StyledItemContent,\n StyledItemHeader,\n StyledItemIcon,\n StyledItemInfo,\n StyledItemName,\n StyledItemProgress,\n StyledItemSize,\n StyledProgressBar,\n StyledProgressText,\n StyledProgressTrack,\n StyledRetryLink,\n StyledStatusRow,\n} from './styled'\nimport { FileUploadItemProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('file-upload-item')\n\nconst DefaultFileIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n)\n\nconst CloseIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n)\n\nconst CheckIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nexport const FileUploadItem = ({\n name,\n size,\n status = 'uploading',\n progress = 0,\n icon,\n onRemove,\n onRetry,\n className,\n classnames,\n ref,\n}: FileUploadItemProps) => {\n return (\n <StyledItem ref={ref} className={css('item', className)} $status={status}>\n <StyledItemIcon className={css('icon', classnames?.icon)} $status={status}>\n {icon || <DefaultFileIcon />}\n </StyledItemIcon>\n\n <StyledItemContent>\n <StyledItemHeader>\n <StyledItemInfo className={css('info', classnames?.info)}>\n <StyledItemName className={css('name', classnames?.name)}>{name}</StyledItemName>\n <StyledItemSize className={css('size', classnames?.size)}>\n {formatFileSize(size)}\n </StyledItemSize>\n </StyledItemInfo>\n\n {onRemove && (\n <StyledItemAction\n className={css('action', classnames?.action)}\n onClick={onRemove}\n aria-label=\"Remove file\"\n type=\"button\"\n >\n <CloseIcon />\n </StyledItemAction>\n )}\n </StyledItemHeader>\n\n {status === 'uploading' && (\n <StyledItemProgress className={css('progress', classnames?.progress)}>\n <StyledProgressTrack>\n <StyledProgressBar $value={progress} $status={status} />\n </StyledProgressTrack>\n <StyledProgressText>{progress}%</StyledProgressText>\n </StyledItemProgress>\n )}\n\n {status === 'complete' && (\n <StyledStatusRow>\n <StyledCheckIcon>\n <CheckIcon />\n </StyledCheckIcon>\n Complete\n </StyledStatusRow>\n )}\n\n {status === 'failed' && (\n <StyledStatusRow>\n Upload failed.{' '}\n {onRetry && (\n <StyledRetryLink onClick={onRetry} type=\"button\">\n Try again\n </StyledRetryLink>\n )}\n </StyledStatusRow>\n )}\n </StyledItemContent>\n </StyledItem>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst base = `\n display: inline-flex;\n font-size: 14px;\n gap: 3px;\n color: ${COLORS['iron-grey']};\n transition: color 0.15s ease;\n text-decoration: none;\n`\n\nconst clickable = `\n cursor: pointer;\n &:hover {\n color: ${COLORS['steel-blue']};\n }\n`\n\nexport const StyledContainer = styled.span<{ $clickable: boolean }>`\n ${base}\n cursor: ${({ $clickable }) => ($clickable ? 'pointer' : 'default')};\n ${({ $clickable }) => $clickable && clickable}\n`\n\nexport const StyledLink = styled.a`\n ${base}\n ${clickable}\n`\n\nexport const StyledHash = styled.span``\n\nexport const StyledLabel = styled.span``\n","import { StyledContainer, StyledHash, StyledLabel, StyledLink } from './styled'\nimport { HashtagProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('hashtag')\n\nexport const Hashtag = ({\n children,\n className,\n classnames,\n href,\n onClick,\n ref,\n ...rest\n}: HashtagProps) => {\n const content = (\n <>\n <StyledHash className={css('hash', classnames?.hash)}>#</StyledHash>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n </>\n )\n\n if (href) {\n return (\n <StyledLink\n ref={ref as never}\n href={href}\n className={css('container', className)}\n onClick={onClick}\n >\n {content}\n </StyledLink>\n )\n }\n\n const clickable = Boolean(onClick)\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $clickable={clickable}\n onClick={onClick}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n >\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { HeadingLevel } from './types'\nimport { COLORS } from '../../lib'\n\nconst SIZE_MAP: Record<HeadingLevel, { fontSize: number; lineHeight: number }> = {\n 1: { fontSize: 32, lineHeight: 1.2 },\n 2: { fontSize: 24, lineHeight: 1.25 },\n 3: { fontSize: 18, lineHeight: 1.3 },\n 4: { fontSize: 16, lineHeight: 1.4 },\n 5: { fontSize: 14, lineHeight: 1.4 },\n 6: { fontSize: 12, lineHeight: 1.5 },\n}\n\ntype StyledHeadingProps = {\n $level: HeadingLevel\n}\n\nexport const StyledHeading = styled.h1<StyledHeadingProps>`\n margin: 0;\n font-weight: 700;\n color: ${COLORS.black};\n font-size: ${({ $level }) => SIZE_MAP[$level].fontSize}px;\n line-height: ${({ $level }) => SIZE_MAP[$level].lineHeight};\n`\n","import { StyledHeading } from './styled'\nimport { HeadingProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('heading')\n\nexport const Heading = ({ as, children, className, level = 3, ref, ...rest }: HeadingProps) => (\n <StyledHeading\n {...rest}\n as={`h${as ?? level}` as 'h1'}\n ref={ref}\n className={css('container', className)}\n $level={level}\n >\n {children}\n </StyledHeading>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst SIZES = {\n default: { box: 40, line: 22, weight: 2.5, gap: 6 },\n compact: { box: 32, line: 18, weight: 2, gap: 5 },\n} as const\n\nexport const StyledButton = styled.button<{ $size: 'default' | 'compact'; $disabled: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => SIZES[$size].box}px;\n height: ${({ $size }) => SIZES[$size].box}px;\n padding: 0;\n border: none;\n border-radius: 8px;\n background: transparent;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n outline: none;\n transition: background-color 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${COLORS.gray};\n }\n\n &:focus-visible {\n box-shadow: 0 0 0 2px ${COLORS['steel-blue']};\n }\n`\n\nexport const StyledLines = styled.div<{ $size: 'default' | 'compact'; $open: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ $size }) => SIZES[$size].gap}px;\n`\n\nexport const StyledLine = styled.span<{\n $size: 'default' | 'compact'\n $position: 'top' | 'middle' | 'bottom'\n $open: boolean\n}>`\n display: block;\n width: ${({ $size }) => SIZES[$size].line}px;\n height: ${({ $size }) => SIZES[$size].weight}px;\n background-color: ${COLORS.black};\n border-radius: 2px;\n transition:\n transform 0.3s ease,\n opacity 0.2s ease;\n transform-origin: center;\n\n ${({ $position, $size, $open }) => {\n const { gap, weight } = SIZES[$size]\n const offset = gap + weight\n\n if ($position === 'top') {\n return $open ? `transform: translateY(${offset}px) rotate(45deg);` : ''\n }\n\n if ($position === 'middle') {\n return $open ? 'opacity: 0;' : ''\n }\n\n if ($position === 'bottom') {\n return $open ? `transform: translateY(-${offset}px) rotate(-45deg);` : ''\n }\n }}\n`\n","import { useCallback, useState } from 'react'\n\nimport { StyledButton, StyledLine, StyledLines } from './styled'\nimport { type MenuButtonProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('menu-button')\n\nexport const MenuButton = ({\n className,\n classnames,\n defaultOpen = false,\n disabled = false,\n onOpenChange,\n open: controlledOpen,\n ref,\n size = 'default',\n ...rest\n}: MenuButtonProps) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleClick = useCallback(() => {\n if (disabled) return\n\n const next = !isOpen\n\n if (!isControlled) {\n setInternalOpen(next)\n }\n\n onOpenChange?.(next)\n }, [disabled, isOpen, isControlled, onOpenChange])\n\n return (\n <StyledButton\n {...rest}\n ref={ref}\n type=\"button\"\n disabled={disabled}\n aria-label={isOpen ? 'Close menu' : 'Open menu'}\n aria-expanded={isOpen}\n className={css('container', className)}\n $size={size}\n $disabled={disabled}\n onClick={handleClick}\n >\n <StyledLines $size={size} $open={isOpen}>\n <StyledLine\n $size={size}\n $position=\"top\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n <StyledLine\n $size={size}\n $position=\"middle\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n <StyledLine\n $size={size}\n $position=\"bottom\"\n $open={isOpen}\n className={css('line', classnames?.line)}\n />\n </StyledLines>\n </StyledButton>\n )\n}\n","import { NotificationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const DEFAULT_NOTIFICATION_DURATION = 5000\n\ntype NotificationVariantColors = {\n background: string\n text: string\n}\n\nexport const NOTIFICATION_VARIANT_COLORS: Record<NotificationVariant, NotificationVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n info: {\n background: COLORS['steel-blue'],\n text: COLORS.white,\n },\n}\n","import { createContext } from 'react'\n\nimport type { NotificationContextValue } from './types'\n\nexport const NotificationContext = createContext<NotificationContextValue | null>(null)\n","import { NOTIFICATION_VARIANT_COLORS } from './constants'\nimport { NotificationVariant } from './types'\n\nexport const getNotificationVariantColors = (variant: NotificationVariant) => {\n return NOTIFICATION_VARIANT_COLORS[variant] ?? NOTIFICATION_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getNotificationVariantColors } from './helpers'\nimport type { NotificationVariant } from './types'\nimport { KEYFRAMES } from '../../lib'\n\nexport const StyledNotificationContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 9999;\n pointer-events: none;\n`\n\ntype StyledNotificationBarProps = {\n $variant: NotificationVariant\n $isExiting: boolean\n}\n\nexport const StyledNotificationBar = styled.div<StyledNotificationBarProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n min-height: 44px;\n padding: 12px 48px;\n background-color: ${({ $variant }) => getNotificationVariantColors($variant).background};\n color: ${({ $variant }) => getNotificationVariantColors($variant).text};\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutTopFade : KEYFRAMES.slideInTopFade}\n 0.3s ease-out forwards;\n pointer-events: auto;\n`\n\nexport const StyledNotificationMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n`\n\nexport const StyledNotificationCloseButton = styled.button`\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledNotificationWrapper = styled.div`\n position: relative;\n`\n","import { useEffect, useState } from 'react'\n\nimport {\n StyledNotificationBar,\n StyledNotificationCloseButton,\n StyledNotificationMessage,\n StyledNotificationWrapper,\n} from './styled'\nimport type { Notification } from './types'\nimport { X } from '../../icons/Lucide'\n\ntype NotificationBarProps = {\n notification: Notification\n onRemove: () => void\n onAnimationEnd: () => void\n}\n\nexport const NotificationBar = ({\n notification,\n onRemove,\n onAnimationEnd,\n}: NotificationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n }\n\n const handleAnimationEnd = () => {\n if (isExiting) {\n onRemove()\n onAnimationEnd()\n }\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n handleRemove()\n }, notification.duration)\n\n return () => clearTimeout(timer)\n }, [notification.duration, notification.id])\n\n return (\n <StyledNotificationWrapper>\n <StyledNotificationBar\n $variant={notification.variant}\n $isExiting={isExiting}\n onAnimationEnd={handleAnimationEnd}\n >\n <StyledNotificationMessage>{notification.message}</StyledNotificationMessage>\n <StyledNotificationCloseButton onClick={handleRemove}>\n <X style={{ width: 18, height: 18 }} />\n </StyledNotificationCloseButton>\n </StyledNotificationBar>\n </StyledNotificationWrapper>\n )\n}\n","import type { NotificationAction, NotificationState } from './types'\n\nexport const notificationReducer = (\n state: NotificationState,\n action: NotificationAction,\n): NotificationState => {\n switch (action.type) {\n case 'ADD_NOTIFICATION': {\n const newNotification = action.payload\n\n // If no current notification, show immediately\n if (!state.current) {\n return {\n ...state,\n current: newNotification,\n }\n }\n\n // Otherwise add to queue\n return {\n ...state,\n queue: [...state.queue, newNotification],\n }\n }\n\n case 'REMOVE_CURRENT': {\n return {\n ...state,\n current: null,\n }\n }\n\n case 'SHOW_NEXT': {\n const nextNotification = state.queue[0]\n\n if (!nextNotification) {\n return state\n }\n\n return {\n current: nextNotification,\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialNotificationState: NotificationState = {\n current: null,\n queue: [],\n}\n","import { useCallback, useReducer, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { DEFAULT_NOTIFICATION_DURATION } from './constants'\nimport { NotificationContext } from './context'\nimport { NotificationBar } from './NotificationBar'\nimport { initialNotificationState, notificationReducer } from './reducer'\nimport { StyledNotificationContainer } from './styled'\nimport type { NotificationVariant } from './types'\n\nexport const NotificationProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(notificationReducer, initialNotificationState)\n\n const show = useCallback(\n (\n message: ReactNode,\n variant: NotificationVariant = 'default',\n duration: number = DEFAULT_NOTIFICATION_DURATION,\n ) => {\n const id = `notification-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_NOTIFICATION',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleRemove = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleShowNext = useCallback(() => {\n // Small delay before showing next notification\n setTimeout(() => {\n dispatch({ type: 'SHOW_NEXT' })\n }, 100)\n }, [])\n\n return (\n <NotificationContext.Provider value={{ show, hide }}>\n {children}\n <StyledNotificationContainer>\n {state.current && (\n <NotificationBar\n key={state.current.id}\n notification={state.current}\n onRemove={handleRemove}\n onAnimationEnd={handleShowNext}\n />\n )}\n </StyledNotificationContainer>\n </NotificationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotificationContext } from './context'\n\nexport const useNotification = () => {\n const context = useContext(NotificationContext)\n\n if (!context) {\n throw new Error('useNotification must be used within NotificationProvider')\n }\n\n return context\n}\n","import { createContext } from 'react'\n\nimport type { NotifyConfirmationContextValue } from './types'\n\nexport const NotifyConfirmationContext = createContext<NotifyConfirmationContextValue | null>(null)\n","export const DEFAULT_CONFIRM_LABEL = 'Agree'\nexport const DEFAULT_DISCARD_LABEL = 'Discard'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(100%);\n }\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n right: 24px;\n display: flex;\n flex-direction: column;\n max-width: 400px;\n padding: 16px 16px 0 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n overflow: hidden;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: 1000;\n`\n\nexport const StyledLabel = styled.p`\n margin: 0;\n font-weight: 600;\n font-size: 14px;\n color: ${COLORS.black};\n text-align: left;\n`\n\nexport const StyledDescription = styled.p`\n margin: 4px 0 0;\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n text-align: left;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n margin: 12px -16px 0;\n padding: 12px 16px;\n border-top: 1px solid ${COLORS.gray};\n background-color: rgba(0, 0, 0, 0.01);\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CONFIRM_LABEL, DEFAULT_DISCARD_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledDescription, StyledLabel } from './styled'\nimport type { NotifyConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype NotifyConfirmationBarProps = {\n confirmation: NotifyConfirmationState\n onDone: () => void\n}\n\nexport const NotifyConfirmationBar = ({ confirmation, onDone }: NotifyConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { label, description, onConfirm, onDiscard, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const discardLabel = options.discardLabel || DEFAULT_DISCARD_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleDiscard = useCallback(() => {\n if (isLoading) return\n exit(onDiscard)\n }, [exit, isLoading, onDiscard])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleDiscard()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleDiscard, isLoading])\n\n return (\n <StyledContainer $isExiting={isExiting}>\n <StyledLabel>{label}</StyledLabel>\n <StyledDescription>{description}</StyledDescription>\n <StyledActions>\n <Button variant=\"transparent\" size=\"compact\" onClick={handleDiscard} disabled={isLoading}>\n {discardLabel}\n </Button>\n <Button variant=\"system\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n )\n}\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { NotifyConfirmationContext } from './context'\nimport { NotifyConfirmationBar } from './NotifyConfirmationBar'\nimport type { NotifyConfirmationOptions, NotifyConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const NotifyConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<NotifyConfirmationState | null>(null)\n\n const show = useCallback(\n (\n label: ReactNode,\n description: ReactNode,\n onConfirm: () => void | Promise<void>,\n onDiscard?: () => void,\n options?: NotifyConfirmationOptions,\n ) => {\n setState({\n open: true,\n label,\n description,\n onConfirm,\n onDiscard: onDiscard || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <NotifyConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <NotifyConfirmationBar confirmation={state} onDone={hide} />}\n </NotifyConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotifyConfirmationContext } from './context'\n\nexport const useNotifyConfirmation = () => {\n const context = useContext(NotifyConfirmationContext)\n\n if (!context) {\n throw new Error('useNotifyConfirmation must be used within NotifyConfirmationProvider')\n }\n\n return context\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`\n\nexport const StyledLabel = styled.span`\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledDescription = styled.span`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n","import { StyledContainer, StyledDescription, StyledLabel } from './styled'\nimport { OverlineProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('overline')\n\nexport const Overline = ({\n children,\n className,\n classnames,\n description,\n ref,\n ...rest\n}: OverlineProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledContainer>\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n min-height: 100dvh;\n padding: 40px 24px;\n overflow: hidden;\n`\n\nexport const StyledGrid = styled.div<{ $size: number }>`\n position: absolute;\n inset: 0;\n background-image:\n linear-gradient(${COLORS.gray} 1px, transparent 1px),\n linear-gradient(90deg, ${COLORS.gray} 1px, transparent 1px);\n background-size: ${({ $size }) => `${$size}px ${$size}px`};\n mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 100%);\n -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 100%);\n pointer-events: none;\n`\n\nexport const StyledInner = styled.div`\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n max-width: 400px;\n`\n\nexport const StyledLogo = styled.div`\n margin-bottom: 32px;\n`\n\nexport const StyledIconBox = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS['iron-grey']};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.05),\n 0 1px 3px rgba(0, 0, 0, 0.1);\n margin-bottom: 24px;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 8px;\n margin-bottom: 32px;\n`\n\nexport const StyledTitle = styled.h1`\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 1.3;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n max-width: 360px;\n`\n\nexport const StyledContent = styled.div`\n width: 100%;\n`\n\nexport const StyledFooter = styled.div`\n margin-top: 32px;\n text-align: center;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledFooter,\n StyledGrid,\n StyledHeader,\n StyledIconBox,\n StyledInner,\n StyledLogo,\n StyledTitle,\n} from './styled'\nimport { type ShellScreenProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('shell-screen')\n\nexport const ShellScreen = ({\n children,\n className,\n classnames,\n description,\n footer,\n gridSize = 64,\n icon,\n logo,\n ref,\n title,\n ...rest\n}: ShellScreenProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledGrid $size={gridSize} className={css('grid', classnames?.grid)} />\n\n <StyledInner>\n {logo && <StyledLogo>{logo}</StyledLogo>}\n\n {icon && <StyledIconBox className={css('icon')}>{icon}</StyledIconBox>}\n\n {(title || description) && (\n <StyledHeader className={css('header', classnames?.header)}>\n {title && (\n <StyledTitle className={css('title', classnames?.title)}>{title}</StyledTitle>\n )}\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n\n {children && (\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n )}\n\n {footer && (\n <StyledFooter className={css('footer', classnames?.footer)}>{footer}</StyledFooter>\n )}\n </StyledInner>\n </StyledContainer>\n )\n}\n","export type PaginationRange = (number | 'dots')[]\n\nexport const getPaginationRange = (\n total: number,\n current: number,\n siblings: number,\n boundaries: number,\n): PaginationRange => {\n const totalNumbers = siblings * 2 + 3 + boundaries * 2\n\n if (totalNumbers >= total) {\n return Array.from({ length: total }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(current - siblings, boundaries + 1)\n const rightSiblingIndex = Math.min(current + siblings, total - boundaries)\n\n const showLeftDots = leftSiblingIndex > boundaries + 2\n const showRightDots = rightSiblingIndex < total - boundaries - 1\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n const leftRange = Array.from({ length: leftCount }, (_, i) => i + 1)\n const rightRange = Array.from({ length: boundaries }, (_, i) => total - boundaries + i + 1)\n\n return [...leftRange, 'dots' as const, ...rightRange]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n const leftRange = Array.from({ length: boundaries }, (_, i) => i + 1)\n const rightRange = Array.from({ length: rightCount }, (_, i) => total - rightCount + i + 1)\n\n return [...leftRange, 'dots' as const, ...rightRange]\n }\n\n const leftRange = Array.from({ length: boundaries }, (_, i) => i + 1)\n const middleRange = Array.from(\n { length: rightSiblingIndex - leftSiblingIndex + 1 },\n (_, i) => leftSiblingIndex + i,\n )\n const rightRange = Array.from({ length: boundaries }, (_, i) => total - boundaries + i + 1)\n\n return [...leftRange, 'dots' as const, ...middleRange, 'dots' as const, ...rightRange]\n}\n","import styled from '@emotion/styled'\n\nimport { PaginationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.nav`\n display: inline-flex;\n align-items: center;\n gap: 2px;\n position: relative;\n`\n\ntype StyledItemProps = {\n $active: boolean\n $variant: PaginationVariant\n $disabled: boolean\n}\n\nconst getItemStyles = (variant: PaginationVariant, active: boolean) => {\n if (!active) {\n switch (variant) {\n case 'bordered':\n return `\n background-color: transparent;\n border: 1px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n case 'light':\n return `\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n default:\n return `\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n &:hover { background-color: ${COLORS.gray}; }\n `\n }\n }\n\n return `\n color: ${COLORS.white};\n position: relative;\n z-index: 1;\n `\n}\n\nexport const StyledItem = styled.button<StyledItemProps>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n user-select: none;\n transition:\n background-color 0.15s ease,\n color 0.15s ease;\n ${({ $variant, $active }) => getItemStyles($variant, $active)}\n ${({ $disabled }) =>\n $disabled &&\n `\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n `}\n`\n\nexport const StyledCursor = styled.span`\n position: absolute;\n width: 36px;\n height: 36px;\n border-radius: 10px;\n background-color: ${COLORS.black};\n z-index: 0;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: none;\n`\n\nexport const StyledEllipsis = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n user-select: none;\n`\n\ntype StyledControlProps = {\n $disabled: boolean\n}\n\nexport const StyledControl = styled.button<StyledControlProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: 10px;\n background-color: transparent;\n color: ${COLORS['iron-grey']};\n font-size: 16px;\n cursor: pointer;\n user-select: none;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n }\n\n ${({ $disabled }) =>\n $disabled &&\n `\n opacity: 0.4;\n pointer-events: none;\n cursor: default;\n `}\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { getPaginationRange } from './helpers'\nimport { StyledContainer, StyledControl, StyledCursor, StyledEllipsis, StyledItem } from './styled'\nimport { PaginationProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('pagination')\n\nexport const Pagination = ({\n boundaries = 1,\n className,\n classnames,\n disabled = false,\n initialPage = 1,\n loop = false,\n onChange,\n page: controlledPage,\n ref,\n showControls = false,\n siblings = 1,\n total,\n variant = 'flat',\n ...rest\n}: PaginationProps) => {\n const isControlled = controlledPage !== undefined\n const [internalPage, setInternalPage] = useState(initialPage)\n const currentPage = isControlled ? controlledPage : internalPage\n\n const itemsRef = useRef<Map<number, HTMLButtonElement>>(new Map())\n const containerRef = useRef<HTMLElement>(null)\n const cursorRef = useRef<HTMLSpanElement>(null)\n\n const range = getPaginationRange(total, currentPage, siblings, boundaries)\n\n const setPage = useCallback(\n (newPage: number) => {\n if (!isControlled) {\n setInternalPage(newPage)\n }\n\n onChange?.(newPage)\n },\n [isControlled, onChange],\n )\n\n const handlePageClick = useCallback(\n (page: number) => {\n if (page < 1 || page > total || page === currentPage) return\n setPage(page)\n },\n [currentPage, setPage, total],\n )\n\n const handlePrev = useCallback(() => {\n if (currentPage <= 1) {\n if (loop) setPage(total)\n return\n }\n\n setPage(currentPage - 1)\n }, [currentPage, loop, setPage, total])\n\n const handleNext = useCallback(() => {\n if (currentPage >= total) {\n if (loop) setPage(1)\n return\n }\n\n setPage(currentPage + 1)\n }, [currentPage, loop, setPage, total])\n\n useEffect(() => {\n const cursor = cursorRef.current\n const container = containerRef.current\n const itemEl = itemsRef.current.get(currentPage)\n\n if (!cursor || !container || !itemEl) return\n\n const containerRect = container.getBoundingClientRect()\n const itemRect = itemEl.getBoundingClientRect()\n const x = itemRect.left - containerRect.left\n\n cursor.style.transform = `translateX(${x}px)`\n }, [currentPage, range])\n\n return (\n <StyledContainer {...rest} ref={ref || containerRef} className={css('container', className)}>\n <StyledCursor ref={cursorRef} className={css('cursor', classnames?.cursor)} />\n {showControls && (\n <StyledControl\n className={css('controls', classnames?.controls)}\n $disabled={disabled || (!loop && currentPage <= 1)}\n onClick={handlePrev}\n aria-label=\"Previous page\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </StyledControl>\n )}\n {range.map((item, index) =>\n item === 'dots' ? (\n <StyledEllipsis key={`dots-${index}`} className={css('ellipsis', classnames?.ellipsis)}>\n ...\n </StyledEllipsis>\n ) : (\n <StyledItem\n key={item}\n ref={(el) => {\n if (el) {\n itemsRef.current.set(item, el)\n } else {\n itemsRef.current.delete(item)\n }\n }}\n className={css('item', classnames?.item)}\n $active={item === currentPage}\n $variant={variant}\n $disabled={disabled}\n onClick={() => handlePageClick(item)}\n aria-label={`Page ${item}`}\n aria-current={item === currentPage ? 'page' : undefined}\n >\n {item}\n </StyledItem>\n ),\n )}\n {showControls && (\n <StyledControl\n className={css('controls', classnames?.controls)}\n $disabled={disabled || (!loop && currentPage >= total)}\n onClick={handleNext}\n aria-label=\"Next page\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </StyledControl>\n )}\n </StyledContainer>\n )\n}\n","import { PanelVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype PanelVariantColors = {\n background: string\n border: string\n title: string\n description: string\n}\n\nexport const PANEL_VARIANT_COLORS: Record<PanelVariant, PanelVariantColors> = {\n light: {\n background: COLORS.white,\n border: alpha(COLORS.black, 30),\n title: COLORS.black,\n description: COLORS['iron-grey'],\n },\n dark: {\n background: alpha(COLORS.white, 5),\n border: alpha(COLORS.white, 30),\n title: COLORS.white,\n description: '#9ca3af',\n },\n}\n","import { PANEL_VARIANT_COLORS } from './constants'\nimport { PanelVariant } from './types'\n\nexport const getPanelVariantColors = (variant: PanelVariant) => {\n return PANEL_VARIANT_COLORS[variant] ?? PANEL_VARIANT_COLORS['light']\n}\n","import styled from '@emotion/styled'\n\nimport { getPanelVariantColors } from './helpers'\nimport { PanelVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $variant: PanelVariant\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px;\n border: 1px dashed ${({ $variant }) => getPanelVariantColors($variant).border};\n border-radius: 16px;\n background-color: ${({ $variant }) => getPanelVariantColors($variant).background};\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n`\n\nexport const StyledLabel = styled.div`\n position: absolute;\n top: -1px;\n right: 12px;\n padding: 4px 12px;\n border-radius: 0 0 8px 8px;\n background-color: ${COLORS.black};\n color: ${COLORS.white};\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n line-height: 1.4;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\ntype StyledTitleProps = {\n $variant: PanelVariant\n}\n\nexport const StyledTitle = styled.div<StyledTitleProps>`\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n color: ${({ $variant }) => getPanelVariantColors($variant).title};\n`\n\ntype StyledDescriptionProps = {\n $variant: PanelVariant\n}\n\nexport const StyledDescription = styled.div<StyledDescriptionProps>`\n font-size: 14px;\n line-height: 1.5;\n color: ${({ $variant }) => getPanelVariantColors($variant).description};\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledHeader,\n StyledLabel,\n StyledTitle,\n} from './styled'\nimport { PanelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('panel')\n\nexport const Panel = ({\n children,\n className,\n classnames,\n description,\n label,\n ref,\n title,\n variant = 'light',\n ...rest\n}: PanelProps) => {\n const hasHeader = title || description\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {label && <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>}\n {hasHeader && (\n <StyledHeader>\n {title && (\n <StyledTitle className={css('title', classnames?.title)} $variant={variant}>\n {title}\n </StyledTitle>\n )}\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n </StyledContainer>\n )\n}\n","export const DEFAULT_PHRASES = [\n // Космос и запуск\n 'Готовим стартовый стол к запуску',\n 'Прогреваем фотонные двигатели',\n 'Запрашиваем разрешение у ЦУПа',\n 'Проверяем герметичность шлюзов',\n 'Выводим реактор на рабочую мощность',\n 'Ожидаем окно для маневра',\n 'Проверяем целостность теплозащиты',\n 'Разворачиваем солнечные паруса',\n 'Активируем систему навигации',\n 'Инициализируем бортовой компьютер',\n 'Рассчитываем вектор ускорения',\n 'Продуваем топливные магистрали',\n 'Тестируем аварийную систему спасения',\n 'Стабилизируем гироскопы на платформе',\n 'Загружаем полетное задание в память',\n\n // Навигация и телеметрия\n 'Синхронизируем орбитальные часы',\n 'Рассчитываем траекторию кометы',\n 'Настраиваем антенну дальней связи',\n 'Считываем телеметрию со спутника',\n 'Корректируем азимут наведения',\n 'Фиксируем координаты черной дыры',\n 'Загружаем карту звездного неба',\n 'Калибруем инерциальную платформу',\n 'Принимаем эфемериды от станции',\n 'Уточняем параметры орбиты',\n 'Привязываемся к опорным звездам',\n 'Строим модель гравитационного поля',\n\n // Исследования и анализ\n 'Анализируем метрики далеких звезд',\n 'Ждем прохождения первого нейтрино',\n 'Декодируем сигналы из туманности',\n 'Замеряем гравитационные волны',\n 'Отправляем зонд в пояс астероидов',\n 'Перехватываем межзвездные частицы',\n 'Обрабатываем данные телескопа',\n 'Анализируем спектр далекой звезды',\n 'Собираем пробы лунного грунта',\n 'Сканируем поверхность экзопланеты',\n 'Измеряем реликтовое излучение',\n 'Картографируем магнитные аномалии',\n 'Исследуем состав колец Сатурна',\n 'Регистрируем вспышку сверхновой',\n 'Фиксируем рентгеновский пульсар',\n 'Моделируем столкновение галактик',\n 'Наблюдаем транзит далекой планеты',\n\n // Технологии и вычисления\n 'Калибруем квантовый компилятор',\n 'Переводим данные в гиперпространство',\n 'Синтезируем топливо из вакуума',\n 'Компилируем нейронную матрицу',\n 'Оптимизируем квантовые вентили',\n 'Разматываем кубиты суперпозиции',\n 'Интерполируем пространство решений',\n 'Нормализуем тензорное поле',\n 'Индексируем базу знаний вселенной',\n 'Дефрагментируем пространство-время',\n 'Хешируем координаты червоточины',\n 'Верифицируем квантовую запутанность',\n\n // Связь и коммуникации\n 'Устанавливаем связь с Вояджером',\n 'Расшифровываем послание с Проксимы',\n 'Ретранслируем сигнал через Юпитер',\n 'Пингуем ближайший ретранслятор',\n 'Буферизуем поток тахионных данных',\n 'Шифруем канал субпространственной связи',\n 'Декомпрессируем архив звездных карт',\n\n // Бортовые системы\n 'Проверяем давление в отсеках',\n 'Балансируем нагрузку на генераторы',\n 'Охлаждаем сверхпроводящие магниты',\n 'Калибруем датчики внешней среды',\n 'Перезагружаем модуль жизнеобеспечения',\n 'Тестируем маневровые двигатели',\n 'Обновляем прошивку скафандров',\n 'Юстируем зеркала главного телескопа',\n 'Переключаем контур охлаждения',\n 'Диагностируем плазменный щит',\n 'Затягиваем болты на обшивке',\n]\n\nexport const DEFAULT_INTERVAL = 3500\n","import { DEFAULT_INTERVAL, DEFAULT_PHRASES } from './constants'\n\nexport const getPhrases = (phrases?: string[]) => {\n return phrases && phrases.length > 0 ? phrases : DEFAULT_PHRASES\n}\n\nexport const getInterval = (interval?: number) => {\n return interval && interval > 0 ? interval : DEFAULT_INTERVAL\n}\n\nexport const getBoardWidth = (phrases: string[]) => {\n return Math.max(...phrases.map((p) => p.length))\n}\n\nexport const padPhrase = (phrase: string, width: number) => {\n const padding = Math.floor((width - phrase.length) / 2)\n return phrase.padStart(phrase.length + padding).padEnd(width)\n}\n\nexport const createShuffledQueue = (length: number, excludeIndex?: number): number[] => {\n const indices = Array.from({ length }, (_, i) => i)\n\n for (let i = indices.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[indices[i], indices[j]] = [indices[j]!, indices[i]!]\n }\n\n if (excludeIndex !== undefined && indices[0] === excludeIndex) {\n const swapWith = 1 + Math.floor(Math.random() * (indices.length - 1))\n ;[indices[0], indices[swapWith]] = [indices[swapWith]!, indices[0]!]\n }\n\n return indices\n}\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst orbit1 = keyframes`\n from { transform: rotate(0deg) translateX(20px) rotate(0deg); }\n to { transform: rotate(360deg) translateX(20px) rotate(-360deg); }\n`\n\nconst orbit2 = keyframes`\n from { transform: rotate(120deg) translateX(14px) rotate(-120deg); }\n to { transform: rotate(480deg) translateX(14px) rotate(-480deg); }\n`\n\nconst orbit3 = keyframes`\n from { transform: rotate(240deg) translateX(26px) rotate(-240deg); }\n to { transform: rotate(600deg) translateX(26px) rotate(-600deg); }\n`\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n gap: 28px;\n`\n\nexport const StyledIndicator = styled.div`\n position: relative;\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nexport const StyledOrbitDot = styled.div<{ $index: number }>`\n position: absolute;\n width: ${(props) => (props.$index === 0 ? 6 : props.$index === 1 ? 4 : 3)}px;\n height: ${(props) => (props.$index === 0 ? 6 : props.$index === 1 ? 4 : 3)}px;\n border-radius: 50%;\n background: ${COLORS['black']};\n opacity: ${(props) => (props.$index === 0 ? 1 : props.$index === 1 ? 0.6 : 0.35)};\n animation: ${(props) => (props.$index === 0 ? orbit1 : props.$index === 1 ? orbit2 : orbit3)}\n ${(props) => (props.$index === 0 ? 3 : props.$index === 1 ? 2 : 4.5)}s linear infinite;\n`\n\nexport const StyledScreenReaderOnly = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledDescription = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n line-height: 1.5;\n text-align: center;\n max-width: 360px;\n`\n","export const CYCLE_TICK_MS = 40\n\nexport const SETTLE_BASE_MS = 200\n\nexport const SETTLE_STAGGER_MS = 30\n\nexport const SHUFFLE_ALPHABET =\n 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯабвгдежзиклмнопрстуфхцчшщэюя' +\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +\n '0123456789'\n","import { CYCLE_TICK_MS, SETTLE_BASE_MS, SETTLE_STAGGER_MS, SHUFFLE_ALPHABET } from './constants'\n\nexport const randomChar = () => {\n return SHUFFLE_ALPHABET[Math.floor(Math.random() * SHUFFLE_ALPHABET.length)]!\n}\n\nexport const getSettleTime = (index: number) => {\n return SETTLE_BASE_MS + index * SETTLE_STAGGER_MS\n}\n\nexport const getCycleTick = () => CYCLE_TICK_MS\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n justify-content: center;\n white-space: pre;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'JetBrains Mono', monospace;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.6;\n color: ${COLORS['black']};\n min-height: 1.6em;\n`\n\nexport const StyledChar = styled.span`\n display: inline-block;\n width: 0.65em;\n text-align: center;\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { getCycleTick, getSettleTime, randomChar } from './helpers'\nimport { StyledChar, StyledContainer } from './styled'\nimport type { SplitFlapTextProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('split-flap-text')\n\nexport const SplitFlapText = ({ className, ref, text, ...rest }: SplitFlapTextProps) => {\n const [displayChars, setDisplayChars] = useState<string[]>(() => text.split(''))\n const prevTextRef = useRef(text)\n\n const settledRef = useRef<boolean[]>([])\n const cycleTimerRef = useRef<ReturnType<typeof setInterval>>(null)\n const settleTimersRef = useRef<ReturnType<typeof setTimeout>[]>([])\n const targetCharsRef = useRef<string[]>(text.split(''))\n\n const clearTimers = useCallback(() => {\n if (cycleTimerRef.current) {\n clearInterval(cycleTimerRef.current)\n cycleTimerRef.current = null\n }\n for (const t of settleTimersRef.current) {\n clearTimeout(t)\n }\n settleTimersRef.current = []\n }, [])\n\n const startFlip = useCallback(\n (targetText: string[]) => {\n clearTimers()\n\n targetCharsRef.current = targetText\n settledRef.current = targetText.map((ch) => ch === ' ')\n\n cycleTimerRef.current = setInterval(() => {\n setDisplayChars((prev) =>\n prev.map((_, i) => {\n if (settledRef.current[i]) return targetCharsRef.current[i]!\n return randomChar()\n }),\n )\n }, getCycleTick())\n\n settleTimersRef.current = targetText.map((_, i) => {\n return setTimeout(() => {\n settledRef.current[i] = true\n\n if (settledRef.current.every(Boolean)) {\n if (cycleTimerRef.current) {\n clearInterval(cycleTimerRef.current)\n cycleTimerRef.current = null\n }\n setDisplayChars([...targetCharsRef.current])\n }\n }, getSettleTime(i))\n })\n },\n [clearTimers],\n )\n\n useEffect(() => {\n if (text !== prevTextRef.current) {\n prevTextRef.current = text\n startFlip(text.split(''))\n }\n }, [text, startFlip])\n\n useEffect(() => {\n return clearTimers\n }, [clearTimers])\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} aria-hidden=\"true\">\n {displayChars.map((char, i) => (\n <StyledChar key={i}>{char === ' ' ? '\\u00A0' : char}</StyledChar>\n ))}\n </StyledContainer>\n )\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { createShuffledQueue, getBoardWidth, getInterval, getPhrases, padPhrase } from './helpers'\nimport {\n StyledContainer,\n StyledDescription,\n StyledIndicator,\n StyledOrbitDot,\n StyledScreenReaderOnly,\n} from './styled'\nimport type { PendingScreenProps } from './types'\nimport { SplitFlapText } from '../SplitFlapText'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('pending-screen')\n\nexport const PendingScreen = ({\n className,\n classnames,\n description,\n interval,\n phrases: phrasesProp,\n ref,\n ...rest\n}: PendingScreenProps) => {\n const resolvedPhrases = useMemo(() => getPhrases(phrasesProp), [phrasesProp])\n const resolvedInterval = useMemo(() => getInterval(interval), [interval])\n const boardWidth = useMemo(() => getBoardWidth(resolvedPhrases), [resolvedPhrases])\n\n const queueRef = useRef<number[]>([])\n const queuePosRef = useRef(0)\n\n const getNextIndex = useCallback(\n (currentIndex: number) => {\n if (queuePosRef.current >= queueRef.current.length) {\n queueRef.current = createShuffledQueue(resolvedPhrases.length, currentIndex)\n queuePosRef.current = 0\n }\n return queueRef.current[queuePosRef.current++]!\n },\n [resolvedPhrases.length],\n )\n\n const [currentIndex, setCurrentIndex] = useState(() => {\n queueRef.current = createShuffledQueue(resolvedPhrases.length)\n const first = queueRef.current[0]!\n queuePosRef.current = 1\n return first\n })\n\n const phraseTimerRef = useRef<ReturnType<typeof setInterval>>(null)\n\n const advance = useCallback(() => {\n setCurrentIndex((prev) => getNextIndex(prev))\n }, [getNextIndex])\n\n useEffect(() => {\n phraseTimerRef.current = setInterval(advance, resolvedInterval)\n return () => {\n if (phraseTimerRef.current) clearInterval(phraseTimerRef.current)\n }\n }, [advance, resolvedInterval])\n\n const currentPhrase = resolvedPhrases[currentIndex]!\n const paddedText = padPhrase(currentPhrase, boardWidth)\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"status\">\n <StyledIndicator className={css('indicator', classnames?.indicator)}>\n <StyledOrbitDot $index={0} />\n <StyledOrbitDot $index={1} />\n <StyledOrbitDot $index={2} />\n </StyledIndicator>\n\n <SplitFlapText text={paddedText} className={css('board', classnames?.board)} />\n\n <StyledScreenReaderOnly>{currentPhrase}</StyledScreenReaderOnly>\n\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledContainer>\n )\n}\n","import { VacanoComponentSize } from '../../lib'\n\nexport const PROGRESS_SIZE_PROPS: Record<VacanoComponentSize, { height: number; radius: number }> =\n {\n compact: {\n height: 4,\n radius: 2,\n },\n default: {\n height: 8,\n radius: 4,\n },\n }\n","import styled from '@emotion/styled'\n\nimport { PROGRESS_SIZE_PROPS } from './constants'\nimport { COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledTrack = styled.div<{ $size: VacanoComponentSize }>`\n width: 100%;\n height: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].height}px;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS['gray']};\n overflow: hidden;\n`\n\nexport const StyledBar = styled.div<{ $size: VacanoComponentSize; $value: number }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS.black};\n transition: width 0.2s ease;\n`\n","import { StyledBar, StyledTrack } from './styled'\nimport { ProgressProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('progress')\n\nexport const Progress = ({\n value,\n size = 'default',\n className,\n classnames,\n ref,\n ...rest\n}: ProgressProps) => {\n return (\n <StyledTrack\n {...rest}\n ref={ref}\n $size={size}\n className={css('track', className, classnames?.track)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <StyledBar $size={size} $value={value} className={css('bar', classnames?.bar)} />\n </StyledTrack>\n )\n}\n","import { createContext } from 'react'\n\nimport type { SaveProgressContextValue } from './types'\n\nexport const SaveProgressContext = createContext<SaveProgressContextValue | null>(null)\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: fixed;\n bottom: 24px;\n right: 24px;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background-color: ${alpha(COLORS['iron-grey'], 10)};\n backdrop-filter: blur(8px);\n border-radius: 24px;\n animation: ${KEYFRAMES.fadeIn} 0.2s ease-out;\n pointer-events: none;\n color: ${COLORS['black']};\n`\n\nexport const StyledMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n`\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { SaveProgressContext } from './context'\nimport { StyledContainer, StyledMessage } from './styled'\nimport type { SaveProgressProviderProps } from './types'\nimport { Spinner } from '../Spinner'\n\nexport const SaveProgressProvider = ({\n children,\n defaultMessage = 'Saving',\n}: SaveProgressProviderProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const [message, setMessage] = useState(defaultMessage)\n\n const show = useCallback(\n (customMessage?: string) => {\n setMessage(customMessage ?? defaultMessage)\n setIsVisible(true)\n },\n [defaultMessage],\n )\n\n const hide = useCallback(() => {\n setIsVisible(false)\n }, [])\n\n const value = useMemo(() => ({ isVisible, show, hide }), [isVisible, show, hide])\n\n return (\n <SaveProgressContext.Provider value={value}>\n {children}\n {isVisible && (\n <StyledContainer>\n <Spinner size=\"sm\" />\n <StyledMessage>{message}</StyledMessage>\n </StyledContainer>\n )}\n </SaveProgressContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { SaveProgressContext } from './context'\n\nexport const useSaveProgress = () => {\n const context = useContext(SaveProgressContext)\n\n if (!context) {\n throw new Error('useSaveProgress must be used within SaveProgressProvider')\n }\n\n return context\n}\n","import { css, keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { SkeletonAnimation, SkeletonRadius } from './types'\n\nconst pulse = keyframes`\n 0% { opacity: 1; }\n 50% { opacity: 0.4; }\n 100% { opacity: 1; }\n`\n\nconst wave = keyframes`\n 0% { transform: translateX(-100%); }\n 60% { transform: translateX(100%); }\n 100% { transform: translateX(100%); }\n`\n\nconst pulseStyle = css`\n animation: ${pulse} 1.5s ease-in-out infinite;\n`\n\nconst waveStyle = css`\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.5), transparent);\n animation: ${wave} 1.6s linear infinite;\n }\n`\n\nconst ANIMATION_STYLES: Record<SkeletonAnimation, ReturnType<typeof css> | null> = {\n pulse: pulseStyle,\n wave: waveStyle,\n none: null,\n}\n\nconst RADIUS_MAP: Record<SkeletonRadius, string> = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n full: '9999px',\n}\n\ntype StyledSkeletonProps = {\n $width: number | string\n $height: number | string\n $radius: SkeletonRadius\n $animation: SkeletonAnimation\n $circle: boolean\n}\n\nconst resolveSize = (value: number | string) => (typeof value === 'number' ? `${value}px` : value)\n\nexport const StyledSkeleton = styled.div<StyledSkeletonProps>`\n position: relative;\n overflow: hidden;\n background-color: #e5e7eb;\n width: ${({ $width, $circle, $height }) =>\n $circle ? resolveSize($height) : resolveSize($width)};\n height: ${({ $height }) => resolveSize($height)};\n border-radius: ${({ $circle, $radius }) => ($circle ? '50%' : RADIUS_MAP[$radius])};\n ${({ $animation }) => ANIMATION_STYLES[$animation]}\n`\n","import { StyledSkeleton } from './styled'\nimport { SkeletonProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('skeleton')\n\nexport const Skeleton = ({\n animation = 'pulse',\n circle = false,\n className,\n height = 16,\n radius = 'md',\n ref,\n width = '100%',\n ...rest\n}: SkeletonProps) => (\n <StyledSkeleton\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animation={animation}\n $circle={circle}\n $height={height}\n $radius={radius}\n $width={width}\n />\n)\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.span`\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n font-size: 13px;\n color: #666;\n`\n\nexport const StyledValue = styled.strong`\n font-weight: 700;\n color: ${COLORS.black};\n`\n\nexport const StyledLabel = styled.span``\n","import { StyledContainer, StyledLabel, StyledValue } from './styled'\nimport { StatProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stat')\n\nexport const Stat = ({ className, classnames, label, ref, value, ...rest }: StatProps) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledValue className={css('value', classnames?.value)}>{value}</StyledValue>\n <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>\n </StyledContainer>\n)\n","import { css, keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { type StepLogStatus } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n overflow: hidden;\n`\n\nexport const StyledStep = styled.div`\n &:not(:last-child) {\n border-bottom: 1px solid ${COLORS.gray};\n }\n`\n\ntype StyledHeaderProps = {\n $expanded: boolean\n $interactive: boolean\n}\n\nexport const StyledHeader = styled.button<StyledHeaderProps>`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 10px 16px;\n background-color: ${({ $expanded }) => ($expanded ? alpha(COLORS.black, 3) : 'transparent')};\n border: none;\n cursor: ${({ $interactive }) => ($interactive ? 'pointer' : 'default')};\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n text-align: left;\n outline: none;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${({ $interactive }) =>\n $interactive ? alpha(COLORS.black, 3) : 'transparent'};\n }\n`\n\nexport const StyledChevron = styled.span<{ $expanded: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${COLORS['iron-grey']};\n transition: transform 0.15s ease;\n transform: rotate(${({ $expanded }) => ($expanded ? '90deg' : '0deg')});\n`\n\nexport const StyledChevronPlaceholder = styled.span`\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n`\n\nconst STATUS_COLORS: Record<StepLogStatus, string> = {\n success: COLORS.green,\n error: COLORS.red,\n running: COLORS['steel-blue'],\n pending: COLORS.gray,\n}\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`\n\nconst runningStyle = css`\n animation: ${spin} 1s linear infinite;\n`\n\nexport const StyledStatusIcon = styled.span<{ $status: StepLogStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${({ $status }) => STATUS_COLORS[$status]};\n ${({ $status }) => $status === 'running' && runningStyle}\n`\n\nexport const StyledTitle = styled.span<{ $muted: boolean }>`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ${({ $muted }) => ($muted ? COLORS['iron-grey'] : COLORS.black)};\n`\n\nexport const StyledDuration = styled.span`\n flex-shrink: 0;\n font-size: 12px;\n font-weight: 400;\n color: ${COLORS['iron-grey']};\n font-variant-numeric: tabular-nums;\n`\n\nexport const StyledLogWrapper = styled.div<{ $expanded: boolean }>`\n display: grid;\n grid-template-rows: ${({ $expanded }) => ($expanded ? '1fr' : '0fr')};\n transition: grid-template-rows 0.15s ease;\n`\n\nexport const StyledLogInner = styled.div`\n overflow: hidden;\n`\n\nexport const StyledLog = styled.div`\n padding: 8px 0;\n background-color: ${COLORS.white};\n border-top: 1px solid ${COLORS.gray};\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 12px;\n line-height: 20px;\n`\n\nexport const StyledLogLine = styled.div`\n display: flex;\n padding: 0 16px;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 3)};\n }\n`\n\nexport const StyledLineNumber = styled.span`\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n padding-right: 16px;\n color: ${COLORS['iron-grey']};\n user-select: none;\n`\n\nexport const StyledLineText = styled.span`\n flex: 1;\n min-width: 0;\n white-space: pre;\n color: ${COLORS.black};\n`\n","import { useCallback, useState } from 'react'\n\nimport {\n StyledChevron,\n StyledChevronPlaceholder,\n StyledContainer,\n StyledDuration,\n StyledHeader,\n StyledLineNumber,\n StyledLineText,\n StyledLog,\n StyledLogInner,\n StyledLogLine,\n StyledLogWrapper,\n StyledStatusIcon,\n StyledStep,\n StyledTitle,\n} from './styled'\nimport { type StepLogProps, type StepLogStatus } from './types'\nimport { ChevronRight } from '../../icons/Lucide/components/ChevronRight'\nimport { Circle } from '../../icons/Lucide/components/Circle'\nimport { CircleCheck } from '../../icons/Lucide/components/CircleCheck'\nimport { CircleX } from '../../icons/Lucide/components/CircleX'\nimport { LoaderCircle } from '../../icons/Lucide/components/LoaderCircle'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('step-log')\n\nconst STATUS_ICONS: Record<StepLogStatus, typeof CircleCheck> = {\n success: CircleCheck,\n error: CircleX,\n running: LoaderCircle,\n pending: Circle,\n}\n\nexport const StepLog = ({\n className,\n classnames,\n defaultValue = [],\n onChange,\n ref,\n steps,\n value: controlledValue,\n ...rest\n}: StepLogProps) => {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue)\n\n const isControlled = controlledValue !== undefined\n const expanded = isControlled ? controlledValue : internalValue\n\n const toggle = useCallback(\n (stepValue: string) => {\n const isExpanded = expanded.includes(stepValue)\n const next = isExpanded ? expanded.filter((v) => v !== stepValue) : [...expanded, stepValue]\n\n if (!isControlled) {\n setInternalValue(next)\n }\n\n onChange?.(next)\n },\n [expanded, isControlled, onChange],\n )\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {steps.map((step) => {\n const isExpanded = expanded.includes(step.value)\n const status = step.status ?? 'pending'\n const isInteractive = status !== 'pending'\n const hasLines = step.lines && step.lines.length > 0\n const StatusIcon = STATUS_ICONS[status]\n\n return (\n <StyledStep key={step.value} className={css('step', classnames?.step)}>\n <StyledHeader\n type=\"button\"\n $expanded={isExpanded}\n $interactive={isInteractive}\n onClick={isInteractive ? () => toggle(step.value) : undefined}\n className={css('header', classnames?.header)}\n >\n {isInteractive ? (\n <StyledChevron $expanded={isExpanded}>\n <ChevronRight size={14} />\n </StyledChevron>\n ) : (\n <StyledChevronPlaceholder />\n )}\n\n <StyledStatusIcon $status={status}>\n <StatusIcon size={16} />\n </StyledStatusIcon>\n\n <StyledTitle $muted={status === 'pending'}>{step.title}</StyledTitle>\n\n {step.duration && <StyledDuration>{step.duration}</StyledDuration>}\n </StyledHeader>\n\n {isInteractive && hasLines && (\n <StyledLogWrapper $expanded={isExpanded}>\n <StyledLogInner>\n <StyledLog className={css('log', classnames?.log)}>\n {step.lines!.map((logLine) => (\n <StyledLogLine key={logLine.line}>\n <StyledLineNumber>{logLine.line}</StyledLineNumber>\n <StyledLineText>{logLine.text}</StyledLineText>\n </StyledLogLine>\n ))}\n </StyledLog>\n </StyledLogInner>\n </StyledLogWrapper>\n )}\n </StyledStep>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { StepperOrientation } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n`\n\nexport const StyledStepWrapper = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n ${(props) => props.$orientation === 'horizontal' && 'flex: 1; min-width: 0;'}\n\n &:last-child {\n flex: 0;\n }\n`\n\nexport const StyledStep = styled.button<{\n $active: boolean\n $completed: boolean\n $clickable: boolean\n}>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: ${(props) => (props.$clickable ? 'pointer' : 'default')};\n flex-shrink: 0;\n`\n\nexport const StyledCircle = styled.div<{ $active: boolean; $completed: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 600;\n flex-shrink: 0;\n transition:\n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n\n ${(props) =>\n props.$active || props.$completed\n ? `\n background-color: ${COLORS.black};\n border: 2px solid ${COLORS.black};\n color: ${COLORS.white};\n `\n : `\n background-color: transparent;\n border: 2px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n `}\n`\n\nexport const StyledLabel = styled.span<{ $active: boolean; $completed: boolean }>`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n color: ${(props) => (props.$active || props.$completed ? COLORS.black : COLORS['iron-grey'])};\n transition: color 0.2s ease;\n`\n\nexport const StyledLine = styled.div<{ $completed: boolean; $orientation: StepperOrientation }>`\n background-color: ${(props) => (props.$completed ? COLORS.black : COLORS.gray)};\n transition: background-color 0.2s ease;\n\n ${(props) =>\n props.$orientation === 'vertical'\n ? `\n width: 2px;\n height: 24px;\n margin: 8px 0 8px 15px;\n `\n : `\n flex: 1;\n height: 2px;\n min-width: 16px;\n margin: 0 12px;\n `}\n`\n","import { useMemo } from 'react'\n\nimport {\n StyledCircle,\n StyledContainer,\n StyledLabel,\n StyledLine,\n StyledStep,\n StyledStepWrapper,\n} from './styled'\nimport { StepperProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stepper')\n\nexport const Stepper = ({\n className,\n classnames,\n onChange,\n orientation = 'horizontal',\n ref,\n steps,\n value,\n ...rest\n}: StepperProps) => {\n const currentIndex = useMemo(() => {\n return steps.findIndex((step) => step.value === value)\n }, [steps, value])\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $orientation={orientation}\n className={css('container', className)}\n >\n {steps.map((step, index) => {\n const isActive = step.value === value\n const isCompleted = index < currentIndex\n const isLast = index === steps.length - 1\n\n return (\n <StyledStepWrapper key={step.value} $orientation={orientation}>\n <StyledStep\n type=\"button\"\n $active={isActive}\n $completed={isCompleted}\n $clickable={Boolean(onChange)}\n onClick={() => onChange?.(step.value)}\n className={css('step', classnames?.step)}\n >\n <StyledCircle\n $active={isActive}\n $completed={isCompleted}\n className={css('circle', classnames?.circle)}\n >\n {index + 1}\n </StyledCircle>\n <StyledLabel\n $active={isActive}\n $completed={isCompleted}\n className={css('label', classnames?.label)}\n >\n {step.label}\n </StyledLabel>\n </StyledStep>\n {!isLast && (\n <StyledLine\n $completed={isCompleted}\n $orientation={orientation}\n className={css('line', classnames?.line)}\n />\n )}\n </StyledStepWrapper>\n )\n })}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`\n\nexport const StyledTab = styled.button<{ $active: boolean; $disabled: boolean }>`\n padding: 6px 16px;\n border: none;\n border-radius: 12px;\n background-color: ${(props) => (props.$active ? COLORS.gray : 'transparent')};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition:\n background-color 0.15s ease,\n opacity 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$active ? COLORS.gray : 'rgba(0, 0, 0, 0.05)')};\n }\n`\n","import { StyledContainer, StyledTab } from './styled'\nimport { TabsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tabs')\n\nexport const Tabs = ({ className, classnames, onChange, ref, tabs, value, ...rest }: TabsProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"tablist\">\n {tabs.map((tab) => (\n <StyledTab\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={value === tab.value}\n $active={value === tab.value}\n $disabled={Boolean(tab.disabled)}\n disabled={tab.disabled}\n onClick={() => onChange(tab.value)}\n className={css('tab', classnames?.tab)}\n >\n {tab.label}\n </StyledTab>\n ))}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nexport const StyledItem = styled.div`\n display: grid;\n grid-template-columns: 20px 1fr;\n gap: 0 12px;\n`\n\nexport const StyledTrack = styled.div<{ $last: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n grid-row: 1 / -1;\n`\n\nexport const StyledDot = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: ${COLORS.black};\n flex-shrink: 0;\n margin-top: 5px;\n`\n\nexport const StyledLine = styled.div<{ $last: boolean }>`\n width: 2px;\n flex: 1;\n background-color: ${COLORS.gray};\n visibility: ${(props) => (props.$last ? 'hidden' : 'visible')};\n`\n\nexport const StyledContent = styled.div<{ $last: boolean }>`\n padding-bottom: ${(props) => (props.$last ? '0' : '24px')};\n min-width: 0;\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledTitle = styled.div`\n font-size: 15px;\n font-weight: 600;\n color: ${COLORS.black};\n line-height: 20px;\n min-width: 0;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n`\n\nexport const StyledDescription = styled.div`\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n margin-top: 2px;\n line-height: 1.4;\n`\n\nexport const StyledBody = styled.div`\n font-size: 14px;\n color: ${COLORS['iron-grey']};\n margin-top: 8px;\n line-height: 1.5;\n`\n","import {\n StyledActions,\n StyledBody,\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledDot,\n StyledHeader,\n StyledItem,\n StyledLine,\n StyledTitle,\n StyledTrack,\n} from './styled'\nimport { TimelineProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('timeline')\n\nexport const Timeline = ({ className, classnames, items, ref, ...rest }: TimelineProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {items.map((item, index) => {\n const last = index === items.length - 1\n\n return (\n <StyledItem key={index} className={css('item', classnames?.item)}>\n <StyledTrack $last={last}>\n <StyledDot className={css('dot', classnames?.dot)} />\n <StyledLine className={css('line', classnames?.line)} $last={last} />\n </StyledTrack>\n <StyledContent className={css('content', classnames?.content)} $last={last}>\n <StyledHeader>\n <div>\n <StyledTitle className={css('title', classnames?.title)}>\n {item.title}\n </StyledTitle>\n {item.description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {item.description}\n </StyledDescription>\n )}\n </div>\n {item.actions && (\n <StyledActions className={css('actions', classnames?.actions)}>\n {item.actions}\n </StyledActions>\n )}\n </StyledHeader>\n {item.content && (\n <StyledBody className={css('body', classnames?.body)}>{item.content}</StyledBody>\n )}\n </StyledContent>\n </StyledItem>\n )\n })}\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ToastContextValue } from './types'\n\nexport const ToastContext = createContext<ToastContextValue | null>(null)\n","import { ToastVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const MAX_VISIBLE_TOASTS = 3\n\ntype ToastVariantColors = {\n background: string\n text: string\n border: string\n}\n\nexport const TOAST_VARIANT_COLORS: Record<ToastVariant, ToastVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n border: '#374151',\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n border: COLORS.green,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n border: COLORS.yellow,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n border: COLORS.red,\n },\n}\n","import { MAX_VISIBLE_TOASTS } from './constants'\nimport type { ToastAction, ToastState } from './types'\n\nexport const toastReducer = (state: ToastState, action: ToastAction): ToastState => {\n switch (action.type) {\n case 'ADD_TOAST': {\n const newToast = action.payload\n\n if (state.toasts.length < MAX_VISIBLE_TOASTS) {\n return {\n ...state,\n toasts: [...state.toasts, newToast],\n }\n }\n\n return {\n ...state,\n queue: [...state.queue, newToast],\n }\n }\n\n case 'REMOVE_TOAST': {\n const toastId = action.payload\n const updatedToasts = state.toasts.filter((toast) => toast.id !== toastId)\n const nextToast = state.queue[0]\n\n if (nextToast && updatedToasts.length < MAX_VISIBLE_TOASTS) {\n return {\n toasts: [...updatedToasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n return {\n ...state,\n toasts: updatedToasts,\n }\n }\n\n case 'SHOW_NEXT_FROM_QUEUE': {\n const nextToast = state.queue[0]\n\n if (!nextToast || state.toasts.length >= MAX_VISIBLE_TOASTS) {\n return state\n }\n\n return {\n toasts: [...state.toasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialToastState: ToastState = {\n toasts: [],\n queue: [],\n}\n","import { TOAST_VARIANT_COLORS } from './constants'\nimport { ToastVariant } from './types'\n\nexport const getToastVariantColors = (variant: ToastVariant) => {\n return TOAST_VARIANT_COLORS[variant] ?? TOAST_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getToastVariantColors } from './helpers'\nimport type { ToastVariant } from './types'\nimport { COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledToastrContainer = styled.div`\n position: fixed;\n bottom: 24px;\n left: 24px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n width: auto;\n max-width: 90vw;\n`\n\ntype StyledToastProps = {\n $variant: ToastVariant\n $isExiting: boolean\n}\n\nexport const StyledToast = styled.div<StyledToastProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 32px;\n padding: 8px 8px 8px 16px;\n background-color: ${({ $variant }) => getToastVariantColors($variant).background};\n color: ${({ $variant }) => getToastVariantColors($variant).text};\n border: 1px solid ${({ $variant }) => getToastVariantColors($variant).border};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutBottomFade : KEYFRAMES.slideInBottomFade}\n 0.3s ease-out;\n pointer-events: auto;\n max-width: 500px;\n`\n\nexport const StyledToastMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledToastCloseButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n flex-shrink: 0;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledToastrBottomRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n`\n\nexport const StyledQueueCounter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 32px;\n padding: 8px 16px;\n background-color: #374151;\n color: ${COLORS.white};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n pointer-events: auto;\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n margin-left: auto;\n`\n","import { useEffect, useState } from 'react'\n\nimport { StyledToast, StyledToastCloseButton, StyledToastMessage } from './styled'\nimport type { ToastItemProps } from './types'\nimport { X } from '../../icons/Lucide'\n\nexport const ToastItem = ({ toast, onHide }: ToastItemProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n setTimeout(() => {\n onHide(toast.id)\n }, 300)\n }\n\n useEffect(() => {\n if (toast.duration) {\n const timer = setTimeout(() => {\n handleRemove()\n }, toast.duration)\n\n return () => clearTimeout(timer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toast.duration, toast.id])\n\n return (\n <StyledToast $variant={toast.variant} $isExiting={isExiting}>\n <StyledToastMessage>{toast.message}</StyledToastMessage>\n <StyledToastCloseButton onClick={handleRemove}>\n <X style={{ width: 16, height: 16 }} />\n </StyledToastCloseButton>\n </StyledToast>\n )\n}\n","import { StyledQueueCounter, StyledToastrBottomRow, StyledToastrContainer } from './styled'\nimport { ToastItem } from './ToastItem'\nimport type { ToastContainerProps } from './types'\n\nexport const ToastContainer = ({ toasts, queueCount, onHide }: ToastContainerProps) => {\n if (toasts.length === 0) {\n return null\n }\n\n const lastIndex = toasts.length - 1\n\n return (\n <StyledToastrContainer>\n {toasts.map((toast, index) => {\n if (index === lastIndex && queueCount > 0) {\n return (\n <StyledToastrBottomRow key={toast.id}>\n <ToastItem toast={toast} onHide={onHide} />\n <StyledQueueCounter>+{queueCount}</StyledQueueCounter>\n </StyledToastrBottomRow>\n )\n }\n\n return <ToastItem key={toast.id} toast={toast} onHide={onHide} />\n })}\n </StyledToastrContainer>\n )\n}\n","import { useCallback, useReducer, type PropsWithChildren } from 'react'\n\nimport { ToastContext } from './context'\nimport { initialToastState, toastReducer } from './reducer'\nimport { ToastContainer } from './ToastContainer'\nimport type { ToastVariant } from './types'\n\nexport const ToastProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(toastReducer, initialToastState)\n\n const show = useCallback(\n (message: string, variant: ToastVariant = 'default', duration?: number) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_TOAST',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback((id: string) => {\n dispatch({\n type: 'REMOVE_TOAST',\n payload: id,\n })\n }, [])\n\n return (\n <ToastContext.Provider value={{ show, hide }}>\n {children}\n <ToastContainer toasts={state.toasts} queueCount={state.queue.length} onHide={hide} />\n </ToastContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ToastContext } from './context'\n\nexport const useToastr = () => {\n const context = useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastr must be used within ToastProvider')\n }\n\n return context\n}\n","import { TooltipVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype TooltipVariantColors = {\n background: string\n text: string\n border?: string\n}\n\nexport const TOOLTIP_VARIANT_COLORS: Record<TooltipVariant, TooltipVariantColors> = {\n dark: {\n background: COLORS.black,\n text: COLORS.white,\n },\n light: {\n background: COLORS.white,\n text: COLORS.black,\n border: COLORS.gray,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n}\n","import { TOOLTIP_VARIANT_COLORS } from './constants'\nimport { TooltipVariant } from './types'\n\nexport const getTooltipVariantColors = (variant: TooltipVariant) => {\n return TOOLTIP_VARIANT_COLORS[variant] ?? TOOLTIP_VARIANT_COLORS['dark']\n}\n","import styled from '@emotion/styled'\n\nimport { getTooltipVariantColors } from './helpers'\nimport { TooltipPlacement, TooltipVariant } from './types'\nimport { Z_INDEX } from '../../lib'\n\ntype StyledContentProps = {\n $placement: TooltipPlacement\n $variant: TooltipVariant\n $visible: boolean\n}\n\nconst getArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n const arrowColor = getTooltipVariantColors($variant).background\n switch ($placement) {\n case 'top':\n return `\n bottom: -12px;\n left: 50%;\n margin-left: -6px;\n border-top-color: ${arrowColor};\n `\n case 'bottom':\n return `\n top: -12px;\n left: 50%;\n margin-left: -6px;\n border-bottom-color: ${arrowColor};\n `\n case 'left':\n return `\n right: -12px;\n top: 50%;\n margin-top: -6px;\n border-left-color: ${arrowColor};\n `\n case 'right':\n return `\n left: -12px;\n top: 50%;\n margin-top: -6px;\n border-right-color: ${arrowColor};\n `\n default:\n return ''\n }\n}\n\nconst getLightArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n if ($variant !== 'light') return ''\n const borderColor = getTooltipVariantColors($variant).border\n switch ($placement) {\n case 'top':\n return `\n &::after {\n bottom: -14px;\n left: 50%;\n margin-left: -7px;\n border-top-color: ${borderColor};\n }\n `\n case 'bottom':\n return `\n &::after {\n top: -14px;\n left: 50%;\n margin-left: -7px;\n border-bottom-color: ${borderColor};\n }\n `\n case 'left':\n return `\n &::after {\n right: -14px;\n top: 50%;\n margin-top: -7px;\n border-left-color: ${borderColor};\n }\n `\n case 'right':\n return `\n &::after {\n left: -14px;\n top: 50%;\n margin-top: -7px;\n border-right-color: ${borderColor};\n }\n `\n default:\n return ''\n }\n}\n\nconst contentBaseStyles = (props: StyledContentProps) => `\n padding: 6px 12px;\n background-color: ${getTooltipVariantColors(props.$variant).background};\n color: ${getTooltipVariantColors(props.$variant).text};\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n width: max-content;\n max-width: 300px;\n white-space: normal;\n word-wrap: break-word;\n pointer-events: none;\n opacity: ${props.$visible ? 1 : 0};\n visibility: ${props.$visible ? 'visible' : 'hidden'};\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n ${props.$variant === 'light' ? `border: 1px solid ${getTooltipVariantColors(props.$variant).border};` : ''}\n\n &::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n ${getArrowStyles(props.$placement, props.$variant)}\n }\n\n ${\n props.$variant === 'light'\n ? `\n &::after {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n }\n `\n : ''\n }\n\n ${getLightArrowStyles(props.$placement, props.$variant)}\n`\n\nexport const StyledWrapper = styled.div`\n position: relative;\n display: inline-block;\n width: fit-content;\n`\n\nconst getPlacementStyles = ($placement: TooltipPlacement) => {\n switch ($placement) {\n case 'top':\n return `\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'bottom':\n return `\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'left':\n return `\n right: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n case 'right':\n return `\n left: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n default:\n return ''\n }\n}\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: absolute;\n z-index: ${Z_INDEX.dropdown};\n ${(props) => contentBaseStyles(props)}\n ${({ $placement }) => getPlacementStyles($placement)}\n`\n\nexport const StyledPortalContent = styled.div<StyledContentProps>`\n position: fixed;\n z-index: ${Z_INDEX.portalDropdown};\n ${(props) => contentBaseStyles(props)}\n`\n","import { useCallback, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledPortalContent, StyledWrapper } from './styled'\nimport { TooltipPlacement, TooltipProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tooltip')\n\nconst TOOLTIP_GAP = 8\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const Tooltip = ({\n children,\n className,\n classnames,\n content,\n delay = 200,\n placement = 'top',\n portalRenderNode,\n ref,\n variant = 'dark',\n ...rest\n}: TooltipProps) => {\n const [visible, setVisible] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n const [actualPlacement, setActualPlacement] = useState<TooltipPlacement>(placement)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const updatePosition = useCallback(() => {\n if (!wrapperRef.current) return\n\n const triggerRect = wrapperRef.current.getBoundingClientRect()\n const contentWidth = contentRef.current?.offsetWidth ?? 100\n const contentHeight = contentRef.current?.offsetHeight ?? 30\n\n const spaceTop = triggerRect.top - TOOLTIP_GAP\n const spaceBottom = window.innerHeight - triggerRect.bottom - TOOLTIP_GAP\n const spaceLeft = triggerRect.left - TOOLTIP_GAP\n const spaceRight = window.innerWidth - triggerRect.right - TOOLTIP_GAP\n\n let newPlacement = placement\n\n // Auto-adjust placement if not enough space\n if (placement === 'top' && spaceTop < contentHeight && spaceBottom > spaceTop) {\n newPlacement = 'bottom'\n } else if (placement === 'bottom' && spaceBottom < contentHeight && spaceTop > spaceBottom) {\n newPlacement = 'top'\n } else if (placement === 'left' && spaceLeft < contentWidth && spaceRight > spaceLeft) {\n newPlacement = 'right'\n } else if (placement === 'right' && spaceRight < contentWidth && spaceLeft > spaceRight) {\n newPlacement = 'left'\n }\n\n setActualPlacement(newPlacement)\n\n if (portalRenderNode) {\n let top: number\n let left: number\n\n switch (newPlacement) {\n case 'top':\n top = triggerRect.top - contentHeight - TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'bottom':\n top = triggerRect.bottom + TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.left - contentWidth - TOOLTIP_GAP\n break\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.right + TOOLTIP_GAP\n break\n default:\n top = 0\n left = 0\n }\n\n // Clamp to viewport\n const padding = 8\n left = Math.max(padding, Math.min(left, window.innerWidth - contentWidth - padding))\n top = Math.max(padding, Math.min(top, window.innerHeight - contentHeight - padding))\n\n setPortalPosition({ top, left })\n }\n }, [placement, portalRenderNode])\n\n useLayoutEffect(() => {\n if (visible) {\n updatePosition()\n }\n }, [visible, updatePosition])\n\n const handleMouseEnter = () => {\n const id = setTimeout(() => {\n setVisible(true)\n }, delay)\n setTimeoutId(id)\n }\n\n const handleMouseLeave = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n setTimeoutId(null)\n }\n setVisible(false)\n }\n\n const tooltipContent = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {content}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n >\n {content}\n </StyledContent>\n )\n\n return (\n <StyledWrapper\n {...rest}\n ref={(node) => {\n ;(wrapperRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n className={css('wrapper', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {tooltipContent}\n </StyledWrapper>\n )\n}\n","import styled from '@emotion/styled'\n\ntype StyledContainerProps = {\n $reverse: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: 12px;\n flex-direction: ${({ $reverse }) => ($reverse ? 'row-reverse' : 'row')};\n`\n\nexport const StyledInfo = styled.div<{ $align: 'left' | 'right' }>`\n display: flex;\n flex-direction: column;\n text-align: ${({ $align }) => $align};\n`\n\nexport const StyledName = styled.span`\n font-size: 14px;\n font-weight: 600;\n line-height: 1.4;\n`\n\nexport const StyledDescription = styled.span`\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n`\n","import { StyledContainer, StyledDescription, StyledInfo, StyledName } from './styled'\nimport { UserProps } from './types'\nimport { Avatar } from '../Avatar'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('user')\n\nexport const User = ({\n avatarPosition = 'left',\n avatarProps,\n className,\n classnames,\n description,\n name,\n ref,\n src,\n ...rest\n}: UserProps) => {\n const isRight = avatarPosition === 'right'\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $reverse={isRight}>\n <Avatar\n size=\"sm\"\n {...avatarProps}\n name={typeof name === 'string' ? name : undefined}\n src={src ?? avatarProps?.src}\n className={css('avatar', classnames?.avatar)}\n />\n <StyledInfo $align={isRight ? 'right' : 'left'}>\n <StyledName className={css('name', classnames?.name)}>{name}</StyledName>\n {description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {description}\n </StyledDescription>\n )}\n </StyledInfo>\n </StyledContainer>\n )\n}\n"],"names":["globalStyles","css","GlobalStyle","jsx","Global","StyledContainer","styled","$variant","StyledItem","COLORS","$disabled","StyledTrigger","$expanded","StyledIcon","StyledContentWrapper","StyledContentInner","StyledContent","newClassNameGetter","ChevronIcon","Accordion","className","classnames","defaultValue","items","multiple","onChange","ref","controlledValue","variant","rest","internalValue","setInternalValue","useState","isControlled","expanded","toggle","useCallback","itemValue","isExpanded","next","v","item","jsxs","RADIUS","ICON_COLORS","$center","$radius","StyledBody","StyledTitle","StyledDescription","Alert","description","icon","radius","title","getInitials","name","parts","first","_a","last","_b","AVATAR_SIZES","AVATAR_FONT_SIZES","AVATAR_ICON_SIZES","AVATAR_RADIUS","AVATAR_COLORS","$size","$color","$bordered","StyledImage","StyledFallback","StyledInitials","Avatar","bordered","color","disabled","size","src","imageError","setImageError","showImage","StyledGroup","StyledCount","AvatarGroup","children","max","avatars","Children","isValidElement","visible","remaining","child","cloneElement","COLOR_MAP","SIZE_MAP","getPlacement","$placement","$shape","offset","getVariantStyles","c","StyledBadge","$dot","$showOutline","$invisible","Badge","content","dot","invisible","placement","shape","showOutline","BreadcrumbItem","SIZES","padding","StyledList","$current","StyledLink","StyledSeparator","StyledEllipsis","DefaultSeparator","Breadcrumbs","itemsAfterCollapse","itemsBeforeCollapse","maxItems","separator","totalItems","shouldCollapse","renderSeparator","key","renderItem","index","isLast","current","itemDisabled","href","startContent","endContent","isCurrent","isDisabled","renderItems","before","after","Fragment","i","originalIndex","SHADOW_MAP","alpha","RADIUS_MAP","StyledCard","$blurred","$border","$shadow","$fullWidth","$pressable","$hoverable","StyledCardHeader","StyledCardBody","StyledCardFooter","Card","blurred","border","footerBlurred","fullWidth","hoverable","pressable","shadow","resolvedShadow","CardBody","CardFooter","CardHeader","DEFAULT_CONFIRM_LABEL","DEFAULT_CANCEL_LABEL","fadeIn","keyframes","fadeOut","slideIn","slideOut","StyledOverlay","Z_INDEX","$isExiting","StyledMessage","StyledActions","ConfirmationBar","confirmation","onDone","isExiting","setIsExiting","isLoading","setIsLoading","message","onConfirm","onCancel","options","confirmLabel","cancelLabel","exit","callback","handleConfirm","result","handleCancel","useEffect","handleKeyDown","e","Button","ConfirmationContext","createContext","noop","ConfirmationProvider","state","setState","show","hide","useConfirmation","context","useContext","CONTAINER_MAX_WIDTHS","BREAKPOINTS","mediaUp","Container","formatDate","date","locale","StyledHash","DateRange","from","presentLabel","to","props","StyledLine","StyledLabel","Divider","spacing","KEYFRAMES","getPositionStyles","position","Drawer","animated","open","createPortal","contentStyles","getTransform","$open","$position","$align","StyledPortalContent","DROPDOWN_GAP","DROPDOWN_MIN_HEIGHT","Dropdown","align","autoClose","onClose","onOpen","controlledOpen","portalRenderNode","trigger","internalOpen","setInternalOpen","portalPosition","setPortalPosition","setPosition","containerRef","useRef","triggerRef","contentRef","updatePosition","triggerRect","contentHeight","contentWidth","spaceBelow","spaceAbove","newPosition","left","top","handleToggle","prev","handleClose","handleContentClick","useLayoutEffect","handleClickOutside","event","target","isOutsideContainer","isOutsideContent","handleEscape","handleScroll","handleResize","StyledIconArea","StyledRings","StyledRingsOuter","StyledIconBox","EmptyState","actions","StyledFieldRow","FieldRow","gap","formatFileSize","bytes","units","isFileTypeAccepted","file","accept","t","type","StyledFileUpload","StyledDropzone","$dragOver","StyledDropzoneIcon","StyledDropzoneText","StyledDropzoneAction","StyledDropzoneHint","StyledInput","STATUS_BORDER","$status","StyledItemIcon","StyledItemContent","StyledItemHeader","StyledItemInfo","StyledItemName","StyledItemSize","StyledItemProgress","StyledProgressTrack","StyledProgressBar","$value","StyledProgressText","StyledItemAction","StyledRetryLink","StyledStatusRow","StyledCheckIcon","UploadIcon","FileUpload","hint","maxSize","onReject","inputRef","dragOver","setDragOver","processFiles","fileList","files","rejected","f","accepted","handleClick","handleInputChange","handleDragOver","handleDragLeave","handleDrop","DefaultFileIcon","CloseIcon","CheckIcon","FileUploadItem","status","progress","onRemove","onRetry","base","clickable","$clickable","Hashtag","onClick","StyledHeading","$level","Heading","as","level","StyledButton","StyledLines","weight","MenuButton","defaultOpen","onOpenChange","isOpen","DEFAULT_NOTIFICATION_DURATION","NOTIFICATION_VARIANT_COLORS","NotificationContext","getNotificationVariantColors","StyledNotificationContainer","StyledNotificationBar","StyledNotificationMessage","StyledNotificationCloseButton","StyledNotificationWrapper","NotificationBar","notification","onAnimationEnd","handleRemove","handleAnimationEnd","timer","X","notificationReducer","action","newNotification","nextNotification","initialNotificationState","NotificationProvider","dispatch","useReducer","duration","id","handleShowNext","useNotification","NotifyConfirmationContext","DEFAULT_DISCARD_LABEL","NotifyConfirmationBar","label","onDiscard","discardLabel","handleDiscard","NotifyConfirmationProvider","useNotifyConfirmation","Overline","StyledGrid","StyledInner","StyledLogo","StyledHeader","StyledFooter","ShellScreen","footer","gridSize","logo","getPaginationRange","total","siblings","boundaries","_","leftSiblingIndex","rightSiblingIndex","showLeftDots","showRightDots","leftCount","leftRange","rightRange","rightCount","middleRange","getItemStyles","active","$active","StyledCursor","StyledControl","Pagination","initialPage","loop","controlledPage","showControls","internalPage","setInternalPage","currentPage","itemsRef","cursorRef","range","setPage","newPage","handlePageClick","page","handlePrev","handleNext","cursor","container","itemEl","containerRect","x","el","PANEL_VARIANT_COLORS","getPanelVariantColors","Panel","hasHeader","DEFAULT_PHRASES","DEFAULT_INTERVAL","getPhrases","phrases","getInterval","interval","getBoardWidth","p","padPhrase","phrase","width","createShuffledQueue","length","excludeIndex","indices","j","swapWith","orbit1","orbit2","orbit3","StyledIndicator","StyledOrbitDot","StyledScreenReaderOnly","CYCLE_TICK_MS","SETTLE_BASE_MS","SETTLE_STAGGER_MS","SHUFFLE_ALPHABET","randomChar","getSettleTime","getCycleTick","StyledChar","SplitFlapText","text","displayChars","setDisplayChars","prevTextRef","settledRef","cycleTimerRef","settleTimersRef","targetCharsRef","clearTimers","startFlip","targetText","ch","char","PendingScreen","phrasesProp","resolvedPhrases","useMemo","resolvedInterval","boardWidth","queueRef","queuePosRef","getNextIndex","currentIndex","setCurrentIndex","phraseTimerRef","advance","currentPhrase","paddedText","PROGRESS_SIZE_PROPS","StyledTrack","StyledBar","Progress","value","SaveProgressContext","SaveProgressProvider","defaultMessage","isVisible","setIsVisible","setMessage","customMessage","Spinner","useSaveProgress","pulse","wave","pulseStyle","waveStyle","ANIMATION_STYLES","resolveSize","StyledSkeleton","$width","$circle","$height","$animation","Skeleton","animation","circle","height","StyledValue","Stat","StyledStep","$interactive","StyledChevron","StyledChevronPlaceholder","STATUS_COLORS","spin","runningStyle","StyledStatusIcon","$muted","StyledDuration","StyledLogWrapper","StyledLogInner","StyledLog","StyledLogLine","StyledLineNumber","StyledLineText","STATUS_ICONS","CircleCheck","CircleX","LoaderCircle","Circle","StepLog","steps","stepValue","step","isInteractive","hasLines","StatusIcon","ChevronRight","logLine","StyledStepWrapper","StyledCircle","Stepper","orientation","isActive","isCompleted","StyledTab","Tabs","tabs","tab","StyledDot","Timeline","ToastContext","MAX_VISIBLE_TOASTS","TOAST_VARIANT_COLORS","toastReducer","newToast","toastId","updatedToasts","toast","nextToast","initialToastState","getToastVariantColors","StyledToastrContainer","StyledToast","StyledToastMessage","StyledToastCloseButton","StyledToastrBottomRow","StyledQueueCounter","ToastItem","onHide","ToastContainer","toasts","queueCount","lastIndex","ToastProvider","useToastr","TOOLTIP_VARIANT_COLORS","getTooltipVariantColors","getArrowStyles","arrowColor","getLightArrowStyles","borderColor","contentBaseStyles","StyledWrapper","getPlacementStyles","TOOLTIP_GAP","Tooltip","delay","setVisible","timeoutId","setTimeoutId","actualPlacement","setActualPlacement","wrapperRef","spaceTop","spaceBottom","spaceLeft","spaceRight","newPlacement","handleMouseEnter","handleMouseLeave","tooltipContent","node","$reverse","StyledInfo","StyledName","User","avatarPosition","avatarProps","isRight"],"mappings":"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"}