@vacano/ui 1.15.7 → 1.16.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/ImageCropper/styled.ts","../node_modules/.pnpm/hq-cropper@4.0.0/node_modules/hq-cropper/dist/index.js","../src/hooks/useImageCropper/constants.ts","../src/hooks/useImageCropper/useImageCropper.ts","../src/components/ImageCropper/ImageCropper.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\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\nexport const StyledPreview = styled.div<{ $size: number }>`\n width: ${({ $size }) => $size}px;\n height: ${({ $size }) => $size}px;\n border-radius: 8px;\n border: 1px dashed ${COLORS.gray};\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${COLORS.white};\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`\n\nexport const StyledPlaceholder = styled.span`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n`\n","const S = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #2F7FEF;\n color: #FFFFFF;\n border-radius: 20px;\n user-select: none;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, F = (e) => `\n .${e} {\n display: flex;\n flex: 1 1 auto;\n background: #33393F;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 500px;\n height: 500px;\n max-width: 100%;\n max-height: 60vh;\n min-height: 250px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n height: auto;\n aspect-ratio: 1;\n max-height: 70vh;\n }\n }\n`, M = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #E8EFF7;\n color: #768BA7;\n border-radius: 20px;\n cursor: pointer;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, T = (e) => `\n .${e} {\n display: flex;\n flex-direction: column;\n background-color: #FFFFFF;\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(77, 96, 124, 0.2);\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n border-radius: 8px;\n }\n }\n`, k = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top: 1px solid #EEE;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 56px;\n padding: 0 12px;\n gap: 8px;\n }\n }\n`, N = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-start;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n border-bottom: 1px solid #EEE;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 48px;\n padding: 0 12px;\n font-size: 14px;\n }\n }\n`, Y = (e) => `\n .${e} {\n display: block;\n z-index: 101;\n outline: 1px dashed #aaa;\n background-color: transparent;\n cursor: move;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n position: absolute;\n touch-action: none;\n }\n`, X = (e) => `\n .${e} {\n position: absolute;\n z-index: 2;\n background-color: rgba(0, 0, 0, 0.6);\n touch-action: none;\n }\n`, _ = (e) => `\n .${e} {\n position: absolute;\n z-index: 3;\n touch-action: none;\n }\n`, Z = (e) => `\n .${e} {\n backface-visibility: hidden;\n perspective: 1000px;\n max-inline-size: unset !important;\n max-block-size: unset !important;\n }\n`, H = (e) => `\n .${e} {\n position: absolute;\n z-index: 100;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n border-radius: 50%;\n }\n`, q = {\n tl: \"nw-resize\",\n tr: \"ne-resize\",\n bl: \"sw-resize\",\n br: \"se-resize\"\n}, j = {\n tl: { h: \"left\", v: \"top\" },\n tr: { h: \"right\", v: \"top\" },\n bl: { h: \"left\", v: \"bottom\" },\n br: { h: \"right\", v: \"bottom\" }\n}, R = (e, t) => {\n const o = q[t], { h: i, v: n } = j[t];\n return `\n .${e} {\n display: block;\n z-index: 102;\n background-color: rgba(255, 255, 255, .6);\n cursor: ${o};\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n ${i}: -3px;\n ${n}: -3px;\n position: absolute;\n width: 5px;\n height: 5px;\n touch-action: none;\n }\n\n @media (max-width: 540px), (pointer: coarse) {\n .${e} {\n width: 24px;\n height: 24px;\n ${i}: -12px;\n ${n}: -12px;\n }\n }\n`;\n}, D = (e) => `\n .${e} {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, .4);\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n position: fixed;\n left: 0;\n top: 0;\n z-index: 1000;\n overflow-y: auto;\n box-sizing: border-box;\n padding: 16px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n padding: 8px;\n align-items: flex-start;\n padding-top: env(safe-area-inset-top, 8px);\n padding-bottom: env(safe-area-inset-bottom, 8px);\n }\n }\n`, V = (e) => `\n .${e} {\n backface-visibility: hidden;\n user-select: none;\n perspective: 1000px;\n overflow: hidden;\n display: block;\n transform: translateZ(0);\n width: auto;\n -webkit-user-drag: none;\n position: absolute;\n z-index: 1;\n }\n`, O = (e) => {\n let t = 5381;\n for (let o = 0; o < e.length; o++)\n t = (t << 5) + t ^ e.charCodeAt(o);\n return Math.abs(t).toString(36);\n}, g = (e) => `hq-cropper__${O(e)}`, x = (e) => e || [], b = (e, t) => {\n if (t)\n for (const o of t)\n e.classList.add(o);\n}, W = (e) => {\n const t = {\n applyButton: [\n g(\"applyButton\"),\n ...x(e.applyButton)\n ],\n cancelButton: [\n g(\"cancelButton\"),\n ...x(e.cancelButton)\n ],\n container: [\n g(\"container\"),\n ...x(e.container)\n ],\n handlerMove: [\n g(\"handlerMove\"),\n ...x(e.handlerMove)\n ],\n handlerResizeTopLeft: [\n g(\"handlerResizeTopLeft\"),\n ...x(e.handlerResizeTopLeft)\n ],\n handlerResizeTopRight: [\n g(\"handlerResizeTopRight\"),\n ...x(e.handlerResizeTopRight)\n ],\n handlerResizeBottomLeft: [\n g(\"handlerResizeBottomLeft\"),\n ...x(e.handlerResizeBottomLeft)\n ],\n handlerResizeBottomRight: [\n g(\"handlerResizeBottomRight\"),\n ...x(e.handlerResizeBottomRight)\n ],\n sourceImage: [\n g(\"sourceImage\"),\n ...x(e.sourceImage)\n ],\n portalArea: [\n g(\"portalArea\"),\n ...x(e.portalArea)\n ],\n previewImage: [\n g(\"previewImage\"),\n ...x(e.previewImage)\n ],\n body: [g(\"body\"), ...x(e.body)],\n header: [g(\"header\"), ...x(e.header)],\n footer: [g(\"footer\"), ...x(e.footer)],\n portal: [g(\"portal\"), ...x(e.portal)],\n preview: [g(\"preview\"), ...x(e.preview)],\n root: [g(\"root\"), ...x(e.root)]\n }, o = `\n ${S(t.applyButton[0])}\n ${F(t.body[0])}\n ${M(t.cancelButton[0])}\n ${T(t.container[0])}\n ${k(t.footer[0])}\n ${N(t.header[0])}\n ${Y(t.handlerMove[0])}\n ${X(t.portalArea[0])}\n ${_(t.portal[0])}\n ${Z(t.previewImage[0])}\n ${H(t.preview[0])}\n ${R(t.handlerResizeBottomLeft[0], \"bl\")}\n ${R(t.handlerResizeBottomRight[0], \"br\")}\n ${R(t.handlerResizeTopLeft[0], \"tl\")}\n ${R(t.handlerResizeTopRight[0], \"tr\")}\n ${D(t.root[0])}\n ${V(t.sourceImage[0])}\n `, i = document.createElement(\"style\");\n return i.innerHTML = o, document.getElementsByTagName(\"head\")[0].prepend(i), t;\n};\nlet U = 0;\nconst K = (e) => {\n const t = /* @__PURE__ */ new Map(), o = new Proxy(\n { ...e },\n {\n set(a, l, s) {\n return Reflect.set(a, l, s), (t.get(l) || []).forEach(\n (u) => u.action(s, a, l)\n ), !0;\n }\n }\n );\n return { getState: () => ({ ...o }), setState: (a) => {\n for (const l of Object.keys(\n a\n )) {\n const s = a[l];\n s !== void 0 && (o[l] = s);\n }\n }, subscribe: (a, l) => {\n const s = String(++U), c = t.get(a) || [];\n return t.set(a, [\n ...c,\n {\n action: l,\n id: s\n }\n ]), s;\n }, unsubscribe: (a) => {\n for (const [l, s] of t.entries()) {\n const c = s.filter((u) => u.id !== a);\n if (c.length !== s.length) {\n t.set(l, c);\n return;\n }\n }\n }, unsubscribeAll: () => {\n t.clear();\n } };\n}, C = {\n action: null,\n sourceBase64: \"\",\n fileName: \"\",\n sourceHeight: 0,\n sourceWidth: 0,\n frame: {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n },\n portal: {\n left: 0,\n top: 0,\n size: 0\n },\n emitted: {\n X: 0,\n Y: 0,\n left: 0,\n top: 0,\n size: 0\n },\n config: {\n applyButtonLabel: \"Apply\",\n cancelButtonLabel: \"Cancel\",\n compression: 1,\n framePadding: 3,\n minPortalSize: 50,\n portalPosition: \"center\",\n portalSize: 150,\n outputSize: 0,\n type: \"jpeg\",\n maxFileSize: 0,\n allowedTypes: [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"]\n }\n}, G = (e = {}, t = {}) => K({\n ...C,\n config: { ...C.config, ...e },\n css: W(t)\n}), J = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.body[0]}`\n );\n if (!i)\n return o.frame;\n const { width: n, height: d } = i.getBoundingClientRect(), p = n / d, r = t.width / t.height;\n let a, l, s = 0, c = 0;\n return p > r ? (a = d * r, l = d, c = (n - a) / 2) : (a = n, l = n * (t.height / t.width), s = (d - l) / 2), {\n width: a,\n height: l,\n left: c,\n top: s\n };\n}, Q = (e, t, o) => {\n const [i, n] = t, d = i + e > o.width ? (o.width - e) / 2 : i, p = n + e > o.height ? (o.height - e) / 2 : n;\n return [d, p];\n}, ee = (e, t) => {\n const { config: o } = e(), i = Math.min(t.width, t.height) - o.framePadding * 2, n = o.portalSize > i ? i : o.portalSize;\n if (Array.isArray(o.portalPosition) && o.portalPosition.length === 2) {\n const [d, p] = Q(\n n,\n o.portalPosition,\n t\n );\n return {\n left: d,\n top: p,\n size: n\n };\n }\n return o.portalPosition === \"center\" ? {\n size: n,\n left: (t.width - n) / 2,\n top: (t.height - n) / 2\n } : {\n left: 0,\n top: 0,\n size: n\n };\n};\nvar v = /* @__PURE__ */ ((e) => (e.MOVE = \"MOVE\", e.RESIZE_TL = \"RESIZE_TL\", e.RESIZE_TR = \"RESIZE_TR\", e.RESIZE_BR = \"RESIZE_BR\", e.RESIZE_BL = \"RESIZE_BL\", e))(v || {});\nconst te = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerMove), o.setAttribute(\"data-action\", v.MOVE), o;\n}, oe = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomLeft), o.setAttribute(\"data-action\", v.RESIZE_BL), o;\n}, ne = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomRight), o.setAttribute(\"data-action\", v.RESIZE_BR), o;\n}, ie = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopLeft), o.setAttribute(\"data-action\", v.RESIZE_TL), o;\n}, re = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopRight), o.setAttribute(\"data-action\", v.RESIZE_TR), o;\n}, se = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.previewImage), o;\n}, ae = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.preview), o.appendChild(se(e)), o;\n}, le = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portal), o.appendChild(ae(e)), o.appendChild(te(e)), o.appendChild(ie(e)), o.appendChild(re(e)), o.appendChild(oe(e)), o.appendChild(ne(e)), o;\n}, ce = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portalArea), o.appendChild(le(e)), o;\n}, de = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.sourceImage), o.setAttribute(\"alt\", \"source\"), o.setAttribute(\"crossOrigin\", \"anonymous\"), o.setAttribute(\"draggable\", \"false\"), o.setAttribute(\"src\", t.sourceBase64), o;\n}, pe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.body), o.appendChild(de(e)), o.appendChild(ce(e)), o;\n}, ue = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.applyButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.applyButtonLabel, i.addEventListener(\"click\", t), i;\n}, me = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.cancelButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.cancelButtonLabel, i.addEventListener(\"click\", t), i;\n}, he = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.footer), n.appendChild(me(e, o)), n.appendChild(ue(e, t)), n;\n}, fe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.header), o;\n}, ge = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.container), n.appendChild(fe(e)), n.appendChild(pe(e)), n.appendChild(he(e, t, o)), n;\n}, xe = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n b(n, i.css?.root), n.appendChild(ge(e, t, o)), document.body.appendChild(n);\n}, be = (e) => {\n const t = document.createElement(\"input\");\n return t.style.display = \"none\", t.setAttribute(\"type\", \"file\"), t.setAttribute(\"accept\", \"image/x-png,image/jpeg\"), t.addEventListener(\"change\", e, !1), document.body.appendChild(t), t;\n}, $ = /* @__PURE__ */ new Map(), ye = {\n header: \"header\",\n sourceImage: \"sourceImage\",\n portalArea: \"portalArea\",\n portal: \"portal\",\n previewImage: \"previewImage\"\n}, E = (e, t) => {\n if ($.has(e))\n return $.get(e);\n if (!t)\n return null;\n const o = t[ye[e]], i = document.querySelector(\n `.${o[0]}`\n );\n return $.set(e, i), i;\n}, ve = () => {\n $.clear();\n}, ze = () => {\n $.clear();\n}, we = (e, t) => {\n const o = E(\"header\", t.css);\n o && (o.innerText = e);\n}, Ee = (e, t) => {\n const o = E(\"sourceImage\", t.css);\n o && (o.setAttribute(\"src\", e), o.style.height = `${t.frame.height}px`, o.style.width = `${t.frame.width}px`, o.style.left = `${t.frame.left}px`, o.style.top = `${t.frame.top}px`);\n const i = E(\"portalArea\", t.css);\n i && (i.style.height = `${t.frame.height}px`, i.style.width = `${t.frame.width}px`, i.style.left = `${t.frame.left}px`, i.style.top = `${t.frame.top}px`);\n const n = E(\"portal\", t.css);\n n && (n.style.width = `${t.portal.size}px`, n.style.height = `${t.portal.size}px`, n.style.left = `${t.portal.left}px`, n.style.top = `${t.portal.top}px`);\n const d = E(\"previewImage\", t.css);\n d && (d.setAttribute(\"src\", e), d.style.height = `${t.frame.height}px`, d.style.width = `${t.frame.width}px`, d.style.marginLeft = `-${t.portal.left}px`, d.style.marginTop = `-${t.portal.top}px`);\n}, $e = (e, t) => {\n const o = E(\"portal\", t.css);\n o && (o.style.left = `${e.left}px`, o.style.top = `${e.top}px`, o.style.width = `${e.size}px`, o.style.height = `${e.size}px`);\n const i = E(\"previewImage\", t.css);\n i && (i.style.marginLeft = `-${e.left}px`, i.style.marginTop = `-${e.top}px`);\n}, L = 1, Re = (e) => {\n const t = e(), o = document.createElement(\"canvas\"), i = t.frame.width || L, n = t.frame.height || L, d = t.sourceWidth / i, p = t.sourceHeight / n, r = t.portal.left * d, a = t.portal.top * p, l = Math.max(\n t.portal.size * Math.min(d, p),\n L\n ), s = t.config.outputSize > 0 ? t.config.outputSize : l;\n o.width = s, o.height = s;\n const c = document.querySelector(\n `.${t.css?.sourceImage[0]}`\n );\n c && o.getContext(\"2d\")?.drawImage(\n c,\n r,\n a,\n l,\n l,\n 0,\n 0,\n s,\n s\n );\n const u = o.toDataURL(\n `image/${t.config.type}`,\n t.config.compression\n );\n return new Promise((m, f) => {\n try {\n o.toBlob(\n (z) => {\n if (o.remove(), !z) {\n f(\n new Error(\n `Failed to create blob for type: image/${t.config.type}`\n )\n );\n return;\n }\n m([u, z]);\n },\n `image/${t.config.type}`,\n t.config.compression\n );\n } catch (z) {\n o.remove(), f(z);\n }\n });\n}, Pe = (e, t, o) => {\n const { emitted: i, portal: n, frame: d, config: p } = t();\n let r = i.left - i.X + e.clientX, a = i.top - i.Y + e.clientY;\n const l = p.framePadding, s = d.width - p.framePadding - n.size, c = p.framePadding, u = d.height - p.framePadding - n.size;\n r < l && (r = l), r > s && (r = s), a < c && (a = c), a > u && (a = u), o({\n portal: {\n ...n,\n left: r,\n top: a\n }\n });\n}, Be = (e, t, o) => {\n const { action: i, emitted: n, portal: d, frame: p, config: r } = t(), a = e.pageX - n.X, l = e.pageY - n.Y;\n switch (i) {\n case v.RESIZE_BR: {\n let s = n.size + Math.max(a, l);\n return s < r.minPortalSize && (s = r.minPortalSize), n.top + s > p.height - r.framePadding && (s = p.height - n.top - r.framePadding), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding), o({\n portal: {\n ...d,\n size: s\n }\n });\n }\n case v.RESIZE_TR: {\n let s = a + l > 0 ? n.size + a : n.size - l, c = a + l > 0 ? n.top - a : n.top + l;\n return s < r.minPortalSize && (c = n.top + n.size - r.minPortalSize, s = r.minPortalSize), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding, c = n.top - p.width + n.left + n.size), c < r.framePadding && (s = n.top + n.size, c = r.framePadding), o({\n portal: {\n ...d,\n top: c,\n size: s\n }\n });\n }\n case v.RESIZE_TL: {\n const s = Math.min(a, l);\n let c = n.size - s, u = n.left + s, m = n.top + s;\n if (c < r.minPortalSize) {\n const f = n.size - r.minPortalSize;\n c = r.minPortalSize, u = n.left + f, m = n.top + f;\n }\n if (m < r.framePadding) {\n const f = r.framePadding - m;\n m = r.framePadding, u = u + f, c = c - f;\n }\n if (u < r.framePadding) {\n const f = r.framePadding - u;\n u = r.framePadding, m = m + f, c = c - f;\n }\n return o({\n portal: {\n ...d,\n top: m,\n left: u,\n size: c\n }\n });\n }\n case v.RESIZE_BL: {\n let s = a + l > 0 ? n.size + l : n.size - a, c = a + l > 0 ? n.left - l : n.left + a;\n return s < r.minPortalSize && (c = n.left + n.size - r.minPortalSize, s = r.minPortalSize), s + n.top > p.height - r.framePadding && (c = n.left - p.height + n.top + n.size, s = p.height - n.top - r.framePadding), c < r.framePadding && (c = r.framePadding, s = n.left + n.size - r.framePadding), o({\n portal: {\n ...d,\n left: c,\n size: s\n }\n });\n }\n default:\n return;\n }\n}, I = (e) => {\n if (\"touches\" in e && e.touches.length > 0) {\n const o = e.touches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n if (\"changedTouches\" in e && e.changedTouches.length > 0) {\n const o = e.changedTouches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n const t = e;\n return {\n clientX: t.clientX,\n clientY: t.clientY,\n pageX: t.pageX,\n pageY: t.pageY\n };\n}, Le = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.portal[0]}`\n ), n = document.querySelector(\n `.${o.css?.portalArea[0]}`\n ), d = document.querySelector(\n `.${o.css?.root[0]}`\n );\n let p = null, r = null;\n const a = (u) => {\n u.preventDefault();\n const { portal: m } = e(), f = I(u);\n if (u.target) {\n const P = u.target.getAttribute(\"data-action\"), h = {\n X: f.pageX,\n Y: f.pageY,\n left: m.left,\n top: m.top,\n size: m.size\n };\n t({\n action: P,\n emitted: h\n });\n }\n }, l = () => {\n const { action: u } = e();\n p !== null && (cancelAnimationFrame(p), p = null), r = null, u && t({\n action: null\n });\n }, s = () => {\n if (p = null, !r)\n return;\n const u = r;\n r = null;\n const { action: m } = e();\n if (m)\n switch (m) {\n case v.MOVE:\n Pe(u, e, t);\n break;\n default:\n Be(u, e, t);\n }\n }, c = (u) => {\n const { action: m } = e();\n m && (u.preventDefault(), r = I(u), p === null && (p = requestAnimationFrame(s)));\n };\n return d && (d.addEventListener(\"mouseup\", l), d.addEventListener(\"touchend\", l), d.addEventListener(\"touchcancel\", l)), i && (i.addEventListener(\"mousedown\", a), i.addEventListener(\"touchstart\", a, {\n passive: !1\n })), n && (n.addEventListener(\"mousemove\", c), n.addEventListener(\"touchmove\", c, {\n passive: !1\n })), () => {\n p !== null && cancelAnimationFrame(p), d && (d.removeEventListener(\"mouseup\", l), d.removeEventListener(\"touchend\", l), d.removeEventListener(\"touchcancel\", l)), i && (i.removeEventListener(\"mousedown\", a), i.removeEventListener(\"touchstart\", a)), n && (n.removeEventListener(\n \"mousemove\",\n c\n ), n.removeEventListener(\n \"touchmove\",\n c\n ));\n };\n}, A = 1024 * 1024, Ce = (e, t) => {\n if (!t.allowedTypes.includes(e.type))\n return `Invalid file type \"${e.type}\". Allowed types: ${t.allowedTypes.join(\", \")}`;\n if (t.maxFileSize > 0 && e.size > t.maxFileSize) {\n const o = (t.maxFileSize / A).toFixed(2);\n return `File size (${(e.size / A).toFixed(2)}MB) exceeds maximum allowed size (${o}MB)`;\n }\n return null;\n}, Ie = (e, t, o, i, n, d, p) => {\n const r = (h) => {\n p ? p(h) : console.error(`HqCropper: ${h}`);\n };\n if (!e.target.files || e.target.files.length === 0) {\n r(\"Can't read file input\");\n return;\n }\n const a = e.target.files[0], { config: l } = t(), s = Ce(a, l);\n if (s) {\n r(s), e.target.value = \"\";\n return;\n }\n const c = new FileReader();\n let u = null;\n const m = () => {\n const h = t(), y = document.querySelector(\n `.${h.css?.root[0]}`\n );\n y && (y.remove(), document.removeEventListener(\"keydown\", f), u?.(), ze(), d(), o(C));\n }, f = (h) => {\n h.key === \"Escape\" && t().sourceBase64 && z(h);\n }, z = (h) => {\n h.preventDefault(), m();\n }, P = (h) => {\n h.preventDefault();\n const y = t();\n Re(t).then(([w, B]) => {\n i(w, B, y), z(h);\n }).catch((w) => {\n r(\n w instanceof Error ? w.message : \"Failed to crop image\"\n );\n });\n };\n c.onload = (h) => {\n const y = new Image();\n if (!h.target || typeof h.target.result != \"string\") {\n r(\"Can't load result image\");\n return;\n }\n y.src = h.target.result, y.onerror = () => {\n r(\"Failed to load image\");\n }, y.onload = () => {\n xe(t, P, z), ve(), n(\"fileName\", we), n(\"sourceBase64\", Ee), n(\"portal\", $e);\n const w = J(t, y), B = ee(t, w);\n o({\n frame: w,\n portal: B,\n fileName: a.name,\n sourceBase64: h.target?.result,\n sourceHeight: y.height,\n sourceWidth: y.width\n }), u = Le(t, o), document.addEventListener(\"keydown\", f);\n };\n }, c.onerror = () => {\n r(\"Failed to read file\");\n }, c.readAsDataURL(a), e.target.value = \"\";\n}, Ae = (e, t, o, i) => {\n const { getState: n, setState: d, subscribe: p, unsubscribeAll: r } = G(\n t,\n o\n ), a = be(\n (l) => Ie(\n l,\n n,\n d,\n e,\n p,\n r,\n i\n )\n );\n return {\n open: () => a.click()\n };\n};\nexport {\n Ae as HqCropper\n};\n//# sourceMappingURL=index.js.map\n","import { COLORS } from '../../lib'\n\nexport const DEFAULT_CONFIG = {\n portalSize: 200,\n outputSize: 400,\n compression: 0.9,\n type: 'jpeg' as const,\n maxFileSize: 10 * 1024 * 1024, // 10MB\n allowedTypes: ['image/jpeg', 'image/png', 'image/webp'],\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n}\n\nconst STYLE_ID = 'vacano-image-cropper-styles'\n\nconst CUSTOM_STYLES = `\n .vacano-cropper-root {\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n }\n\n .vacano-cropper-header {\n border-bottom: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n }\n\n .vacano-cropper-footer {\n border-top: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n gap: 12px;\n }\n\n .vacano-cropper-cancel-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-cancel-button:hover {\n background-color: ${COLORS.gray};\n }\n\n .vacano-cropper-apply-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: none;\n background-color: ${COLORS.black};\n color: ${COLORS.white};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-apply-button:hover {\n background-color: ${COLORS['iron-grey']};\n }\n`\n\nexport const injectCropperStyles = (): void => {\n if (typeof document === 'undefined') return\n if (document.getElementById(STYLE_ID)) return\n\n const style = document.createElement('style')\n style.id = STYLE_ID\n style.textContent = CUSTOM_STYLES\n document.head.appendChild(style)\n}\n\nexport const CROPPER_CSS = {\n root: ['vacano-cropper-root'],\n container: ['vacano-cropper-container'],\n header: ['vacano-cropper-header'],\n body: ['vacano-cropper-body'],\n footer: ['vacano-cropper-footer'],\n cancelButton: ['vacano-cropper-cancel-button'],\n applyButton: ['vacano-cropper-apply-button'],\n portal: ['vacano-cropper-portal'],\n}\n","import { useCallback, useRef } from 'react'\n\nimport { HqCropper } from 'hq-cropper'\n\nimport { CROPPER_CSS, DEFAULT_CONFIG, injectCropperStyles } from './constants'\nimport { ImageCropperState, UseImageCropperOptions, UseImageCropperReturn } from './types'\n\ntype CropperInstance = {\n open: () => void\n}\n\nexport const useImageCropper = (options: UseImageCropperOptions = {}): UseImageCropperReturn => {\n const {\n allowedTypes = DEFAULT_CONFIG.allowedTypes,\n applyLabel = DEFAULT_CONFIG.applyLabel,\n cancelLabel = DEFAULT_CONFIG.cancelLabel,\n compression = DEFAULT_CONFIG.compression,\n maxFileSize = DEFAULT_CONFIG.maxFileSize,\n onCrop,\n onError,\n outputSize = DEFAULT_CONFIG.outputSize,\n portalSize = DEFAULT_CONFIG.portalSize,\n type = DEFAULT_CONFIG.type,\n } = options\n\n const cropperRef = useRef<CropperInstance | null>(null)\n\n const open = useCallback(() => {\n if (!cropperRef.current) {\n injectCropperStyles()\n cropperRef.current = HqCropper(\n (base64: string, blob: Blob | null, state: ImageCropperState) => {\n if (blob) {\n onCrop?.({ base64, blob, state })\n }\n },\n {\n portalSize,\n outputSize,\n compression,\n type,\n maxFileSize,\n allowedTypes,\n applyButtonLabel: applyLabel,\n cancelButtonLabel: cancelLabel,\n },\n CROPPER_CSS,\n (message: string) => {\n onError?.({ code: 'CROPPER_ERROR', message })\n },\n )\n }\n\n cropperRef.current.open()\n }, [\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n type,\n ])\n\n return { open }\n}\n","import { useState } from 'react'\n\nimport { StyledContainer, StyledPlaceholder, StyledPreview } from './styled'\nimport { ImageCropperProps } from './types'\nimport { Button } from '../Button'\nimport { useImageCropper } from '../../hooks/useImageCropper'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('image-cropper')\n\nexport const ImageCropper = ({\n allowedTypes,\n applyLabel,\n buttonLabel = 'Select Image',\n cancelLabel,\n className,\n classnames,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n previewSize = 120,\n ref,\n type,\n value,\n ...rest\n}: ImageCropperProps) => {\n const [preview, setPreview] = useState<string | null>(value ?? null)\n\n const { open } = useImageCropper({\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop: (result) => {\n setPreview(result.base64)\n onCrop?.(result)\n },\n onError,\n outputSize,\n portalSize,\n type,\n })\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledPreview $size={previewSize} className={css('preview', classnames?.preview)}>\n {preview ? (\n <img src={preview} alt=\"Preview\" />\n ) : (\n <StyledPlaceholder>No image</StyledPlaceholder>\n )}\n </StyledPreview>\n <Button\n variant=\"system\"\n onClick={open}\n className={css('button', classnames?.button)}\n style={{ width: previewSize }}\n >\n {buttonLabel}\n </Button>\n </StyledContainer>\n )\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 <StyledTitle className={css('title', classnames?.title)}>{item.title}</StyledTitle>\n {item.actions && (\n <StyledActions className={css('actions', classnames?.actions)}>\n {item.actions}\n </StyledActions>\n )}\n </StyledHeader>\n {item.description && (\n <StyledDescription className={css('description', classnames?.description)}>\n {item.description}\n </StyledDescription>\n )}\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","StyledPreview","StyledPlaceholder","S","F","M","T","k","N","Y","X","_","Z","H","q","j","R","D","V","O","g","x","b","W","U","K","a","l","s","u","C","G","J","d","p","r","Q","ee","te","oe","ne","ie","re","se","ae","le","ce","de","pe","ue","me","he","fe","ge","xe","be","$","ye","E","ve","ze","we","Ee","$e","L","Re","m","z","Pe","Be","I","Le","_c","P","h","A","Ce","Ie","y","w","B","Ae","DEFAULT_CONFIG","STYLE_ID","CUSTOM_STYLES","injectCropperStyles","style","CROPPER_CSS","useImageCropper","allowedTypes","applyLabel","compression","maxFileSize","onCrop","onError","outputSize","portalSize","cropperRef","HqCropper","base64","blob","ImageCropper","buttonLabel","previewSize","value","preview","setPreview","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","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","el","PANEL_VARIANT_COLORS","getPanelVariantColors","Panel","hasHeader","DEFAULT_PHRASES","DEFAULT_INTERVAL","getPhrases","phrases","getInterval","interval","getBoardWidth","padPhrase","phrase","width","createShuffledQueue","length","excludeIndex","indices","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","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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","x_google_ignoreList":[52]}
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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"}