@paolojulian.dev/design-system 4.4.0 → 4.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/components/PContainers/Row/Row.tsx","../src/components/PContainers/Stack/Stack.tsx","../src/components/PBadge/PBadge.tsx","../src/components/PButton/PButton.tsx","../node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/PTypography/PTypography.constants.ts","../src/components/PTypography/PTypography.tsx","../src/components/PCard/PCard.tsx","../src/components/PDatePicker/PDatePicker.tsx","../src/components/PDateRangePicker/PDateRangePicker.tsx","../src/components/PHighlight/PHighlight.tsx","../src/components/PHorizontalSlider/PHorizontalSlider.tsx","../src/components/PSectionHeader/PSectionHeader.tsx","../src/components/PTextInput/PTextInput.tsx","../src/components/PTextArea/PTextArea.tsx"],"sourcesContent":["import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type RowProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Row: FC<RowProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-row', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Row;\n","import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type StackProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Stack: FC<StackProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-col', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Stack;\n","import {\n forwardRef,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PBadge.css';\n\nexport type PBadgeVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info' | 'neutral';\nexport type PBadgeSize = 'sm' | 'md';\nexport type PBadgeAppearance = 'subtle' | 'solid' | 'outline';\nexport type PBadgeRef = HTMLElement;\n\nexport type PBadgeProps = {\n as?: ElementType;\n variant?: PBadgeVariant;\n size?: PBadgeSize;\n appearance?: PBadgeAppearance;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children: ReactNode;\n className?: string;\n} & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'color'>;\n\nexport const PBadge = forwardRef<PBadgeRef, PBadgeProps>(\n (\n {\n as: Element = 'span',\n variant = 'neutral',\n size = 'sm',\n appearance = 'subtle',\n leftIcon,\n rightIcon,\n children,\n className,\n ...props\n },\n ref,\n ) => (\n <Element\n {...props}\n ref={ref}\n className={cn(\n 'p-badge',\n `p-badge--${variant}`,\n `p-badge--${size}`,\n `p-badge--${appearance}`,\n className,\n )}\n >\n {leftIcon && (\n <span className=\"p-badge__icon\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n <span className=\"p-badge__label\">{children}</span>\n {rightIcon && (\n <span className=\"p-badge__icon\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </Element>\n ),\n);\n\nPBadge.displayName = 'PBadge';\n","import {\n forwardRef,\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type MouseEvent,\n type Ref,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PButton.css';\n\nexport type PButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger' | 'ghost';\nexport type PButtonSize = 'sm' | 'md' | 'lg';\nexport type PButtonRef = HTMLButtonElement | HTMLAnchorElement;\n\ntype PButtonBaseProps = {\n variant?: PButtonVariant;\n size?: PButtonSize;\n fullWidth?: boolean;\n isActive?: boolean;\n isLoading?: boolean;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children: ReactNode;\n className?: string;\n};\n\ntype PButtonAsButtonProps = PButtonBaseProps &\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'children'> & {\n href?: undefined;\n };\n\ntype PButtonAsAnchorProps = PButtonBaseProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'children'> & {\n href: string;\n disabled?: boolean;\n type?: never;\n };\n\nexport type PButtonProps = PButtonAsButtonProps | PButtonAsAnchorProps;\ntype PButtonAnchorElementProps = Omit<PButtonAsAnchorProps, keyof PButtonBaseProps>;\ntype PButtonButtonElementProps = Omit<PButtonAsButtonProps, keyof PButtonBaseProps>;\n\nexport const PButton = forwardRef<PButtonRef, PButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n fullWidth = false,\n isActive = false,\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const isUnavailable = Boolean(('disabled' in props && props.disabled) || isLoading);\n const buttonClassName = cn(\n 'p-button',\n `p-button--${variant}`,\n `p-button--${size}`,\n fullWidth && 'p-button--full-width',\n isActive && 'p-button--active',\n className,\n );\n const content = (\n <>\n {isLoading ? (\n <span className=\"p-button__spinner\" aria-hidden=\"true\" />\n ) : (\n leftIcon && (\n <span className=\"p-button__icon\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )\n )}\n <span className=\"p-button__label\">{children}</span>\n {!isLoading && rightIcon && (\n <span className=\"p-button__icon\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </>\n );\n\n if ('href' in props && typeof props.href === 'string') {\n const { disabled: anchorDisabled, onClick, ...anchorProps } =\n props as PButtonAnchorElementProps;\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isUnavailable) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <a\n {...anchorProps}\n ref={ref as Ref<HTMLAnchorElement>}\n className={buttonClassName}\n aria-disabled={isUnavailable || undefined}\n aria-busy={isLoading || undefined}\n data-active={isActive || undefined}\n data-disabled={anchorDisabled || undefined}\n tabIndex={isUnavailable ? -1 : anchorProps.tabIndex}\n onClick={handleClick}\n >\n {content}\n </a>\n );\n }\n\n const { type = 'button', disabled: buttonDisabled, ...buttonProps } =\n props as PButtonButtonElementProps;\n\n return (\n <button\n {...buttonProps}\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={Boolean(buttonDisabled || isLoading)}\n className={buttonClassName}\n aria-busy={isLoading || undefined}\n data-active={isActive || undefined}\n >\n {content}\n </button>\n );\n },\n);\n\nPButton.displayName = 'PButton';\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { cva } from 'class-variance-authority';\n\ntype FontVariants =\n | 'serif'\n | 'body'\n | 'body-wide'\n | 'heading'\n | 'heading-lg'\n | 'heading-xl';\n\nconst fontVariantsMap = {\n serif: 'p-typography--serif',\n body: 'p-typography--body',\n 'body-wide': 'p-typography--body-wide',\n heading: 'p-typography--heading',\n 'heading-lg': 'p-typography--heading-lg',\n 'heading-xl': 'p-typography--heading-xl',\n} satisfies Record<FontVariants, string>;\n\nexport const PTypographyVariants = cva('p-typography', {\n variants: {\n variant: fontVariantsMap,\n },\n defaultVariants: {\n variant: 'body',\n },\n});\n","import { VariantProps } from 'class-variance-authority';\nimport { HTMLAttributes } from 'react';\nimport '../../index.css';\nimport cn from '../../utils/cn';\nimport './PTypography.css';\nimport { PTypographyVariants } from './PTypography.constants';\n\nexport interface PTypographyProps\n extends VariantProps<typeof PTypographyVariants>,\n HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n children: React.ReactNode;\n}\n\nexport default function PTypography({\n as: Element = 'p',\n children,\n className = '',\n variant,\n ...props\n}: PTypographyProps) {\n return (\n <Element\n className={cn(PTypographyVariants({ variant, className }))}\n {...props}\n >\n {children}\n </Element>\n );\n}\n","import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport { PTypography } from '../PTypography';\nimport './PCard.css';\n\nexport type PCardDensity = 'compact' | 'default' | 'spacious';\nexport type PCardRef = HTMLElement;\n\ntype PCardBaseProps = {\n prefix?: ReactNode;\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n media?: ReactNode;\n actions?: ReactNode;\n density?: PCardDensity;\n fullWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'];\n height?: CSSProperties['height'];\n minHeight?: CSSProperties['minHeight'];\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n};\n\ntype PCardArticleProps = PCardBaseProps &\n Omit<HTMLAttributes<HTMLElement>, 'className' | 'children' | 'style' | 'title'> & {\n href?: undefined;\n };\n\ntype PCardAnchorProps = PCardBaseProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'children' | 'style' | 'title'> & {\n href: string;\n };\n\nexport type PCardProps = PCardArticleProps | PCardAnchorProps;\ntype PCardAnchorElementProps = Omit<PCardAnchorProps, keyof PCardBaseProps>;\ntype PCardArticleElementProps = Omit<PCardArticleProps, keyof PCardBaseProps>;\ntype PCardStyle = CSSProperties & {\n '--p-card-width'?: CSSProperties['width'];\n '--p-card-min-width'?: CSSProperties['minWidth'];\n '--p-card-height'?: CSSProperties['height'];\n '--p-card-min-height'?: CSSProperties['minHeight'];\n};\n\nfunction hasRenderableNode(node: ReactNode) {\n return node !== null && node !== undefined && node !== false && node !== '';\n}\n\nfunction renderMetaNode(node: ReactNode, className: string) {\n if (!hasRenderableNode(node)) {\n return null;\n }\n\n if (typeof node === 'string' || typeof node === 'number') {\n return (\n <PTypography className={className} variant=\"body-wide\">\n {node}\n </PTypography>\n );\n }\n\n return <span className={cn(className, 'p-card__meta-custom')}>{node}</span>;\n}\n\nfunction getCardSizeValue(value: CSSProperties['width']) {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport const PCard = forwardRef<PCardRef, PCardProps>(\n (\n {\n prefix,\n eyebrow,\n title,\n description,\n media,\n actions,\n density = 'default',\n fullWidth = false,\n width,\n minWidth,\n height,\n minHeight,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const isInteractive = 'href' in props && typeof props.href === 'string';\n const cardClassName = cn(\n 'p-card',\n density !== 'default' && `p-card--${density}`,\n fullWidth && 'p-card--full-width',\n width !== undefined && 'p-card--custom-width',\n minWidth !== undefined && 'p-card--custom-min-width',\n height !== undefined && 'p-card--custom-height',\n minHeight !== undefined && 'p-card--custom-min-height',\n isInteractive && 'p-card--interactive',\n className,\n );\n const cardStyle: PCardStyle = {\n ...style,\n ...(width !== undefined ? { '--p-card-width': getCardSizeValue(width) } : {}),\n ...(minWidth !== undefined ? { '--p-card-min-width': getCardSizeValue(minWidth) } : {}),\n ...(height !== undefined ? { '--p-card-height': getCardSizeValue(height) } : {}),\n ...(minHeight !== undefined ? { '--p-card-min-height': getCardSizeValue(minHeight) } : {}),\n };\n\n const content = (\n <>\n {hasRenderableNode(media) && <div className=\"p-card__media\">{media}</div>}\n {(hasRenderableNode(prefix) || hasRenderableNode(eyebrow)) && (\n <div className=\"p-card__meta\">\n {renderMetaNode(prefix, 'p-card__prefix')}\n {renderMetaNode(eyebrow, 'p-card__eyebrow')}\n </div>\n )}\n <div className=\"p-card__body\">\n <PTypography as=\"h3\" className=\"p-card__title\" variant=\"heading\">\n {isInteractive ? (\n <a {...(props as PCardAnchorElementProps)} className=\"p-card__link\">\n {title}\n </a>\n ) : (\n title\n )}\n </PTypography>\n {hasRenderableNode(description) ? (\n <PTypography className=\"p-card__description\" variant=\"body\">\n {description}\n </PTypography>\n ) : null}\n </div>\n {hasRenderableNode(children) && <div className=\"p-card__content\">{children}</div>}\n {hasRenderableNode(actions) && <div className=\"p-card__actions\">{actions}</div>}\n </>\n );\n\n if (isInteractive) {\n return (\n <article ref={ref as React.Ref<HTMLElement>} className={cardClassName} style={cardStyle}>\n {content}\n </article>\n );\n }\n\n return (\n <article\n {...(props as PCardArticleElementProps)}\n ref={ref as React.Ref<HTMLElement>}\n className={cardClassName}\n style={cardStyle}\n >\n {content}\n </article>\n );\n },\n);\n\nPCard.displayName = 'PCard';\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PDatePicker.css';\n\nexport type PDatePickerRef = HTMLDivElement;\nexport type PDatePickerChangeSource = 'preset' | 'calendar';\nexport type PDatePickerPresetColumns = 2 | 3 | 4 | 'auto';\ntype FocusableElement = { focus: () => void };\n\nexport type PDatePickerPreset = {\n label: string;\n value: string | Date | (() => string | Date);\n};\n\nexport type PDatePickerProps = {\n label: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (\n value: string,\n details: { date: Date | null; source: PDatePickerChangeSource },\n ) => void;\n presets?: PDatePickerPreset[];\n customLabel?: string;\n showCustom?: boolean;\n presetColumns?: PDatePickerPresetColumns;\n placeholder?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n min?: string;\n max?: string;\n name?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'defaultValue' | 'onChange'>;\n\nconst dayFormatter = new Intl.DateTimeFormat(undefined, { weekday: 'short' });\n\nfunction toLocalDate(value: string | Date | null | undefined) {\n if (!value) {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime())\n ? null\n : new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n const parts = value.split('-').map(Number);\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [year, month, day] = parts;\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nfunction toIsoDate(date: Date | null) {\n if (!date) {\n return '';\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nfunction addMonths(date: Date, months: number) {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n}\n\nfunction addMonthsClamped(date: Date, months: number) {\n const monthStart = addMonths(date, months);\n const lastDay = endOfMonth(monthStart).getDate();\n\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nfunction addDays(date: Date, days: number) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n return Boolean(a && b && toIsoDate(a) === toIsoDate(b));\n}\n\nfunction getToday() {\n const today = new Date();\n return new Date(today.getFullYear(), today.getMonth(), today.getDate());\n}\n\nfunction getCalendarDays(monthDate: Date, weekStartsOn: number) {\n const monthStart = startOfMonth(monthDate);\n const offset = (monthStart.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n\n return Array.from({ length: 42 }, (_, index) => addDays(gridStart, index));\n}\n\nfunction resolvePresetDate(preset: PDatePickerPreset) {\n const value = typeof preset.value === 'function' ? preset.value() : preset.value;\n return toLocalDate(value);\n}\n\nfunction getMonthLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date);\n}\n\nfunction getDateLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getDayLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getWeekdayLabels(weekStartsOn: number, locale?: string) {\n const baseSunday = new Date(2024, 0, 7);\n\n return Array.from({ length: 7 }, (_, index) => {\n const date = addDays(baseSunday, weekStartsOn + index);\n return dayFormatter.formatToParts(date).length\n ? new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n : '';\n });\n}\n\nfunction isBeforeDate(date: Date, minDate: Date | null) {\n return Boolean(minDate && date.getTime() < minDate.getTime());\n}\n\nfunction isAfterDate(date: Date, maxDate: Date | null) {\n return Boolean(maxDate && date.getTime() > maxDate.getTime());\n}\n\nfunction CalendarIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"M6 3v3\" />\n <path d=\"M14 3v3\" />\n <path d=\"M4 8h12\" />\n <path d=\"M5 5h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z\" />\n </svg>\n );\n}\n\nfunction ChevronLeftIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m12 5-5 5 5 5\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m8 5 5 5-5 5\" />\n </svg>\n );\n}\n\nexport const PDatePicker = forwardRef<PDatePickerRef, PDatePickerProps>(\n (\n {\n label,\n value,\n defaultValue,\n onValueChange,\n presets = [],\n customLabel = 'Custom',\n showCustom = true,\n presetColumns = 'auto',\n placeholder = 'Select date',\n helperText,\n isError = false,\n errorMessage,\n min,\n max,\n name,\n disabled = false,\n readOnly = false,\n required = false,\n locale,\n weekStartsOn = 0,\n className,\n id,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const rootId = id ?? generatedId;\n const labelId = `${rootId}-label`;\n const panelId = `${rootId}-panel`;\n const helperId = `${rootId}-helper`;\n const errorId = `${rootId}-error`;\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const [isOpen, setIsOpen] = useState(false);\n const selectedValue = isControlled ? value : internalValue;\n const selectedDate = toLocalDate(selectedValue);\n const today = useMemo(getToday, []);\n const minDate = toLocalDate(min);\n const maxDate = toLocalDate(max);\n const [visibleMonth, setVisibleMonth] = useState(() => startOfMonth(selectedDate ?? today));\n const [focusedDate, setFocusedDate] = useState(() => selectedDate ?? today);\n const calendarTriggerRef = useRef<FocusableElement | null>(null);\n const dayRefs = useRef<Record<string, FocusableElement | null>>({});\n const calendarDays = getCalendarDays(visibleMonth, weekStartsOn);\n const weekdayLabels = getWeekdayLabels(weekStartsOn, locale);\n const hasPresets = presets.length > 0;\n const shouldRenderCustom = hasPresets ? showCustom : true;\n const presetColumnsStyle =\n presetColumns === 'auto'\n ? undefined\n : ({\n '--p-date-picker-preset-columns': String(presetColumns),\n } as CSSProperties);\n const messageId = isError && errorMessage ? errorId : helperText ? helperId : undefined;\n const displayValue = selectedDate ? getDateLabel(selectedDate, locale) : placeholder;\n const selectedMatchesPreset = hasPresets\n ? presets.some((preset) => isSameDay(resolvePresetDate(preset), selectedDate))\n : false;\n const isCustomActive = isOpen || Boolean(selectedDate && !selectedMatchesPreset);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n dayRefs.current[toIsoDate(focusedDate)]?.focus();\n }, [focusedDate, isOpen, visibleMonth]);\n\n const setDateValue = (date: Date | null, source: PDatePickerChangeSource) => {\n const nextValue = toIsoDate(date);\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n if (date) {\n setVisibleMonth(startOfMonth(date));\n }\n\n onValueChange?.(nextValue, { date, source });\n };\n\n const openCalendar = (trigger: HTMLButtonElement) => {\n if (disabled || readOnly) {\n return;\n }\n\n const nextFocusedDate = selectedDate ?? today;\n calendarTriggerRef.current = trigger as unknown as FocusableElement;\n setFocusedDate(nextFocusedDate);\n setVisibleMonth(startOfMonth(nextFocusedDate));\n setIsOpen(true);\n };\n\n const closeCalendar = (restoreFocus = false) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n calendarTriggerRef.current?.focus();\n }\n };\n\n const handlePresetClick = (preset: PDatePickerPreset) => {\n if (disabled || readOnly) {\n return;\n }\n\n const presetDate = resolvePresetDate(preset);\n setDateValue(presetDate, 'preset');\n closeCalendar();\n };\n\n const handleDayClick = (date: Date) => {\n if (disabled || readOnly || isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n setFocusedDate(date);\n setDateValue(date, 'calendar');\n closeCalendar(true);\n };\n\n const focusCalendarDate = (date: Date) => {\n if (isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n setFocusedDate(date);\n setVisibleMonth(startOfMonth(date));\n };\n\n const handleDayKeyDown =\n (date: Date): ButtonHTMLAttributes<HTMLButtonElement>['onKeyDown'] =>\n (event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n closeCalendar(true);\n return;\n }\n\n const weekOffset = (date.getDay() - weekStartsOn + 7) % 7;\n const nextDateByKey: Record<string, Date> = {\n ArrowLeft: addDays(date, -1),\n ArrowRight: addDays(date, 1),\n ArrowUp: addDays(date, -7),\n ArrowDown: addDays(date, 7),\n Home: addDays(date, -weekOffset),\n End: addDays(date, 6 - weekOffset),\n PageUp: addMonthsClamped(date, -1),\n PageDown: addMonthsClamped(date, 1),\n };\n const nextDate = nextDateByKey[event.key];\n\n if (!nextDate) {\n return;\n }\n\n event.preventDefault();\n focusCalendarDate(nextDate);\n };\n\n return (\n <div\n {...props}\n ref={ref}\n id={rootId}\n style={presetColumnsStyle ? { ...style, ...presetColumnsStyle } : style}\n className={cn(\n 'p-date-picker',\n hasPresets && 'p-date-picker--with-presets',\n isError && 'p-date-picker--error',\n disabled && 'p-date-picker--disabled',\n className,\n )}\n >\n <div id={labelId} className=\"p-date-picker__label\">\n <span>{label}</span>\n {hasPresets ? (\n <span className={cn('p-date-picker__label-value', !selectedDate && 'p-date-picker__label-value--empty')}>\n {displayValue}\n </span>\n ) : null}\n </div>\n\n {hasPresets ? (\n <div\n aria-describedby={messageId}\n aria-labelledby={labelId}\n className={cn(\n 'p-date-picker__presets',\n presetColumns !== 'auto' && 'p-date-picker__presets--fixed',\n )}\n role=\"group\"\n >\n {presets.map((preset) => {\n const presetDate = resolvePresetDate(preset);\n const isActive = isSameDay(presetDate, selectedDate);\n\n return (\n <button\n key={preset.label}\n type=\"button\"\n className={cn('p-date-picker__preset', isActive && 'p-date-picker__preset--active')}\n disabled={disabled}\n aria-pressed={isActive}\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n );\n })}\n {shouldRenderCustom ? (\n <button\n type=\"button\"\n className={cn(\n 'p-date-picker__preset',\n isCustomActive && 'p-date-picker__preset--active',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-expanded={isOpen}\n aria-pressed={isCustomActive}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n {customLabel}\n </button>\n ) : null}\n </div>\n ) : (\n <button\n type=\"button\"\n className={cn('p-date-picker__trigger', !selectedDate && 'p-date-picker__trigger--empty')}\n disabled={disabled}\n aria-controls={panelId}\n aria-describedby={messageId}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-labelledby={labelId}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n <span>{displayValue}</span>\n <span className=\"p-date-picker__trigger-icon\">\n <CalendarIcon />\n </span>\n </button>\n )}\n\n <input type=\"hidden\" name={name} value={selectedValue ?? ''} required={required} />\n\n {isOpen && (\n <div\n id={panelId}\n className=\"p-date-picker__panel\"\n role=\"dialog\"\n aria-labelledby={`${panelId}-title`}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeCalendar();\n }\n }}\n >\n <div className=\"p-date-picker__calendar-header\">\n <button\n type=\"button\"\n className=\"p-date-picker__nav\"\n aria-label=\"Previous month\"\n onClick={() => setVisibleMonth((date) => addMonths(date, -1))}\n >\n <ChevronLeftIcon />\n </button>\n <div id={`${panelId}-title`} className=\"p-date-picker__month\">\n {getMonthLabel(visibleMonth, locale)}\n </div>\n <button\n type=\"button\"\n className=\"p-date-picker__nav\"\n aria-label=\"Next month\"\n onClick={() => setVisibleMonth((date) => addMonths(date, 1))}\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n <div className=\"p-date-picker__weekdays\" aria-hidden=\"true\">\n {weekdayLabels.map((weekday) => (\n <span key={weekday}>{weekday}</span>\n ))}\n </div>\n\n <div className=\"p-date-picker__grid\" role=\"grid\" aria-labelledby={`${panelId}-title`}>\n {calendarDays.map((date) => {\n const isoDate = toIsoDate(date);\n const isOutsideMonth = date.getMonth() !== visibleMonth.getMonth();\n const isSelected = isSameDay(date, selectedDate);\n const isToday = isSameDay(date, today);\n const isDisabled = isBeforeDate(date, minDate) || isAfterDate(date, maxDate);\n\n return (\n <button\n key={isoDate}\n ref={(node) => {\n dayRefs.current[isoDate] = node as unknown as FocusableElement | null;\n }}\n type=\"button\"\n role=\"gridcell\"\n data-date={isoDate}\n className={cn(\n 'p-date-picker__day',\n isOutsideMonth && 'p-date-picker__day--outside',\n isToday && 'p-date-picker__day--today',\n isSelected && 'p-date-picker__day--selected',\n )}\n disabled={isDisabled}\n aria-label={getDayLabel(date, locale)}\n aria-selected={isSelected}\n tabIndex={isSameDay(date, focusedDate) ? 0 : -1}\n onClick={() => handleDayClick(date)}\n onKeyDown={handleDayKeyDown(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-date-picker__message p-date-picker__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-date-picker__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPDatePicker.displayName = 'PDatePicker';\n\nexport const PDatePickerPresets = {\n today: { label: 'Today', value: () => getToday() },\n yesterday: { label: 'Yesterday', value: () => addDays(getToday(), -1) },\n tomorrow: { label: 'Tomorrow', value: () => addDays(getToday(), 1) },\n startOfMonth: { label: 'Start of month', value: () => startOfMonth(getToday()) },\n endOfMonth: {\n label: 'End of month',\n value: () => {\n const today = getToday();\n return new Date(today.getFullYear(), today.getMonth() + 1, 0);\n },\n },\n} satisfies Record<string, PDatePickerPreset>;\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PDateRangePicker.css';\n\nexport type PDateRangePickerRef = HTMLDivElement;\nexport type PDateRangePickerChangeSource = 'preset' | 'calendar';\nexport type PDateRangePickerPresetColumns = 2 | 3 | 4 | 'auto';\ntype FocusableElement = { focus: () => void };\n\nexport type PDateRangeValue = {\n start?: string;\n end?: string;\n};\n\nexport type PDateRangePickerPreset = {\n label: string;\n value: PDateRangeValue | (() => PDateRangeValue);\n};\n\nexport type PDateRangePickerProps = {\n label: string;\n value?: PDateRangeValue;\n defaultValue?: PDateRangeValue;\n onValueChange?: (\n value: PDateRangeValue,\n details: { startDate: Date | null; endDate: Date | null; source: PDateRangePickerChangeSource },\n ) => void;\n presets?: PDateRangePickerPreset[];\n customLabel?: string;\n showCustom?: boolean;\n presetColumns?: PDateRangePickerPresetColumns;\n placeholder?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n min?: string;\n max?: string;\n nameStart?: string;\n nameEnd?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'defaultValue' | 'onChange'>;\n\nconst dayFormatter = new Intl.DateTimeFormat(undefined, { weekday: 'short' });\n\nfunction toLocalDate(value: string | Date | null | undefined) {\n if (!value) {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime())\n ? null\n : new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n const parts = value.split('-').map(Number);\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [year, month, day] = parts;\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nfunction toIsoDate(date: Date | null) {\n if (!date) {\n return '';\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nfunction addMonths(date: Date, months: number) {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n}\n\nfunction addMonthsClamped(date: Date, months: number) {\n const monthStart = addMonths(date, months);\n const lastDay = endOfMonth(monthStart).getDate();\n\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nfunction addDays(date: Date, days: number) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nfunction getToday() {\n const today = new Date();\n return new Date(today.getFullYear(), today.getMonth(), today.getDate());\n}\n\nfunction getCalendarDays(monthDate: Date, weekStartsOn: number) {\n const monthStart = startOfMonth(monthDate);\n const offset = (monthStart.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n\n return Array.from({ length: 42 }, (_, index) => addDays(gridStart, index));\n}\n\nfunction getMonthLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date);\n}\n\nfunction getDateLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getDayLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getWeekdayLabels(weekStartsOn: number, locale?: string) {\n const baseSunday = new Date(2024, 0, 7);\n\n return Array.from({ length: 7 }, (_, index) => {\n const date = addDays(baseSunday, weekStartsOn + index);\n return dayFormatter.formatToParts(date).length\n ? new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n : '';\n });\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n return Boolean(a && b && toIsoDate(a) === toIsoDate(b));\n}\n\nfunction isBeforeDate(date: Date, minDate: Date | null) {\n return Boolean(minDate && date.getTime() < minDate.getTime());\n}\n\nfunction isAfterDate(date: Date, maxDate: Date | null) {\n return Boolean(maxDate && date.getTime() > maxDate.getTime());\n}\n\nfunction isInRange(date: Date, startDate: Date | null, endDate: Date | null) {\n return Boolean(startDate && endDate && date > startDate && date < endDate);\n}\n\nfunction normalizeRange(startDate: Date | null, endDate: Date | null): PDateRangeValue {\n if (!startDate && !endDate) {\n return {};\n }\n\n if (startDate && endDate && endDate < startDate) {\n return {\n start: toIsoDate(endDate),\n end: toIsoDate(startDate),\n };\n }\n\n return {\n start: toIsoDate(startDate),\n end: toIsoDate(endDate),\n };\n}\n\nfunction resolvePresetRange(preset: PDateRangePickerPreset) {\n return typeof preset.value === 'function' ? preset.value() : preset.value;\n}\n\nfunction getRangeDates(value: PDateRangeValue | undefined) {\n return {\n startDate: toLocalDate(value?.start),\n endDate: toLocalDate(value?.end),\n };\n}\n\nfunction isSameRange(a: PDateRangeValue | undefined, b: PDateRangeValue | undefined) {\n return Boolean(a?.start && a?.end && a.start === b?.start && a.end === b?.end);\n}\n\nfunction getRangeLabel(value: PDateRangeValue | undefined, placeholder: string, locale?: string) {\n const { startDate, endDate } = getRangeDates(value);\n\n if (startDate && endDate) {\n return `${getDateLabel(startDate, locale)} - ${getDateLabel(endDate, locale)}`;\n }\n\n if (startDate) {\n return `${getDateLabel(startDate, locale)} -`;\n }\n\n if (endDate) {\n return `- ${getDateLabel(endDate, locale)}`;\n }\n\n return placeholder;\n}\n\nfunction CalendarIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"M6 3v3\" />\n <path d=\"M14 3v3\" />\n <path d=\"M4 8h12\" />\n <path d=\"M5 5h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z\" />\n </svg>\n );\n}\n\nfunction ChevronLeftIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m12 5-5 5 5 5\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m8 5 5 5-5 5\" />\n </svg>\n );\n}\n\nexport const PDateRangePicker = forwardRef<PDateRangePickerRef, PDateRangePickerProps>(\n (\n {\n label,\n value,\n defaultValue,\n onValueChange,\n presets = [],\n customLabel = 'Custom',\n showCustom = true,\n presetColumns = 'auto',\n placeholder = 'Select range',\n helperText,\n isError = false,\n errorMessage,\n min,\n max,\n nameStart,\n nameEnd,\n disabled = false,\n readOnly = false,\n required = false,\n locale,\n weekStartsOn = 0,\n className,\n id,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const rootId = id ?? generatedId;\n const labelId = `${rootId}-label`;\n const panelId = `${rootId}-panel`;\n const helperId = `${rootId}-helper`;\n const errorId = `${rootId}-error`;\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<PDateRangeValue>(defaultValue ?? {});\n const [isOpen, setIsOpen] = useState(false);\n const selectedValue = isControlled ? value : internalValue;\n const { startDate, endDate } = getRangeDates(selectedValue);\n const today = useMemo(getToday, []);\n const minDate = toLocalDate(min);\n const maxDate = toLocalDate(max);\n const [visibleMonth, setVisibleMonth] = useState(() => startOfMonth(startDate ?? today));\n const [focusedDate, setFocusedDate] = useState(() => startDate ?? today);\n const calendarTriggerRef = useRef<FocusableElement | null>(null);\n const dayRefs = useRef<Record<string, FocusableElement | null>>({});\n const calendarDays = getCalendarDays(visibleMonth, weekStartsOn);\n const weekdayLabels = getWeekdayLabels(weekStartsOn, locale);\n const hasPresets = presets.length > 0;\n const shouldRenderCustom = hasPresets ? showCustom : true;\n const presetColumnsStyle =\n presetColumns === 'auto'\n ? undefined\n : ({\n '--p-date-range-picker-preset-columns': String(presetColumns),\n } as CSSProperties);\n const hasCompleteRange = Boolean(selectedValue?.start && selectedValue?.end);\n const messageId = isError && errorMessage ? errorId : helperText ? helperId : undefined;\n const displayValue = getRangeLabel(selectedValue, placeholder, locale);\n const selectedMatchesPreset = hasPresets\n ? presets.some((preset) => isSameRange(resolvePresetRange(preset), selectedValue))\n : false;\n const isCustomActive = isOpen || Boolean(hasCompleteRange && !selectedMatchesPreset);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n dayRefs.current[toIsoDate(focusedDate)]?.focus();\n }, [focusedDate, isOpen, visibleMonth]);\n\n const setRangeValue = (range: PDateRangeValue, source: PDateRangePickerChangeSource) => {\n const { startDate: nextStartDate, endDate: nextEndDate } = getRangeDates(range);\n const normalizedRange = normalizeRange(nextStartDate, nextEndDate);\n\n if (!isControlled) {\n setInternalValue(normalizedRange);\n }\n\n const normalizedDates = getRangeDates(normalizedRange);\n\n if (normalizedDates.startDate) {\n setVisibleMonth(startOfMonth(normalizedDates.startDate));\n }\n\n onValueChange?.(normalizedRange, {\n startDate: normalizedDates.startDate,\n endDate: normalizedDates.endDate,\n source,\n });\n };\n\n const openCalendar = (trigger: HTMLButtonElement) => {\n if (disabled || readOnly) {\n return;\n }\n\n const nextFocusedDate = startDate ?? today;\n calendarTriggerRef.current = trigger as unknown as FocusableElement;\n setFocusedDate(nextFocusedDate);\n setVisibleMonth(startOfMonth(nextFocusedDate));\n setIsOpen(true);\n };\n\n const closeCalendar = (restoreFocus = false) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n calendarTriggerRef.current?.focus();\n }\n };\n\n const handlePresetClick = (preset: PDateRangePickerPreset) => {\n if (disabled || readOnly) {\n return;\n }\n\n setRangeValue(resolvePresetRange(preset), 'preset');\n closeCalendar();\n };\n\n const handleDayClick = (date: Date) => {\n if (disabled || readOnly || isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n if (!startDate || endDate) {\n setFocusedDate(date);\n setRangeValue({ start: toIsoDate(date), end: '' }, 'calendar');\n return;\n }\n\n setFocusedDate(date);\n setRangeValue({ start: toIsoDate(startDate), end: toIsoDate(date) }, 'calendar');\n closeCalendar(true);\n };\n\n const focusCalendarDate = (date: Date) => {\n if (isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n setFocusedDate(date);\n setVisibleMonth(startOfMonth(date));\n };\n\n const handleDayKeyDown =\n (date: Date): ButtonHTMLAttributes<HTMLButtonElement>['onKeyDown'] =>\n (event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n closeCalendar(true);\n return;\n }\n\n const weekOffset = (date.getDay() - weekStartsOn + 7) % 7;\n const nextDateByKey: Record<string, Date> = {\n ArrowLeft: addDays(date, -1),\n ArrowRight: addDays(date, 1),\n ArrowUp: addDays(date, -7),\n ArrowDown: addDays(date, 7),\n Home: addDays(date, -weekOffset),\n End: addDays(date, 6 - weekOffset),\n PageUp: addMonthsClamped(date, -1),\n PageDown: addMonthsClamped(date, 1),\n };\n const nextDate = nextDateByKey[event.key];\n\n if (!nextDate) {\n return;\n }\n\n event.preventDefault();\n focusCalendarDate(nextDate);\n };\n\n return (\n <div\n {...props}\n ref={ref}\n id={rootId}\n style={presetColumnsStyle ? { ...style, ...presetColumnsStyle } : style}\n className={cn(\n 'p-date-range-picker',\n hasPresets && 'p-date-range-picker--with-presets',\n isError && 'p-date-range-picker--error',\n disabled && 'p-date-range-picker--disabled',\n className,\n )}\n >\n <div id={labelId} className=\"p-date-range-picker__label\">\n <span>{label}</span>\n <span\n className={cn(\n 'p-date-range-picker__label-value',\n !hasCompleteRange && 'p-date-range-picker__label-value--empty',\n )}\n >\n {displayValue}\n </span>\n </div>\n\n {hasPresets ? (\n <div\n aria-describedby={messageId}\n aria-labelledby={labelId}\n className={cn(\n 'p-date-range-picker__presets',\n presetColumns !== 'auto' && 'p-date-range-picker__presets--fixed',\n )}\n role=\"group\"\n >\n {presets.map((preset) => {\n const presetRange = resolvePresetRange(preset);\n const isActive = isSameRange(presetRange, selectedValue);\n\n return (\n <button\n key={preset.label}\n type=\"button\"\n className={cn('p-date-range-picker__preset', isActive && 'p-date-range-picker__preset--active')}\n disabled={disabled}\n aria-pressed={isActive}\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n );\n })}\n {shouldRenderCustom ? (\n <button\n type=\"button\"\n className={cn(\n 'p-date-range-picker__preset',\n isCustomActive && 'p-date-range-picker__preset--active',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-expanded={isOpen}\n aria-pressed={isCustomActive}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n {customLabel}\n </button>\n ) : null}\n </div>\n ) : (\n <button\n type=\"button\"\n className={cn(\n 'p-date-range-picker__trigger',\n !hasCompleteRange && 'p-date-range-picker__trigger--empty',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-describedby={messageId}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-labelledby={labelId}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n <span>{displayValue}</span>\n <span className=\"p-date-range-picker__trigger-icon\">\n <CalendarIcon />\n </span>\n </button>\n )}\n\n <input type=\"hidden\" name={nameStart} value={selectedValue?.start ?? ''} required={required} />\n <input type=\"hidden\" name={nameEnd} value={selectedValue?.end ?? ''} required={required} />\n\n {isOpen && (\n <div\n id={panelId}\n className=\"p-date-range-picker__panel\"\n role=\"dialog\"\n aria-labelledby={`${panelId}-title`}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeCalendar();\n }\n }}\n >\n <div className=\"p-date-range-picker__calendar-header\">\n <button\n type=\"button\"\n className=\"p-date-range-picker__nav\"\n aria-label=\"Previous month\"\n onClick={() => setVisibleMonth((date) => addMonths(date, -1))}\n >\n <ChevronLeftIcon />\n </button>\n <div id={`${panelId}-title`} className=\"p-date-range-picker__month\">\n {getMonthLabel(visibleMonth, locale)}\n </div>\n <button\n type=\"button\"\n className=\"p-date-range-picker__nav\"\n aria-label=\"Next month\"\n onClick={() => setVisibleMonth((date) => addMonths(date, 1))}\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n <div className=\"p-date-range-picker__weekdays\" aria-hidden=\"true\">\n {weekdayLabels.map((weekday) => (\n <span key={weekday}>{weekday}</span>\n ))}\n </div>\n\n <div className=\"p-date-range-picker__grid\" role=\"grid\" aria-labelledby={`${panelId}-title`}>\n {calendarDays.map((date) => {\n const isoDate = toIsoDate(date);\n const isOutsideMonth = date.getMonth() !== visibleMonth.getMonth();\n const isRangeStart = isSameDay(date, startDate);\n const isRangeEnd = isSameDay(date, endDate);\n const isRangeMiddle = isInRange(date, startDate, endDate);\n const isToday = isSameDay(date, today);\n const isDisabled = isBeforeDate(date, minDate) || isAfterDate(date, maxDate);\n\n return (\n <button\n key={isoDate}\n ref={(node) => {\n dayRefs.current[isoDate] = node as unknown as FocusableElement | null;\n }}\n type=\"button\"\n role=\"gridcell\"\n data-date={isoDate}\n className={cn(\n 'p-date-range-picker__day',\n isOutsideMonth && 'p-date-range-picker__day--outside',\n isToday && 'p-date-range-picker__day--today',\n isRangeMiddle && 'p-date-range-picker__day--in-range',\n (isRangeStart || isRangeEnd) && 'p-date-range-picker__day--selected',\n )}\n disabled={isDisabled}\n aria-label={getDayLabel(date, locale)}\n aria-selected={isRangeStart || isRangeEnd}\n tabIndex={isSameDay(date, focusedDate) ? 0 : -1}\n onClick={() => handleDayClick(date)}\n onKeyDown={handleDayKeyDown(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-date-range-picker__message p-date-range-picker__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-date-range-picker__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPDateRangePicker.displayName = 'PDateRangePicker';\n\nexport const PDateRangePickerPresets = {\n thisWeek: {\n label: 'This week',\n value: () => {\n const today = getToday();\n const weekStart = addDays(today, -today.getDay());\n\n return {\n start: toIsoDate(weekStart),\n end: toIsoDate(addDays(weekStart, 6)),\n };\n },\n },\n last7Days: {\n label: 'Last 7 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -6)),\n end: toIsoDate(today),\n };\n },\n },\n last14Days: {\n label: 'Last 14 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -13)),\n end: toIsoDate(today),\n };\n },\n },\n last30Days: {\n label: 'Last 30 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -29)),\n end: toIsoDate(today),\n };\n },\n },\n thisMonth: {\n label: 'This month',\n value: () => {\n const today = getToday();\n const start = startOfMonth(today);\n const end = endOfMonth(today);\n\n return {\n start: toIsoDate(start),\n end: toIsoDate(end),\n };\n },\n },\n lastMonth: {\n label: 'Last month',\n value: () => {\n const today = getToday();\n const lastMonth = addMonths(today, -1);\n\n return {\n start: toIsoDate(startOfMonth(lastMonth)),\n end: toIsoDate(endOfMonth(lastMonth)),\n };\n },\n },\n monthToDate: {\n label: 'Month to date',\n value: () => {\n const today = getToday();\n const start = startOfMonth(today);\n\n return {\n start: toIsoDate(start),\n end: toIsoDate(today),\n };\n },\n },\n yearToDate: {\n label: 'Year to date',\n value: () => {\n const today = getToday();\n\n return {\n start: toIsoDate(new Date(today.getFullYear(), 0, 1)),\n end: toIsoDate(today),\n };\n },\n },\n} satisfies Record<string, PDateRangePickerPreset>;\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PHighlight.css';\n\nexport type PHighlightVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info' | 'neutral';\nexport type PHighlightAppearance = 'text' | 'background';\nexport type PHighlightRef = HTMLElement;\n\nexport type PHighlightProps = {\n as?: ElementType;\n variant?: PHighlightVariant;\n /** Controls whether the highlight is text-only or a filled background. */\n appearance?: PHighlightAppearance;\n /** Custom highlight color. Text color by default, background color for `appearance=\"background\"`. */\n color?: CSSProperties['color'];\n /** Custom foreground color for `appearance=\"background\"`. */\n textColor?: CSSProperties['color'];\n children: ReactNode;\n className?: string;\n style?: CSSProperties;\n} & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'color' | 'style'>;\n\ntype PHighlightStyle = CSSProperties & {\n '--p-highlight-color'?: CSSProperties['color'];\n '--p-highlight-bg'?: CSSProperties['backgroundColor'];\n '--p-highlight-text'?: CSSProperties['color'];\n};\n\nexport const PHighlight = forwardRef<PHighlightRef, PHighlightProps>(\n (\n {\n as: Element = 'span',\n variant = 'primary',\n appearance = 'text',\n color,\n textColor,\n children,\n className,\n style,\n ...props\n },\n ref,\n ) => {\n const highlightStyle: PHighlightStyle = {\n ...style,\n ...(color ? { '--p-highlight-color': color, '--p-highlight-bg': color } : {}),\n ...(textColor ? { '--p-highlight-text': textColor } : {}),\n };\n\n return (\n <Element\n {...props}\n ref={ref}\n className={cn(\n 'p-highlight',\n `p-highlight--${variant}`,\n appearance === 'background' && 'p-highlight--background',\n className,\n )}\n style={highlightStyle}\n >\n {children}\n </Element>\n );\n },\n);\n\nPHighlight.displayName = 'PHighlight';\n","import {\n Children,\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PHorizontalSlider.css';\n\nexport type PHorizontalSliderRef = HTMLDivElement;\n\nexport type PHorizontalSliderProps = {\n children: ReactNode;\n /** Accessible label for the keyboard-focusable scroll region. */\n ariaLabel?: string;\n /** Gap between slider items. Accepts any CSS gap value. */\n gap?: CSSProperties['gap'];\n /** Disables horizontal snap alignment when free scrolling is preferred. */\n snap?: boolean;\n scrollerClassName?: string;\n listClassName?: string;\n itemClassName?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className'> & {\n className?: string;\n };\n\ntype SliderStyle = CSSProperties & {\n '--p-horizontal-slider-gap'?: CSSProperties['gap'];\n};\n\nexport const PHorizontalSlider = forwardRef<PHorizontalSliderRef, PHorizontalSliderProps>(\n (\n {\n children,\n ariaLabel = 'Horizontal content',\n gap,\n snap = true,\n className,\n scrollerClassName,\n listClassName,\n itemClassName,\n style,\n ...props\n },\n ref,\n ) => {\n const sliderStyle: SliderStyle = {\n ...style,\n ...(gap ? { '--p-horizontal-slider-gap': gap } : {}),\n };\n\n return (\n <div\n {...props}\n ref={ref}\n className={cn('p-horizontal-slider', !snap && 'p-horizontal-slider--no-snap', className)}\n style={sliderStyle}\n >\n <div\n aria-label={ariaLabel}\n className={cn('p-horizontal-slider__scroller', scrollerClassName)}\n role=\"region\"\n tabIndex={0}\n >\n <ul className={cn('p-horizontal-slider__list', listClassName)}>\n {Children.map(children, (child) => (\n <li className={cn('p-horizontal-slider__item', itemClassName)}>{child}</li>\n ))}\n </ul>\n </div>\n </div>\n );\n },\n);\n\nPHorizontalSlider.displayName = 'PHorizontalSlider';\n","import { Stack } from '../PContainers';\nimport { PTypography } from '../PTypography';\n\ninterface Props {\n title: string;\n}\n\nexport default function PSectionHeader({ title }: Props) {\n return (\n <Stack className='pt-2 border-t border-white text-white'>\n <PTypography className='uppercase' variant='body-wide'>\n {title}\n </PTypography>\n </Stack>\n );\n}\n","import { forwardRef, type InputHTMLAttributes, type ReactNode, useId, useState } from 'react';\nimport './PTextInput.css';\nimport cn from '../../utils/cn';\n\nexport type PTextInputRef = HTMLInputElement;\n\nexport type PTextInputProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-input-ring:var(--p-color-info)] [--p-input-bg:var(--p-color-info-surface)]`\n */\n className?: string;\n /** Applied to the inner `<input>` element for layout / spacing overrides. */\n inputClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n /** Decorative element placed on the trailing edge. Ignored when `type=\"password\"`. */\n rightAdornment?: ReactNode;\n} & Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Inline SVG icons ────────────────────────────────────────────────────────\n\nfunction EyeIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"p-text-input__icon\"\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nfunction EyeOffIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"p-text-input__icon\"\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n </svg>\n );\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextInput = forwardRef<PTextInputRef, PTextInputProps>(\n (\n {\n className,\n inputClassName,\n type,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n rightAdornment,\n disabled,\n readOnly,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const errorId = `${inputId}-error`;\n const helperId = `${inputId}-helper`;\n\n const isPassword = type === 'password';\n const hasRightAdornment = Boolean(rightAdornment) && !isPassword;\n const [showPassword, setShowPassword] = useState(false);\n\n const inputType = isPassword ? (showPassword ? 'text' : 'password') : (type ?? 'text');\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-input', className)} style={style}>\n <input\n {...props}\n id={inputId}\n ref={ref}\n type={inputType}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n autoComplete={props.autoComplete ?? (isPassword ? 'current-password' : undefined)}\n className={cn(\n 'p-text-input__control',\n (isPassword || hasRightAdornment) && 'p-text-input__control--adorned',\n isError && 'p-text-input__control--error',\n hasRightAdornment && type === 'date' && 'p-text-input__control--date-adorned',\n inputClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'p-text-input__label p-text-input__floating-label',\n isError && 'p-text-input__label--error',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — centered in the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the input beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={inputId}\n className=\"p-text-input__label p-text-input__placeholder-label\"\n >\n {label}\n </label>\n\n {/* Password toggle */}\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={disabled}\n className=\"p-text-input__action\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n aria-controls={inputId}\n >\n {showPassword ? <EyeIcon /> : <EyeOffIcon />}\n </button>\n )}\n\n {/* Right adornment — decorative, hidden from assistive tech */}\n {hasRightAdornment && (\n <span aria-hidden=\"true\" className=\"p-text-input__adornment\">\n {rightAdornment}\n </span>\n )}\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p\n id={errorId}\n role=\"alert\"\n className=\"p-text-input__message p-text-input__message--error\"\n >\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p\n id={helperId}\n className=\"p-text-input__message p-text-input__message--helper\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextInput.displayName = 'PTextInput';\n","import { forwardRef, type TextareaHTMLAttributes, useId } from 'react';\nimport './PTextArea.css';\nimport cn from '../../utils/cn';\n\nexport type PTextAreaRef = HTMLTextAreaElement;\n\nexport type PTextAreaProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-textarea-ring:var(--p-color-info)] [--p-textarea-bg:var(--p-color-info-surface)]`\n */\n className?: string;\n /** Applied to the inner `<textarea>` element for layout / spacing overrides. */\n textareaClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n} & Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextArea = forwardRef<PTextAreaRef, PTextAreaProps>(\n (\n {\n className,\n textareaClassName,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n disabled,\n readOnly,\n rows = 4,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const errorId = `${textareaId}-error`;\n const helperId = `${textareaId}-helper`;\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-area', className)} style={style}>\n <textarea\n {...props}\n id={textareaId}\n ref={ref}\n rows={rows}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n className={cn(\n 'p-text-area__control',\n isError && 'p-text-area__control--error',\n textareaClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'p-text-area__label p-text-area__floating-label',\n isError && 'p-text-area__label--error',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — sits near the top of the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the textarea beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={textareaId}\n className=\"p-text-area__label p-text-area__placeholder-label\"\n >\n {label}\n </label>\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p\n id={errorId}\n role=\"alert\"\n className=\"p-text-area__message p-text-area__message--error\"\n >\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p\n id={helperId}\n className=\"p-text-area__message p-text-area__message--helper\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextArea.displayName = 'PTextArea';\n"],"names":["Row","children","gap","alignItems","justifyContent","className","jsx","cn","Stack","PBadge","forwardRef","Element","variant","size","appearance","leftIcon","rightIcon","props","ref","jsxs","PButton","fullWidth","isActive","isLoading","isUnavailable","buttonClassName","content","Fragment","anchorDisabled","onClick","anchorProps","handleClick","event","type","buttonDisabled","buttonProps","r","f","n","clsx","falsyToString","value","cx","cva","base","config","variants","defaultVariants","getVariantClassNames","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","fontVariantsMap","PTypographyVariants","PTypography","hasRenderableNode","node","renderMetaNode","getCardSizeValue","PCard","prefix","eyebrow","title","description","media","actions","density","width","minWidth","height","minHeight","style","isInteractive","cardClassName","cardStyle","dayFormatter","toLocalDate","parts","year","month","day","date","toIsoDate","startOfMonth","endOfMonth","addMonths","months","addMonthsClamped","monthStart","lastDay","addDays","days","isSameDay","a","b","getToday","today","getCalendarDays","monthDate","weekStartsOn","offset","gridStart","_","index","resolvePresetDate","preset","getMonthLabel","locale","getDateLabel","getDayLabel","getWeekdayLabels","baseSunday","isBeforeDate","minDate","isAfterDate","maxDate","CalendarIcon","ChevronLeftIcon","ChevronRightIcon","PDatePicker","label","defaultValue","onValueChange","presets","customLabel","showCustom","presetColumns","placeholder","helperText","isError","errorMessage","min","max","name","disabled","readOnly","required","id","generatedId","useId","rootId","labelId","panelId","helperId","errorId","isControlled","internalValue","setInternalValue","useState","isOpen","setIsOpen","selectedValue","selectedDate","useMemo","visibleMonth","setVisibleMonth","focusedDate","setFocusedDate","calendarTriggerRef","useRef","dayRefs","calendarDays","weekdayLabels","hasPresets","shouldRenderCustom","presetColumnsStyle","messageId","displayValue","selectedMatchesPreset","isCustomActive","useEffect","_a","setDateValue","source","nextValue","openCalendar","trigger","nextFocusedDate","closeCalendar","restoreFocus","handlePresetClick","presetDate","handleDayClick","focusCalendarDate","handleDayKeyDown","weekOffset","nextDate","weekday","isoDate","isOutsideMonth","isSelected","isToday","isDisabled","PDatePickerPresets","isInRange","startDate","endDate","normalizeRange","resolvePresetRange","getRangeDates","isSameRange","getRangeLabel","PDateRangePicker","nameStart","nameEnd","hasCompleteRange","setRangeValue","range","nextStartDate","nextEndDate","normalizedRange","normalizedDates","presetRange","isRangeStart","isRangeEnd","isRangeMiddle","PDateRangePickerPresets","weekStart","start","end","lastMonth","PHighlight","color","textColor","highlightStyle","PHorizontalSlider","ariaLabel","snap","scrollerClassName","listClassName","itemClassName","sliderStyle","child","PSectionHeader","EyeIcon","EyeOffIcon","PTextInput","inputClassName","rightAdornment","inputId","isPassword","hasRightAdornment","showPassword","setShowPassword","inputType","describedBy","v","PTextArea","textareaClassName","rows","textareaId"],"mappings":"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","x_google_ignoreList":[4,5]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/PContainers/Row/Row.tsx","../src/components/PContainers/Stack/Stack.tsx","../src/components/PBadge/PBadge.tsx","../src/components/PButton/PButton.tsx","../node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/PTypography/PTypography.constants.ts","../src/components/PTypography/PTypography.tsx","../src/components/PCard/PCard.tsx","../src/components/PCardGrid/PCardGrid.tsx","../src/components/PCombobox/PCombobox.tsx","../src/components/PDatePicker/PDatePicker.tsx","../src/components/PDateRangePicker/PDateRangePicker.tsx","../src/components/PHighlight/PHighlight.tsx","../src/components/PHorizontalSlider/PHorizontalSlider.tsx","../src/components/PSelect/PSelect.tsx","../src/components/PPagination/PPagination.tsx","../src/components/PTable/PTable.tsx","../src/components/PSectionHeader/PSectionHeader.tsx","../src/components/PTextInput/PTextInput.tsx","../src/components/PTextArea/PTextArea.tsx"],"sourcesContent":["import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type RowProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Row: FC<RowProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-row', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Row;\n","import { CSSProperties, FC, ReactNode } from 'react';\nimport cn from '../../../utils/cn';\n\nexport type StackProps = {\n children: ReactNode;\n gap?: CSSProperties['gap'];\n alignItems?: CSSProperties['alignItems'];\n justifyContent?: CSSProperties['justifyContent'];\n className?: string;\n};\n\nconst Stack: FC<StackProps> = ({\n children,\n gap = undefined,\n alignItems = undefined,\n justifyContent = undefined,\n className = '',\n}) => {\n return (\n <div\n className={cn('flex flex-col', className)}\n style={{\n gap,\n alignItems,\n justifyContent,\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default Stack;\n","import {\n forwardRef,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PBadge.css';\n\nexport type PBadgeVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info' | 'neutral';\nexport type PBadgeSize = 'sm' | 'md';\nexport type PBadgeAppearance = 'subtle' | 'solid' | 'outline';\nexport type PBadgeRef = HTMLElement;\n\nexport type PBadgeProps = {\n as?: ElementType;\n variant?: PBadgeVariant;\n size?: PBadgeSize;\n appearance?: PBadgeAppearance;\n isPinging?: boolean;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children: ReactNode;\n className?: string;\n} & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'color'>;\n\nexport const PBadge = forwardRef<PBadgeRef, PBadgeProps>(\n (\n {\n as: Element = 'span',\n variant = 'neutral',\n size = 'sm',\n appearance = 'subtle',\n isPinging = false,\n leftIcon,\n rightIcon,\n children,\n className,\n ...props\n },\n ref,\n ) => (\n <Element\n {...props}\n ref={ref}\n className={cn(\n 'p-badge',\n `p-badge--${variant}`,\n `p-badge--${size}`,\n `p-badge--${appearance}`,\n isPinging && 'p-badge--pinging',\n className,\n )}\n >\n {leftIcon && (\n <span className=\"p-badge__icon\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n <span className=\"p-badge__label\">{children}</span>\n {rightIcon && (\n <span className=\"p-badge__icon\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </Element>\n ),\n);\n\nPBadge.displayName = 'PBadge';\n","import {\n forwardRef,\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type MouseEvent,\n type Ref,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PButton.css';\n\nexport type PButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger' | 'ghost';\nexport type PButtonSize = 'sm' | 'md' | 'lg';\nexport type PButtonRef = HTMLButtonElement | HTMLAnchorElement;\n\ntype PButtonBaseProps = {\n variant?: PButtonVariant;\n size?: PButtonSize;\n fullWidth?: boolean;\n isActive?: boolean;\n isLoading?: boolean;\n isPinging?: boolean;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children: ReactNode;\n className?: string;\n};\n\ntype PButtonAsButtonProps = PButtonBaseProps &\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'children'> & {\n href?: undefined;\n };\n\ntype PButtonAsAnchorProps = PButtonBaseProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'children'> & {\n href: string;\n disabled?: boolean;\n type?: never;\n };\n\nexport type PButtonProps = PButtonAsButtonProps | PButtonAsAnchorProps;\ntype PButtonAnchorElementProps = Omit<PButtonAsAnchorProps, keyof PButtonBaseProps>;\ntype PButtonButtonElementProps = Omit<PButtonAsButtonProps, keyof PButtonBaseProps>;\n\nexport const PButton = forwardRef<PButtonRef, PButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n fullWidth = false,\n isActive = false,\n isLoading = false,\n isPinging = false,\n leftIcon,\n rightIcon,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const isUnavailable = Boolean(('disabled' in props && props.disabled) || isLoading);\n const buttonClassName = cn(\n 'p-button',\n `p-button--${variant}`,\n `p-button--${size}`,\n fullWidth && 'p-button--full-width',\n isActive && 'p-button--active',\n isPinging && 'p-button--pinging',\n className,\n );\n const content = (\n <>\n {isLoading ? (\n <span className=\"p-button__spinner\" aria-hidden=\"true\" />\n ) : (\n leftIcon && (\n <span className=\"p-button__icon\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )\n )}\n <span className=\"p-button__label\">{children}</span>\n {!isLoading && rightIcon && (\n <span className=\"p-button__icon\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </>\n );\n\n if ('href' in props && typeof props.href === 'string') {\n const { disabled: anchorDisabled, onClick, ...anchorProps } =\n props as PButtonAnchorElementProps;\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isUnavailable) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <a\n {...anchorProps}\n ref={ref as Ref<HTMLAnchorElement>}\n className={buttonClassName}\n aria-disabled={isUnavailable || undefined}\n aria-busy={isLoading || undefined}\n data-active={isActive || undefined}\n data-disabled={anchorDisabled || undefined}\n tabIndex={isUnavailable ? -1 : anchorProps.tabIndex}\n onClick={handleClick}\n >\n {content}\n </a>\n );\n }\n\n const { type = 'button', disabled: buttonDisabled, ...buttonProps } =\n props as PButtonButtonElementProps;\n\n return (\n <button\n {...buttonProps}\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={Boolean(buttonDisabled || isLoading)}\n className={buttonClassName}\n aria-busy={isLoading || undefined}\n data-active={isActive || undefined}\n >\n {content}\n </button>\n );\n },\n);\n\nPButton.displayName = 'PButton';\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { cva } from 'class-variance-authority';\n\ntype FontVariants =\n | 'serif'\n | 'body'\n | 'body-wide'\n | 'heading'\n | 'heading-lg'\n | 'heading-xl';\n\nconst fontVariantsMap = {\n serif: 'p-typography--serif',\n body: 'p-typography--body',\n 'body-wide': 'p-typography--body-wide',\n heading: 'p-typography--heading',\n 'heading-lg': 'p-typography--heading-lg',\n 'heading-xl': 'p-typography--heading-xl',\n} satisfies Record<FontVariants, string>;\n\nexport const PTypographyVariants = cva('p-typography', {\n variants: {\n variant: fontVariantsMap,\n },\n defaultVariants: {\n variant: 'body',\n },\n});\n","import { VariantProps } from 'class-variance-authority';\nimport { HTMLAttributes } from 'react';\nimport '../../index.css';\nimport cn from '../../utils/cn';\nimport './PTypography.css';\nimport { PTypographyVariants } from './PTypography.constants';\n\nexport interface PTypographyProps\n extends VariantProps<typeof PTypographyVariants>,\n HTMLAttributes<HTMLElement> {\n as?: React.ElementType;\n children: React.ReactNode;\n}\n\nexport default function PTypography({\n as: Element = 'p',\n children,\n className = '',\n variant,\n ...props\n}: PTypographyProps) {\n return (\n <Element\n className={cn(PTypographyVariants({ variant, className }))}\n {...props}\n >\n {children}\n </Element>\n );\n}\n","import {\n forwardRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport { PTypography } from '../PTypography';\nimport './PCard.css';\n\nexport type PCardDensity = 'compact' | 'default' | 'spacious';\nexport type PCardRef = HTMLElement;\n\ntype PCardBaseProps = {\n prefix?: ReactNode;\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n media?: ReactNode;\n actions?: ReactNode;\n density?: PCardDensity;\n fullWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'];\n height?: CSSProperties['height'];\n minHeight?: CSSProperties['minHeight'];\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n};\n\ntype PCardArticleProps = PCardBaseProps &\n Omit<HTMLAttributes<HTMLElement>, 'className' | 'children' | 'style' | 'title'> & {\n href?: undefined;\n };\n\ntype PCardAnchorProps = PCardBaseProps &\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'children' | 'style' | 'title'> & {\n href: string;\n };\n\nexport type PCardProps = PCardArticleProps | PCardAnchorProps;\ntype PCardAnchorElementProps = Omit<PCardAnchorProps, keyof PCardBaseProps>;\ntype PCardArticleElementProps = Omit<PCardArticleProps, keyof PCardBaseProps>;\ntype PCardStyle = CSSProperties & {\n '--p-card-width'?: CSSProperties['width'];\n '--p-card-min-width'?: CSSProperties['minWidth'];\n '--p-card-height'?: CSSProperties['height'];\n '--p-card-min-height'?: CSSProperties['minHeight'];\n};\n\nfunction hasRenderableNode(node: ReactNode) {\n return node !== null && node !== undefined && node !== false && node !== '';\n}\n\nfunction renderMetaNode(node: ReactNode, className: string) {\n if (!hasRenderableNode(node)) {\n return null;\n }\n\n if (typeof node === 'string' || typeof node === 'number') {\n return (\n <PTypography className={className} variant=\"body-wide\">\n {node}\n </PTypography>\n );\n }\n\n return <span className={cn(className, 'p-card__meta-custom')}>{node}</span>;\n}\n\nfunction getCardSizeValue(value: CSSProperties['width']) {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport const PCard = forwardRef<PCardRef, PCardProps>(\n (\n {\n prefix,\n eyebrow,\n title,\n description,\n media,\n actions,\n density = 'default',\n fullWidth = false,\n width,\n minWidth,\n height,\n minHeight,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const isInteractive = 'href' in props && typeof props.href === 'string';\n const cardClassName = cn(\n 'p-card',\n density !== 'default' && `p-card--${density}`,\n fullWidth && 'p-card--full-width',\n width !== undefined && 'p-card--custom-width',\n minWidth !== undefined && 'p-card--custom-min-width',\n height !== undefined && 'p-card--custom-height',\n minHeight !== undefined && 'p-card--custom-min-height',\n isInteractive && 'p-card--interactive',\n className,\n );\n const cardStyle: PCardStyle = {\n ...style,\n ...(width !== undefined ? { '--p-card-width': getCardSizeValue(width) } : {}),\n ...(minWidth !== undefined ? { '--p-card-min-width': getCardSizeValue(minWidth) } : {}),\n ...(height !== undefined ? { '--p-card-height': getCardSizeValue(height) } : {}),\n ...(minHeight !== undefined ? { '--p-card-min-height': getCardSizeValue(minHeight) } : {}),\n };\n\n const content = (\n <>\n {hasRenderableNode(media) && <div className=\"p-card__media\">{media}</div>}\n {(hasRenderableNode(prefix) || hasRenderableNode(eyebrow)) && (\n <div className=\"p-card__meta\">\n {renderMetaNode(prefix, 'p-card__prefix')}\n {renderMetaNode(eyebrow, 'p-card__eyebrow')}\n </div>\n )}\n <div className=\"p-card__body\">\n <PTypography as=\"h3\" className=\"p-card__title\" variant=\"heading\">\n {isInteractive ? (\n <a {...(props as PCardAnchorElementProps)} className=\"p-card__link\">\n {title}\n </a>\n ) : (\n title\n )}\n </PTypography>\n {hasRenderableNode(description) ? (\n <PTypography className=\"p-card__description\" variant=\"body\">\n {description}\n </PTypography>\n ) : null}\n </div>\n {hasRenderableNode(children) && <div className=\"p-card__content\">{children}</div>}\n {hasRenderableNode(actions) && <div className=\"p-card__actions\">{actions}</div>}\n </>\n );\n\n if (isInteractive) {\n return (\n <article ref={ref as React.Ref<HTMLElement>} className={cardClassName} style={cardStyle}>\n {content}\n </article>\n );\n }\n\n return (\n <article\n {...(props as PCardArticleElementProps)}\n ref={ref as React.Ref<HTMLElement>}\n className={cardClassName}\n style={cardStyle}\n >\n {content}\n </article>\n );\n },\n);\n\nPCard.displayName = 'PCard';\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PCardGrid.css';\n\nexport type PCardGridRef = HTMLElement;\nexport type PCardGridGap = 'none' | 'sm' | 'md' | 'lg';\nexport type PCardGridColumns = 1 | 2 | 3 | 4;\n\nexport type PCardGridResponsiveColumns = {\n mobile?: PCardGridColumns;\n tablet?: PCardGridColumns;\n desktop?: PCardGridColumns;\n};\n\nexport type PCardGridProps = {\n as?: ElementType;\n columns?: PCardGridColumns | PCardGridResponsiveColumns;\n minCardWidth?: CSSProperties['width'];\n gap?: PCardGridGap;\n align?: 'stretch' | 'start';\n className?: string;\n children: ReactNode;\n} & Omit<HTMLAttributes<HTMLElement>, 'className' | 'children'>;\n\ntype PCardGridStyle = CSSProperties & {\n '--p-card-grid-mobile-columns'?: number;\n '--p-card-grid-tablet-columns'?: number;\n '--p-card-grid-desktop-columns'?: number;\n '--p-card-grid-min-card-width'?: CSSProperties['width'];\n};\n\nfunction getSizeValue(value: CSSProperties['width']) {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction getColumnConfig(columns: PCardGridProps['columns']) {\n if (!columns) {\n return {\n mobile: 1,\n tablet: 2,\n desktop: 2,\n };\n }\n\n if (typeof columns === 'number') {\n return {\n mobile: 1,\n tablet: Math.min(columns, 2) as PCardGridColumns,\n desktop: columns,\n };\n }\n\n return {\n mobile: columns.mobile ?? 1,\n tablet: columns.tablet ?? columns.mobile ?? 2,\n desktop: columns.desktop ?? columns.tablet ?? columns.mobile ?? 2,\n };\n}\n\nexport const PCardGrid = forwardRef<PCardGridRef, PCardGridProps>(\n (\n {\n as: Element = 'div',\n columns,\n minCardWidth,\n gap = 'none',\n align = 'stretch',\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const columnConfig = getColumnConfig(columns);\n const gridStyle: PCardGridStyle = {\n ...style,\n '--p-card-grid-mobile-columns': columnConfig.mobile,\n '--p-card-grid-tablet-columns': columnConfig.tablet,\n '--p-card-grid-desktop-columns': columnConfig.desktop,\n ...(minCardWidth !== undefined\n ? { '--p-card-grid-min-card-width': getSizeValue(minCardWidth) }\n : {}),\n };\n\n return (\n <Element\n {...props}\n ref={ref}\n className={cn(\n 'p-card-grid',\n `p-card-grid--gap-${gap}`,\n align === 'start' && 'p-card-grid--align-start',\n minCardWidth !== undefined && 'p-card-grid--auto-fit',\n className,\n )}\n style={gridStyle}\n >\n {children}\n </Element>\n );\n },\n);\n\nPCardGrid.displayName = 'PCardGrid';\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type FocusEvent,\n type ForwardedRef,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PCombobox.css';\n\nexport type PComboboxRef = HTMLDivElement;\nexport type PComboboxFilterMode = 'local' | 'none';\nexport type PComboboxQueryChangeSource = 'input' | 'open' | 'clear' | 'selection' | 'reset';\n\nexport type PComboboxOption = {\n value: string;\n label: string;\n description?: string;\n group?: string;\n meta?: ReactNode;\n keywords?: string[];\n disabled?: boolean;\n};\n\nexport type PComboboxProps = {\n label: string;\n options: PComboboxOption[];\n value?: string;\n defaultValue?: string;\n selectedOption?: PComboboxOption | null;\n onValueChange?: (value: string, option: PComboboxOption | null) => void;\n query?: string;\n defaultQuery?: string;\n onQueryChange?: (query: string, details: { source: PComboboxQueryChangeSource }) => void;\n filterMode?: PComboboxFilterMode;\n isLoading?: boolean;\n isLoadingMore?: boolean;\n hasMore?: boolean;\n onLoadMore?: (details: { query: string; optionCount: number }) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n loadingText?: string;\n loadingMoreText?: string;\n loadMoreText?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n name?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n clearable?: boolean;\n className?: string;\n inputClassName?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'defaultValue' | 'onChange'>;\n\ntype ContainsElement = {\n contains: (target: EventTarget | null) => boolean;\n};\n\ntype FocusableElement = {\n focus: () => void;\n};\n\ntype ScrollableElement = {\n scrollIntoView: (options?: { block?: 'nearest' }) => void;\n};\n\ntype ScrollMetricsElement = {\n scrollTop: number;\n clientHeight: number;\n scrollHeight: number;\n};\n\ntype ValidatableElement = {\n setCustomValidity: (error: string) => void;\n};\n\ntype ViewportMatcher = {\n matchMedia?: (query: string) => {\n matches: boolean;\n addEventListener?: (type: 'change', listener: () => void) => void;\n removeEventListener?: (type: 'change', listener: () => void) => void;\n };\n};\n\nfunction ChevronDownIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m5 8 5 5 5-5\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m4 10 4 4 8-8\" />\n </svg>\n );\n}\n\nfunction XIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m5 5 10 10\" />\n <path d=\"m15 5-10 10\" />\n </svg>\n );\n}\n\nfunction normalizeText(value: string) {\n return value.trim().toLocaleLowerCase();\n}\n\nfunction filterOptions(options: PComboboxOption[], query: string) {\n const normalizedQuery = normalizeText(query);\n\n if (!normalizedQuery) {\n return options;\n }\n\n return options.filter((option) => {\n const searchableText = [\n option.label,\n option.value,\n option.description,\n option.group,\n ...(option.keywords ?? []),\n ]\n .filter(Boolean)\n .join(' ');\n\n return normalizeText(searchableText).includes(normalizedQuery);\n });\n}\n\nfunction getFirstEnabledIndex(options: PComboboxOption[]) {\n return options.findIndex((option) => !option.disabled);\n}\n\nfunction getSelectedIndex(options: PComboboxOption[], selectedValue: string | undefined) {\n const selectedIndex = options.findIndex((option) => option.value === selectedValue && !option.disabled);\n\n return selectedIndex >= 0 ? selectedIndex : getFirstEnabledIndex(options);\n}\n\nfunction getNextEnabledIndex(options: PComboboxOption[], activeIndex: number, direction: 1 | -1) {\n if (!options.length) {\n return -1;\n }\n\n let nextIndex = activeIndex;\n\n for (let attempt = 0; attempt < options.length; attempt += 1) {\n nextIndex = (nextIndex + direction + options.length) % options.length;\n\n if (!options[nextIndex]?.disabled) {\n return nextIndex;\n }\n }\n\n return -1;\n}\n\nfunction assignRef(ref: ForwardedRef<PComboboxRef>, node: PComboboxRef | null) {\n if (typeof ref === 'function') {\n ref(node);\n return;\n }\n\n if (ref) {\n ref.current = node;\n }\n}\n\nexport const PCombobox = forwardRef<PComboboxRef, PComboboxProps>(\n (\n {\n label,\n options,\n value,\n defaultValue,\n selectedOption: selectedOptionProp,\n onValueChange,\n query: queryProp,\n defaultQuery,\n onQueryChange,\n filterMode = 'local',\n isLoading = false,\n isLoadingMore = false,\n hasMore = false,\n onLoadMore,\n placeholder = 'Select an option',\n searchPlaceholder = 'Search options',\n emptyText = 'No options found.',\n loadingText = 'Loading options...',\n loadingMoreText = 'Loading more options...',\n loadMoreText = 'Load more options',\n helperText,\n isError = false,\n errorMessage,\n name,\n disabled = false,\n readOnly = false,\n required = false,\n clearable = true,\n className,\n inputClassName,\n id,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const rootId = id ?? generatedId;\n const labelId = `${rootId}-label`;\n const inputId = `${rootId}-input`;\n const listboxId = `${rootId}-listbox`;\n const helperId = `${rootId}-helper`;\n const errorId = `${rootId}-error`;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<(HTMLInputElement & FocusableElement) | null>(null);\n const modalInputRef = useRef<(HTMLInputElement & FocusableElement) | null>(null);\n const hiddenInputRef = useRef<(HTMLInputElement & ValidatableElement) | null>(null);\n const activeOptionRef = useRef<ScrollableElement | null>(null);\n const panelRef = useRef<ScrollMetricsElement | null>(null);\n const isControlled = value !== undefined;\n const isQueryControlled = queryProp !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const selectedValue = isControlled ? value : internalValue;\n const selectedOption =\n selectedOptionProp?.value === selectedValue\n ? selectedOptionProp\n : options.find((option) => option.value === selectedValue) ?? null;\n const [internalQuery, setInternalQuery] = useState(defaultQuery ?? selectedOption?.label ?? '');\n const query = isQueryControlled ? queryProp : internalQuery;\n const [isOpen, setIsOpen] = useState(false);\n const [isModalViewport, setIsModalViewport] = useState(false);\n const filteredOptions = useMemo(\n () => (filterMode === 'local' ? filterOptions(options, query) : options),\n [filterMode, options, query],\n );\n const [activeIndex, setActiveIndex] = useState(() => getSelectedIndex(options, selectedValue));\n const activeOption = isOpen ? filteredOptions[activeIndex] : undefined;\n const activeOptionId = activeOption ? `${listboxId}-option-${activeIndex}` : undefined;\n const modalTitleId = `${rootId}-modal-title`;\n const messageId = isError && errorMessage ? errorId : helperText ? helperId : undefined;\n const hasSelection = Boolean(selectedOption);\n const canClear = clearable && hasSelection && !disabled && !readOnly;\n const inputValue = isOpen ? query : selectedOption?.label ?? query;\n const showInitialLoading = isLoading && filteredOptions.length === 0;\n const showFooterLoading = isLoadingMore || (isLoading && filteredOptions.length > 0);\n const showLoadMore = Boolean(hasMore && onLoadMore && !isLoading && !isLoadingMore);\n\n useEffect(() => {\n if (!isOpen && !isQueryControlled) {\n setInternalQuery(selectedOption?.label ?? '');\n }\n }, [isOpen, isQueryControlled, selectedOption]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n setActiveIndex((currentIndex) => {\n if (filteredOptions[currentIndex] && !filteredOptions[currentIndex].disabled) {\n return currentIndex;\n }\n\n return getSelectedIndex(filteredOptions, selectedValue);\n });\n }, [filteredOptions, isOpen, selectedValue]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n activeOptionRef.current?.scrollIntoView({ block: 'nearest' });\n }, [activeIndex, isOpen]);\n\n useEffect(() => {\n const matcher = globalThis as unknown as ViewportMatcher;\n const mediaQuery = matcher.matchMedia?.('(max-width: 64rem)');\n\n if (!mediaQuery) {\n return;\n }\n\n const syncModalViewport = () => setIsModalViewport(mediaQuery.matches);\n syncModalViewport();\n mediaQuery.addEventListener?.('change', syncModalViewport);\n\n return () => mediaQuery.removeEventListener?.('change', syncModalViewport);\n }, []);\n\n useEffect(() => {\n if (!isOpen || !isModalViewport) {\n return;\n }\n\n modalInputRef.current?.focus();\n }, [isModalViewport, isOpen]);\n\n useEffect(() => {\n if (!hiddenInputRef.current) {\n return;\n }\n\n hiddenInputRef.current.setCustomValidity(required && !selectedValue ? 'Select an option.' : '');\n }, [required, selectedValue]);\n\n const setRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n assignRef(ref, node);\n };\n\n const setSearchQuery = (nextQuery: string, source: PComboboxQueryChangeSource) => {\n if (!isQueryControlled) {\n setInternalQuery(nextQuery);\n }\n\n onQueryChange?.(nextQuery, { source });\n };\n\n const requestLoadMore = () => {\n if (!hasMore || !onLoadMore || isLoading || isLoadingMore) {\n return;\n }\n\n onLoadMore({ query, optionCount: filteredOptions.length });\n };\n\n useEffect(() => {\n if (!isOpen || !panelRef.current) {\n return;\n }\n\n const { scrollHeight, clientHeight } = panelRef.current;\n\n if (scrollHeight <= clientHeight + 48) {\n requestLoadMore();\n }\n });\n\n const commitValue = (nextOption: PComboboxOption | null) => {\n const nextValue = nextOption?.value ?? '';\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n setSearchQuery(nextOption?.label ?? '', nextOption ? 'selection' : 'clear');\n onValueChange?.(nextValue, nextOption);\n };\n\n const openCombobox = (nextQuery = query) => {\n if (disabled || readOnly) {\n return;\n }\n\n const nextOptions = filterMode === 'local' ? filterOptions(options, nextQuery) : options;\n setSearchQuery(nextQuery, 'open');\n setActiveIndex(getSelectedIndex(nextOptions, selectedValue));\n setIsOpen(true);\n };\n\n const closeCombobox = () => {\n setIsOpen(false);\n setSearchQuery(selectedOption?.label ?? '', 'reset');\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = (event.currentTarget as unknown as { value: string }).value;\n const nextOptions = filterMode === 'local' ? filterOptions(options, nextQuery) : options;\n\n setSearchQuery(nextQuery, 'input');\n setActiveIndex(getFirstEnabledIndex(nextOptions));\n setIsOpen(true);\n };\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!isOpen) {\n openCombobox('');\n return;\n }\n\n setActiveIndex((currentIndex) => getNextEnabledIndex(filteredOptions, currentIndex, 1));\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!isOpen) {\n openCombobox('');\n return;\n }\n\n setActiveIndex((currentIndex) => getNextEnabledIndex(filteredOptions, currentIndex, -1));\n return;\n }\n\n if (event.key === 'Enter') {\n if (!isOpen) {\n openCombobox(query);\n return;\n }\n\n if (activeOption && !activeOption.disabled) {\n event.preventDefault();\n commitValue(activeOption);\n setIsOpen(false);\n }\n\n return;\n }\n\n if (event.key === 'Escape' && isOpen) {\n event.preventDefault();\n closeCombobox();\n return;\n }\n\n if (event.key === 'Tab') {\n closeCombobox();\n }\n };\n\n const handleOptionPointerDown = (event: MouseEvent<HTMLDivElement>, option: PComboboxOption) => {\n event.preventDefault();\n\n if (option.disabled) {\n return;\n }\n\n commitValue(option);\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n commitValue(null);\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n const handlePanelScroll = (event: UIEvent<HTMLDivElement>) => {\n const panel = event.currentTarget as unknown as ScrollMetricsElement;\n const distanceToBottom = panel.scrollHeight - panel.scrollTop - panel.clientHeight;\n\n if (distanceToBottom <= 48) {\n requestLoadMore();\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (!isOpen) {\n return;\n }\n\n const currentTarget = event.currentTarget as unknown as ContainsElement;\n\n if (!currentTarget.contains(event.relatedTarget)) {\n closeCombobox();\n }\n };\n\n const groups = filteredOptions.reduce<Array<{ group: string | null; options: PComboboxOption[] }>>(\n (accumulator, option) => {\n const group = option.group ?? null;\n const existingGroup = accumulator.find((item) => item.group === group);\n\n if (existingGroup) {\n existingGroup.options.push(option);\n return accumulator;\n }\n\n accumulator.push({ group, options: [option] });\n return accumulator;\n },\n [],\n );\n\n return (\n <div\n {...props}\n ref={setRootRef}\n id={rootId}\n style={style}\n onBlur={handleBlur}\n className={cn(\n 'p-combobox',\n isOpen && 'p-combobox--open',\n isError && 'p-combobox--error',\n disabled && 'p-combobox--disabled',\n readOnly && 'p-combobox--readonly',\n className,\n )}\n >\n <div className=\"p-combobox__field\">\n <input\n ref={inputRef}\n id={inputId}\n role=\"combobox\"\n type=\"text\"\n value={inputValue}\n placeholder={isOpen ? searchPlaceholder : ' '}\n disabled={disabled}\n readOnly={readOnly}\n required={false}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-describedby={messageId}\n aria-activedescendant={activeOptionId}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-invalid={isError || undefined}\n aria-labelledby={labelId}\n autoComplete=\"off\"\n className={cn('p-combobox__input', (canClear || hasSelection) && 'p-combobox__input--adorned', inputClassName)}\n onChange={handleInputChange}\n onClick={() => openCombobox('')}\n onKeyDown={handleInputKeyDown}\n />\n\n <label\n id={labelId}\n htmlFor={inputId}\n className={cn('p-combobox__label p-combobox__floating-label', isError && 'p-combobox__label--error')}\n >\n {label}\n </label>\n\n <span aria-hidden=\"true\" className=\"p-combobox__label p-combobox__placeholder-label\">\n {placeholder || label}\n </span>\n\n {canClear ? (\n <button\n type=\"button\"\n className=\"p-combobox__clear\"\n aria-label={`Clear ${label}`}\n onMouseDown={handleClear}\n >\n <XIcon />\n </button>\n ) : null}\n\n <span className=\"p-combobox__chevron\" aria-hidden=\"true\">\n <ChevronDownIcon />\n </span>\n\n {isOpen ? (\n <div\n className=\"p-combobox__panel\"\n role={isModalViewport ? 'dialog' : undefined}\n aria-modal={isModalViewport || undefined}\n aria-labelledby={isModalViewport ? modalTitleId : undefined}\n >\n <div className=\"p-combobox__modal-header\">\n <div id={modalTitleId} className=\"p-combobox__modal-title\">{label}</div>\n <button type=\"button\" className=\"p-combobox__modal-close\" aria-label={`Close ${label}`} onClick={closeCombobox}>\n <XIcon />\n </button>\n </div>\n <div className=\"p-combobox__modal-search\">\n <input\n ref={modalInputRef}\n role=\"combobox\"\n type=\"search\"\n value={query}\n placeholder={searchPlaceholder}\n aria-activedescendant={activeOptionId}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={`Search ${label}`}\n autoComplete=\"off\"\n className=\"p-combobox__modal-input\"\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n\n <div\n id={listboxId}\n ref={(node) => {\n panelRef.current = node as unknown as ScrollMetricsElement | null;\n }}\n role=\"listbox\"\n aria-busy={isLoading || isLoadingMore || undefined}\n aria-labelledby={labelId}\n className=\"p-combobox__list\"\n onScroll={handlePanelScroll}\n >\n {showInitialLoading ? (\n <div className=\"p-combobox__status\" role=\"option\" aria-disabled=\"true\" aria-selected=\"false\">\n <span className=\"p-combobox__spinner\" aria-hidden=\"true\" />\n <span>{loadingText}</span>\n </div>\n ) : null}\n\n {groups.length ? (\n groups.map((group) => (\n <div key={group.group ?? 'ungrouped'} className=\"p-combobox__group\">\n {group.group ? <div className=\"p-combobox__group-label\">{group.group}</div> : null}\n {group.options.map((option) => {\n const optionIndex = filteredOptions.indexOf(option);\n const isActive = optionIndex === activeIndex;\n const isSelected = option.value === selectedValue;\n\n return (\n <div\n key={option.value}\n ref={\n isActive\n ? (node) => {\n activeOptionRef.current = node as unknown as ScrollableElement | null;\n }\n : undefined\n }\n id={`${listboxId}-option-${optionIndex}`}\n role=\"option\"\n aria-disabled={option.disabled || undefined}\n aria-selected={isSelected}\n className={cn(\n 'p-combobox__option',\n isActive && 'p-combobox__option--active',\n isSelected && 'p-combobox__option--selected',\n option.disabled && 'p-combobox__option--disabled',\n )}\n onMouseDown={(event) => handleOptionPointerDown(event, option)}\n >\n <span className=\"p-combobox__option-check\">\n {isSelected ? <CheckIcon /> : null}\n </span>\n <span className=\"p-combobox__option-content\">\n <span className=\"p-combobox__option-label\">{option.label}</span>\n {option.description ? (\n <span className=\"p-combobox__option-description\">{option.description}</span>\n ) : null}\n </span>\n {option.meta ? <span className=\"p-combobox__option-meta\">{option.meta}</span> : null}\n </div>\n );\n })}\n </div>\n ))\n ) : !showInitialLoading ? (\n <div className=\"p-combobox__empty\" role=\"option\" aria-disabled=\"true\" aria-selected=\"false\">\n {emptyText}\n </div>\n ) : null}\n\n {showFooterLoading ? (\n <div className=\"p-combobox__status p-combobox__status--footer\" role=\"option\" aria-disabled=\"true\" aria-selected=\"false\">\n <span className=\"p-combobox__spinner\" aria-hidden=\"true\" />\n <span>{loadingMoreText}</span>\n </div>\n ) : null}\n </div>\n\n {showLoadMore ? (\n <div className=\"p-combobox__footer\">\n <button type=\"button\" className=\"p-combobox__load-more\" onMouseDown={(event) => event.preventDefault()} onClick={requestLoadMore}>\n {loadMoreText}\n </button>\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n\n <input\n ref={hiddenInputRef}\n type=\"text\"\n name={name}\n value={selectedValue ?? ''}\n required={required}\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"p-combobox__hidden-input\"\n onChange={() => undefined}\n />\n\n {isOpen ? (\n <div className=\"p-combobox__backdrop\" aria-hidden=\"true\" onMouseDown={closeCombobox} />\n ) : null}\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-combobox__message p-combobox__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-combobox__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPCombobox.displayName = 'PCombobox';\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ChangeEvent,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from '../../icons';\nimport cn from '../../utils/cn';\nimport './PDatePicker.css';\n\nexport type PDatePickerRef = HTMLDivElement;\nexport type PDatePickerChangeSource = 'preset' | 'calendar';\nexport type PDatePickerPresetColumns = 2 | 3 | 4 | 'auto';\ntype FocusableElement = { focus: () => void };\n\nexport type PDatePickerPreset = {\n label: string;\n value: string | Date | (() => string | Date);\n};\n\nexport type PDatePickerProps = {\n label: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (\n value: string,\n details: { date: Date | null; source: PDatePickerChangeSource },\n ) => void;\n presets?: PDatePickerPreset[];\n customLabel?: string;\n showCustom?: boolean;\n presetColumns?: PDatePickerPresetColumns;\n placeholder?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n min?: string;\n max?: string;\n name?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'defaultValue' | 'onChange'>;\n\nconst dayFormatter = new Intl.DateTimeFormat(undefined, { weekday: 'short' });\n\nfunction toLocalDate(value: string | Date | null | undefined) {\n if (!value) {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime())\n ? null\n : new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n const parts = value.split('-').map(Number);\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [year, month, day] = parts;\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nfunction toIsoDate(date: Date | null) {\n if (!date) {\n return '';\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nfunction addMonths(date: Date, months: number) {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n}\n\nfunction addMonthsClamped(date: Date, months: number) {\n const monthStart = addMonths(date, months);\n const lastDay = endOfMonth(monthStart).getDate();\n\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nfunction addDays(date: Date, days: number) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n return Boolean(a && b && toIsoDate(a) === toIsoDate(b));\n}\n\nfunction getToday() {\n const today = new Date();\n return new Date(today.getFullYear(), today.getMonth(), today.getDate());\n}\n\nfunction getCalendarDays(monthDate: Date, weekStartsOn: number) {\n const monthStart = startOfMonth(monthDate);\n const offset = (monthStart.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n\n return Array.from({ length: 42 }, (_, index) => addDays(gridStart, index));\n}\n\nfunction resolvePresetDate(preset: PDatePickerPreset) {\n const value = typeof preset.value === 'function' ? preset.value() : preset.value;\n return toLocalDate(value);\n}\n\nfunction getMonthLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date);\n}\n\nfunction getMonthOptions(locale?: string) {\n return Array.from({ length: 12 }, (_, month) => ({\n label: new Intl.DateTimeFormat(locale, { month: 'long' }).format(new Date(2024, month, 1)),\n value: month,\n }));\n}\n\nfunction getDateLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getDayLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getWeekdayLabels(weekStartsOn: number, locale?: string) {\n const baseSunday = new Date(2024, 0, 7);\n\n return Array.from({ length: 7 }, (_, index) => {\n const date = addDays(baseSunday, weekStartsOn + index);\n return dayFormatter.formatToParts(date).length\n ? new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n : '';\n });\n}\n\nfunction isBeforeDate(date: Date, minDate: Date | null) {\n return Boolean(minDate && date.getTime() < minDate.getTime());\n}\n\nfunction isAfterDate(date: Date, maxDate: Date | null) {\n return Boolean(maxDate && date.getTime() > maxDate.getTime());\n}\n\nfunction isSameMonth(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nfunction isMonthDisabled(monthDate: Date, minDate: Date | null, maxDate: Date | null) {\n const monthStart = startOfMonth(monthDate);\n const monthEnd = endOfMonth(monthDate);\n\n return Boolean((minDate && monthEnd < minDate) || (maxDate && monthStart > maxDate));\n}\n\nfunction clampVisibleMonth(monthDate: Date, minDate: Date | null, maxDate: Date | null) {\n if (minDate && endOfMonth(monthDate) < minDate) {\n return startOfMonth(minDate);\n }\n\n if (maxDate && startOfMonth(monthDate) > maxDate) {\n return startOfMonth(maxDate);\n }\n\n return startOfMonth(monthDate);\n}\n\nfunction getFocusableDateInMonth(monthDate: Date, preferredDate: Date, minDate: Date | null, maxDate: Date | null) {\n const monthStart = startOfMonth(monthDate);\n const monthEnd = endOfMonth(monthDate);\n let nextDate = new Date(\n monthStart.getFullYear(),\n monthStart.getMonth(),\n Math.min(preferredDate.getDate(), monthEnd.getDate()),\n );\n\n if (minDate && nextDate < minDate) {\n nextDate = isSameMonth(minDate, monthStart) ? minDate : monthStart;\n }\n\n if (maxDate && nextDate > maxDate) {\n nextDate = isSameMonth(maxDate, monthStart) ? maxDate : monthEnd;\n }\n\n return nextDate;\n}\n\nfunction getYearOptions(visibleMonth: Date, minDate: Date | null, maxDate: Date | null, today: Date) {\n const visibleYear = visibleMonth.getFullYear();\n const defaultStartYear = Math.min(visibleYear, today.getFullYear() - 100);\n const defaultEndYear = Math.max(visibleYear, today.getFullYear() + 20);\n const startYear = minDate?.getFullYear() ?? defaultStartYear;\n const endYear = maxDate?.getFullYear() ?? defaultEndYear;\n const firstYear = Math.min(startYear, endYear, visibleYear);\n const lastYear = Math.max(startYear, endYear, visibleYear);\n\n return Array.from({ length: lastYear - firstYear + 1 }, (_, index) => firstYear + index);\n}\n\nexport const PDatePicker = forwardRef<PDatePickerRef, PDatePickerProps>(\n (\n {\n label,\n value,\n defaultValue,\n onValueChange,\n presets = [],\n customLabel = 'Custom',\n showCustom = true,\n presetColumns = 'auto',\n placeholder = 'Select date',\n helperText,\n isError = false,\n errorMessage,\n min,\n max,\n name,\n disabled = false,\n readOnly = false,\n required = false,\n locale,\n weekStartsOn = 0,\n className,\n id,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const rootId = id ?? generatedId;\n const labelId = `${rootId}-label`;\n const panelId = `${rootId}-panel`;\n const helperId = `${rootId}-helper`;\n const errorId = `${rootId}-error`;\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const [isOpen, setIsOpen] = useState(false);\n const selectedValue = isControlled ? value : internalValue;\n const selectedDate = toLocalDate(selectedValue);\n const today = useMemo(getToday, []);\n const minDate = toLocalDate(min);\n const maxDate = toLocalDate(max);\n const [visibleMonth, setVisibleMonth] = useState(() => startOfMonth(selectedDate ?? today));\n const [focusedDate, setFocusedDate] = useState(() => selectedDate ?? today);\n const calendarTriggerRef = useRef<FocusableElement | null>(null);\n const dayRefs = useRef<Record<string, FocusableElement | null>>({});\n const shouldFocusCalendarDateRef = useRef(false);\n const calendarDays = getCalendarDays(visibleMonth, weekStartsOn);\n const weekdayLabels = getWeekdayLabels(weekStartsOn, locale);\n const monthOptions = useMemo(() => getMonthOptions(locale), [locale]);\n const yearOptions = getYearOptions(visibleMonth, minDate, maxDate, today);\n const hasPresets = presets.length > 0;\n const shouldRenderCustom = hasPresets ? showCustom : true;\n const presetColumnsStyle =\n presetColumns === 'auto'\n ? undefined\n : ({\n '--p-date-picker-preset-columns': String(presetColumns),\n } as CSSProperties);\n const messageId = isError && errorMessage ? errorId : helperText ? helperId : undefined;\n const displayValue = selectedDate ? getDateLabel(selectedDate, locale) : placeholder;\n const selectedMatchesPreset = hasPresets\n ? presets.some((preset) => isSameDay(resolvePresetDate(preset), selectedDate))\n : false;\n const isCustomActive = isOpen || Boolean(selectedDate && !selectedMatchesPreset);\n const previousMonth = addMonths(visibleMonth, -1);\n const nextMonth = addMonths(visibleMonth, 1);\n const isPreviousMonthDisabled = isMonthDisabled(previousMonth, minDate, maxDate);\n const isNextMonthDisabled = isMonthDisabled(nextMonth, minDate, maxDate);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n if (shouldFocusCalendarDateRef.current) {\n dayRefs.current[toIsoDate(focusedDate)]?.focus();\n shouldFocusCalendarDateRef.current = false;\n }\n }, [focusedDate, isOpen, visibleMonth]);\n\n const setDateValue = (date: Date | null, source: PDatePickerChangeSource) => {\n const nextValue = toIsoDate(date);\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n if (date) {\n setVisibleMonth(startOfMonth(date));\n }\n\n onValueChange?.(nextValue, { date, source });\n };\n\n const openCalendar = (trigger: HTMLButtonElement) => {\n if (disabled || readOnly) {\n return;\n }\n\n const nextFocusedDate = selectedDate ?? today;\n calendarTriggerRef.current = trigger as unknown as FocusableElement;\n shouldFocusCalendarDateRef.current = true;\n setFocusedDate(nextFocusedDate);\n setVisibleMonth(startOfMonth(nextFocusedDate));\n setIsOpen(true);\n };\n\n const closeCalendar = (restoreFocus = false) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n calendarTriggerRef.current?.focus();\n }\n };\n\n const updateVisibleMonth = (nextMonth: Date) => {\n const clampedMonth = clampVisibleMonth(nextMonth, minDate, maxDate);\n\n setVisibleMonth(clampedMonth);\n setFocusedDate(getFocusableDateInMonth(clampedMonth, focusedDate, minDate, maxDate));\n };\n\n const handleMonthChange = (event: ChangeEvent<HTMLSelectElement>) => {\n const { value: nextMonth } = event.currentTarget as unknown as { value: string };\n\n updateVisibleMonth(new Date(visibleMonth.getFullYear(), Number(nextMonth), 1));\n };\n\n const handleYearChange = (event: ChangeEvent<HTMLSelectElement>) => {\n const { value: nextYear } = event.currentTarget as unknown as { value: string };\n\n updateVisibleMonth(new Date(Number(nextYear), visibleMonth.getMonth(), 1));\n };\n\n const handlePresetClick = (preset: PDatePickerPreset) => {\n if (disabled || readOnly) {\n return;\n }\n\n const presetDate = resolvePresetDate(preset);\n setDateValue(presetDate, 'preset');\n closeCalendar();\n };\n\n const handleDayClick = (date: Date) => {\n if (disabled || readOnly || isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n setFocusedDate(date);\n setDateValue(date, 'calendar');\n closeCalendar(true);\n };\n\n const focusCalendarDate = (date: Date) => {\n if (isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n shouldFocusCalendarDateRef.current = true;\n setFocusedDate(date);\n setVisibleMonth(startOfMonth(date));\n };\n\n const handleDayKeyDown =\n (date: Date): ButtonHTMLAttributes<HTMLButtonElement>['onKeyDown'] =>\n (event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n closeCalendar(true);\n return;\n }\n\n const weekOffset = (date.getDay() - weekStartsOn + 7) % 7;\n const nextDateByKey: Record<string, Date> = {\n ArrowLeft: addDays(date, -1),\n ArrowRight: addDays(date, 1),\n ArrowUp: addDays(date, -7),\n ArrowDown: addDays(date, 7),\n Home: addDays(date, -weekOffset),\n End: addDays(date, 6 - weekOffset),\n PageUp: addMonthsClamped(date, -1),\n PageDown: addMonthsClamped(date, 1),\n };\n const nextDate = nextDateByKey[event.key];\n\n if (!nextDate) {\n return;\n }\n\n event.preventDefault();\n focusCalendarDate(nextDate);\n };\n\n return (\n <div\n {...props}\n ref={ref}\n id={rootId}\n style={presetColumnsStyle ? { ...style, ...presetColumnsStyle } : style}\n className={cn(\n 'p-date-picker',\n hasPresets && 'p-date-picker--with-presets',\n isError && 'p-date-picker--error',\n disabled && 'p-date-picker--disabled',\n className,\n )}\n >\n {hasPresets ? (\n <div id={labelId} className=\"p-date-picker__label\">\n <span>{label}</span>\n <span className={cn('p-date-picker__label-value', !selectedDate && 'p-date-picker__label-value--empty')}>\n {displayValue}\n </span>\n </div>\n ) : null}\n\n {hasPresets ? (\n <div\n aria-describedby={messageId}\n aria-labelledby={labelId}\n className={cn(\n 'p-date-picker__presets',\n presetColumns !== 'auto' && 'p-date-picker__presets--fixed',\n )}\n role=\"group\"\n >\n {presets.map((preset) => {\n const presetDate = resolvePresetDate(preset);\n const isActive = isSameDay(presetDate, selectedDate);\n\n return (\n <button\n key={preset.label}\n type=\"button\"\n className={cn('p-date-picker__preset', isActive && 'p-date-picker__preset--active')}\n disabled={disabled}\n aria-pressed={isActive}\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n );\n })}\n {shouldRenderCustom ? (\n <button\n type=\"button\"\n className={cn(\n 'p-date-picker__preset',\n isCustomActive && 'p-date-picker__preset--active',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-expanded={isOpen}\n aria-pressed={isCustomActive}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n {customLabel}\n </button>\n ) : null}\n </div>\n ) : (\n <button\n type=\"button\"\n className={cn(\n 'p-date-picker__trigger',\n !selectedDate && 'p-date-picker__trigger--empty',\n selectedDate && 'p-date-picker__trigger--filled',\n isOpen && 'p-date-picker__trigger--open',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-describedby={messageId}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-label={`${label}: ${displayValue}`}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n <span\n id={labelId}\n className={cn(\n 'p-date-picker__trigger-label p-date-picker__trigger-floating-label',\n isError && 'p-date-picker__trigger-label--error',\n )}\n aria-hidden=\"true\"\n >\n {label}\n </span>\n <span\n className={cn(\n 'p-date-picker__trigger-label p-date-picker__trigger-placeholder-label',\n isError && 'p-date-picker__trigger-label--error',\n )}\n aria-hidden=\"true\"\n >\n {label}\n </span>\n <span className=\"p-date-picker__trigger-value\">{displayValue}</span>\n <span className=\"p-date-picker__trigger-icon\">\n <CalendarIcon />\n </span>\n </button>\n )}\n\n <input type=\"hidden\" name={name} value={selectedValue ?? ''} required={required} />\n\n {isOpen && (\n <div\n id={panelId}\n className=\"p-date-picker__panel\"\n role=\"dialog\"\n aria-labelledby={`${panelId}-title`}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeCalendar();\n }\n }}\n >\n <div className=\"p-date-picker__calendar-header\">\n <button\n type=\"button\"\n className=\"p-date-picker__nav\"\n aria-label=\"Previous month\"\n disabled={isPreviousMonthDisabled}\n onClick={() => updateVisibleMonth(previousMonth)}\n >\n <ChevronLeftIcon />\n </button>\n <div className=\"p-date-picker__month\">\n <span id={`${panelId}-title`} className=\"p-date-picker__month-label\">\n {getMonthLabel(visibleMonth, locale)}\n </span>\n <select\n className=\"p-date-picker__month-select p-date-picker__calendar-select\"\n aria-label=\"Month\"\n value={visibleMonth.getMonth()}\n onChange={handleMonthChange}\n >\n {monthOptions.map((month) => (\n <option\n key={month.value}\n value={month.value}\n disabled={isMonthDisabled(new Date(visibleMonth.getFullYear(), month.value, 1), minDate, maxDate)}\n >\n {month.label}\n </option>\n ))}\n </select>\n <select\n className=\"p-date-picker__year-select p-date-picker__calendar-select\"\n aria-label=\"Year\"\n value={visibleMonth.getFullYear()}\n onChange={handleYearChange}\n >\n {yearOptions.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </div>\n <button\n type=\"button\"\n className=\"p-date-picker__nav\"\n aria-label=\"Next month\"\n disabled={isNextMonthDisabled}\n onClick={() => updateVisibleMonth(nextMonth)}\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n <div className=\"p-date-picker__weekdays\" aria-hidden=\"true\">\n {weekdayLabels.map((weekday) => (\n <span key={weekday}>{weekday}</span>\n ))}\n </div>\n\n <div className=\"p-date-picker__grid\" role=\"grid\" aria-labelledby={`${panelId}-title`}>\n {calendarDays.map((date) => {\n const isoDate = toIsoDate(date);\n const isOutsideMonth = date.getMonth() !== visibleMonth.getMonth();\n const isSelected = isSameDay(date, selectedDate);\n const isToday = isSameDay(date, today);\n const isDisabled = isBeforeDate(date, minDate) || isAfterDate(date, maxDate);\n\n return (\n <button\n key={isoDate}\n ref={(node) => {\n dayRefs.current[isoDate] = node as unknown as FocusableElement | null;\n }}\n type=\"button\"\n role=\"gridcell\"\n data-date={isoDate}\n className={cn(\n 'p-date-picker__day',\n isOutsideMonth && 'p-date-picker__day--outside',\n isToday && 'p-date-picker__day--today',\n isSelected && 'p-date-picker__day--selected',\n )}\n disabled={isDisabled}\n aria-label={getDayLabel(date, locale)}\n aria-selected={isSelected}\n tabIndex={isSameDay(date, focusedDate) ? 0 : -1}\n onClick={() => handleDayClick(date)}\n onKeyDown={handleDayKeyDown(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-date-picker__message p-date-picker__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-date-picker__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPDatePicker.displayName = 'PDatePicker';\n\nexport const PDatePickerPresets = {\n today: { label: 'Today', value: () => getToday() },\n yesterday: { label: 'Yesterday', value: () => addDays(getToday(), -1) },\n tomorrow: { label: 'Tomorrow', value: () => addDays(getToday(), 1) },\n startOfMonth: { label: 'Start of month', value: () => startOfMonth(getToday()) },\n endOfMonth: {\n label: 'End of month',\n value: () => {\n const today = getToday();\n return new Date(today.getFullYear(), today.getMonth() + 1, 0);\n },\n },\n} satisfies Record<string, PDatePickerPreset>;\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ChangeEvent,\n type CSSProperties,\n type HTMLAttributes,\n} from 'react';\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from '../../icons';\nimport cn from '../../utils/cn';\nimport './PDateRangePicker.css';\n\nexport type PDateRangePickerRef = HTMLDivElement;\nexport type PDateRangePickerChangeSource = 'preset' | 'calendar';\nexport type PDateRangePickerPresetColumns = 2 | 3 | 4 | 'auto';\ntype FocusableElement = { focus: () => void };\n\nexport type PDateRangeValue = {\n start?: string;\n end?: string;\n};\n\nexport type PDateRangePickerPreset = {\n label: string;\n value: PDateRangeValue | (() => PDateRangeValue);\n};\n\nexport type PDateRangePickerProps = {\n label: string;\n value?: PDateRangeValue;\n defaultValue?: PDateRangeValue;\n onValueChange?: (\n value: PDateRangeValue,\n details: { startDate: Date | null; endDate: Date | null; source: PDateRangePickerChangeSource },\n ) => void;\n presets?: PDateRangePickerPreset[];\n customLabel?: string;\n showCustom?: boolean;\n presetColumns?: PDateRangePickerPresetColumns;\n placeholder?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n min?: string;\n max?: string;\n nameStart?: string;\n nameEnd?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'defaultValue' | 'onChange'>;\n\nconst dayFormatter = new Intl.DateTimeFormat(undefined, { weekday: 'short' });\n\nfunction toLocalDate(value: string | Date | null | undefined) {\n if (!value) {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime())\n ? null\n : new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n const parts = value.split('-').map(Number);\n\n if (parts.length !== 3 || parts.some(Number.isNaN)) {\n return null;\n }\n\n const [year, month, day] = parts;\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nfunction toIsoDate(date: Date | null) {\n if (!date) {\n return '';\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nfunction addMonths(date: Date, months: number) {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n}\n\nfunction addMonthsClamped(date: Date, months: number) {\n const monthStart = addMonths(date, months);\n const lastDay = endOfMonth(monthStart).getDate();\n\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nfunction addDays(date: Date, days: number) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nfunction getToday() {\n const today = new Date();\n return new Date(today.getFullYear(), today.getMonth(), today.getDate());\n}\n\nfunction getCalendarDays(monthDate: Date, weekStartsOn: number) {\n const monthStart = startOfMonth(monthDate);\n const offset = (monthStart.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n\n return Array.from({ length: 42 }, (_, index) => addDays(gridStart, index));\n}\n\nfunction getMonthLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date);\n}\n\nfunction getMonthOptions(locale?: string) {\n return Array.from({ length: 12 }, (_, month) => ({\n label: new Intl.DateTimeFormat(locale, { month: 'long' }).format(new Date(2024, month, 1)),\n value: month,\n }));\n}\n\nfunction getDateLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getDayLabel(date: Date, locale?: string) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n }).format(date);\n}\n\nfunction getWeekdayLabels(weekStartsOn: number, locale?: string) {\n const baseSunday = new Date(2024, 0, 7);\n\n return Array.from({ length: 7 }, (_, index) => {\n const date = addDays(baseSunday, weekStartsOn + index);\n return dayFormatter.formatToParts(date).length\n ? new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n : '';\n });\n}\n\nfunction isSameDay(a: Date | null, b: Date | null) {\n return Boolean(a && b && toIsoDate(a) === toIsoDate(b));\n}\n\nfunction isBeforeDate(date: Date, minDate: Date | null) {\n return Boolean(minDate && date.getTime() < minDate.getTime());\n}\n\nfunction isAfterDate(date: Date, maxDate: Date | null) {\n return Boolean(maxDate && date.getTime() > maxDate.getTime());\n}\n\nfunction isSameMonth(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nfunction isMonthDisabled(monthDate: Date, minDate: Date | null, maxDate: Date | null) {\n const monthStart = startOfMonth(monthDate);\n const monthEnd = endOfMonth(monthDate);\n\n return Boolean((minDate && monthEnd < minDate) || (maxDate && monthStart > maxDate));\n}\n\nfunction clampVisibleMonth(monthDate: Date, minDate: Date | null, maxDate: Date | null) {\n if (minDate && endOfMonth(monthDate) < minDate) {\n return startOfMonth(minDate);\n }\n\n if (maxDate && startOfMonth(monthDate) > maxDate) {\n return startOfMonth(maxDate);\n }\n\n return startOfMonth(monthDate);\n}\n\nfunction getFocusableDateInMonth(monthDate: Date, preferredDate: Date, minDate: Date | null, maxDate: Date | null) {\n const monthStart = startOfMonth(monthDate);\n const monthEnd = endOfMonth(monthDate);\n let nextDate = new Date(\n monthStart.getFullYear(),\n monthStart.getMonth(),\n Math.min(preferredDate.getDate(), monthEnd.getDate()),\n );\n\n if (minDate && nextDate < minDate) {\n nextDate = isSameMonth(minDate, monthStart) ? minDate : monthStart;\n }\n\n if (maxDate && nextDate > maxDate) {\n nextDate = isSameMonth(maxDate, monthStart) ? maxDate : monthEnd;\n }\n\n return nextDate;\n}\n\nfunction getYearOptions(visibleMonth: Date, minDate: Date | null, maxDate: Date | null, today: Date) {\n const visibleYear = visibleMonth.getFullYear();\n const defaultStartYear = Math.min(visibleYear, today.getFullYear() - 100);\n const defaultEndYear = Math.max(visibleYear, today.getFullYear() + 20);\n const startYear = minDate?.getFullYear() ?? defaultStartYear;\n const endYear = maxDate?.getFullYear() ?? defaultEndYear;\n const firstYear = Math.min(startYear, endYear, visibleYear);\n const lastYear = Math.max(startYear, endYear, visibleYear);\n\n return Array.from({ length: lastYear - firstYear + 1 }, (_, index) => firstYear + index);\n}\n\nfunction isInRange(date: Date, startDate: Date | null, endDate: Date | null) {\n return Boolean(startDate && endDate && date > startDate && date < endDate);\n}\n\nfunction normalizeRange(startDate: Date | null, endDate: Date | null): PDateRangeValue {\n if (!startDate && !endDate) {\n return {};\n }\n\n if (startDate && endDate && endDate < startDate) {\n return {\n start: toIsoDate(endDate),\n end: toIsoDate(startDate),\n };\n }\n\n return {\n start: toIsoDate(startDate),\n end: toIsoDate(endDate),\n };\n}\n\nfunction resolvePresetRange(preset: PDateRangePickerPreset) {\n return typeof preset.value === 'function' ? preset.value() : preset.value;\n}\n\nfunction getRangeDates(value: PDateRangeValue | undefined) {\n return {\n startDate: toLocalDate(value?.start),\n endDate: toLocalDate(value?.end),\n };\n}\n\nfunction isSameRange(a: PDateRangeValue | undefined, b: PDateRangeValue | undefined) {\n return Boolean(a?.start && a?.end && a.start === b?.start && a.end === b?.end);\n}\n\nfunction getRangeLabel(value: PDateRangeValue | undefined, placeholder: string, locale?: string) {\n const { startDate, endDate } = getRangeDates(value);\n\n if (startDate && endDate) {\n return `${getDateLabel(startDate, locale)} - ${getDateLabel(endDate, locale)}`;\n }\n\n if (startDate) {\n return `${getDateLabel(startDate, locale)} -`;\n }\n\n if (endDate) {\n return `- ${getDateLabel(endDate, locale)}`;\n }\n\n return placeholder;\n}\n\nexport const PDateRangePicker = forwardRef<PDateRangePickerRef, PDateRangePickerProps>(\n (\n {\n label,\n value,\n defaultValue,\n onValueChange,\n presets = [],\n customLabel = 'Custom',\n showCustom = true,\n presetColumns = 'auto',\n placeholder = 'Select range',\n helperText,\n isError = false,\n errorMessage,\n min,\n max,\n nameStart,\n nameEnd,\n disabled = false,\n readOnly = false,\n required = false,\n locale,\n weekStartsOn = 0,\n className,\n id,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const rootId = id ?? generatedId;\n const labelId = `${rootId}-label`;\n const panelId = `${rootId}-panel`;\n const helperId = `${rootId}-helper`;\n const errorId = `${rootId}-error`;\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<PDateRangeValue>(defaultValue ?? {});\n const [isOpen, setIsOpen] = useState(false);\n const selectedValue = isControlled ? value : internalValue;\n const { startDate, endDate } = getRangeDates(selectedValue);\n const today = useMemo(getToday, []);\n const minDate = toLocalDate(min);\n const maxDate = toLocalDate(max);\n const [visibleMonth, setVisibleMonth] = useState(() => startOfMonth(startDate ?? today));\n const [focusedDate, setFocusedDate] = useState(() => startDate ?? today);\n const calendarTriggerRef = useRef<FocusableElement | null>(null);\n const dayRefs = useRef<Record<string, FocusableElement | null>>({});\n const shouldFocusCalendarDateRef = useRef(false);\n const calendarDays = getCalendarDays(visibleMonth, weekStartsOn);\n const weekdayLabels = getWeekdayLabels(weekStartsOn, locale);\n const monthOptions = useMemo(() => getMonthOptions(locale), [locale]);\n const yearOptions = getYearOptions(visibleMonth, minDate, maxDate, today);\n const hasPresets = presets.length > 0;\n const shouldRenderCustom = hasPresets ? showCustom : true;\n const presetColumnsStyle =\n presetColumns === 'auto'\n ? undefined\n : ({\n '--p-date-range-picker-preset-columns': String(presetColumns),\n } as CSSProperties);\n const hasCompleteRange = Boolean(selectedValue?.start && selectedValue?.end);\n const messageId = isError && errorMessage ? errorId : helperText ? helperId : undefined;\n const displayValue = getRangeLabel(selectedValue, placeholder, locale);\n const selectedMatchesPreset = hasPresets\n ? presets.some((preset) => isSameRange(resolvePresetRange(preset), selectedValue))\n : false;\n const isCustomActive = isOpen || Boolean(hasCompleteRange && !selectedMatchesPreset);\n const previousMonth = addMonths(visibleMonth, -1);\n const nextMonth = addMonths(visibleMonth, 1);\n const isPreviousMonthDisabled = isMonthDisabled(previousMonth, minDate, maxDate);\n const isNextMonthDisabled = isMonthDisabled(nextMonth, minDate, maxDate);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n if (shouldFocusCalendarDateRef.current) {\n dayRefs.current[toIsoDate(focusedDate)]?.focus();\n shouldFocusCalendarDateRef.current = false;\n }\n }, [focusedDate, isOpen, visibleMonth]);\n\n const setRangeValue = (range: PDateRangeValue, source: PDateRangePickerChangeSource) => {\n const { startDate: nextStartDate, endDate: nextEndDate } = getRangeDates(range);\n const normalizedRange = normalizeRange(nextStartDate, nextEndDate);\n\n if (!isControlled) {\n setInternalValue(normalizedRange);\n }\n\n const normalizedDates = getRangeDates(normalizedRange);\n\n if (normalizedDates.startDate) {\n setVisibleMonth(startOfMonth(normalizedDates.startDate));\n }\n\n onValueChange?.(normalizedRange, {\n startDate: normalizedDates.startDate,\n endDate: normalizedDates.endDate,\n source,\n });\n };\n\n const openCalendar = (trigger: HTMLButtonElement) => {\n if (disabled || readOnly) {\n return;\n }\n\n const nextFocusedDate = startDate ?? today;\n calendarTriggerRef.current = trigger as unknown as FocusableElement;\n shouldFocusCalendarDateRef.current = true;\n setFocusedDate(nextFocusedDate);\n setVisibleMonth(startOfMonth(nextFocusedDate));\n setIsOpen(true);\n };\n\n const closeCalendar = (restoreFocus = false) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n calendarTriggerRef.current?.focus();\n }\n };\n\n const updateVisibleMonth = (nextMonth: Date) => {\n const clampedMonth = clampVisibleMonth(nextMonth, minDate, maxDate);\n\n setVisibleMonth(clampedMonth);\n setFocusedDate(getFocusableDateInMonth(clampedMonth, focusedDate, minDate, maxDate));\n };\n\n const handleMonthChange = (event: ChangeEvent<HTMLSelectElement>) => {\n const { value: nextMonth } = event.currentTarget as unknown as { value: string };\n\n updateVisibleMonth(new Date(visibleMonth.getFullYear(), Number(nextMonth), 1));\n };\n\n const handleYearChange = (event: ChangeEvent<HTMLSelectElement>) => {\n const { value: nextYear } = event.currentTarget as unknown as { value: string };\n\n updateVisibleMonth(new Date(Number(nextYear), visibleMonth.getMonth(), 1));\n };\n\n const handlePresetClick = (preset: PDateRangePickerPreset) => {\n if (disabled || readOnly) {\n return;\n }\n\n setRangeValue(resolvePresetRange(preset), 'preset');\n closeCalendar();\n };\n\n const handleDayClick = (date: Date) => {\n if (disabled || readOnly || isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n if (!startDate || endDate) {\n setFocusedDate(date);\n setRangeValue({ start: toIsoDate(date), end: '' }, 'calendar');\n return;\n }\n\n setFocusedDate(date);\n setRangeValue({ start: toIsoDate(startDate), end: toIsoDate(date) }, 'calendar');\n closeCalendar(true);\n };\n\n const focusCalendarDate = (date: Date) => {\n if (isBeforeDate(date, minDate) || isAfterDate(date, maxDate)) {\n return;\n }\n\n shouldFocusCalendarDateRef.current = true;\n setFocusedDate(date);\n setVisibleMonth(startOfMonth(date));\n };\n\n const handleDayKeyDown =\n (date: Date): ButtonHTMLAttributes<HTMLButtonElement>['onKeyDown'] =>\n (event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n closeCalendar(true);\n return;\n }\n\n const weekOffset = (date.getDay() - weekStartsOn + 7) % 7;\n const nextDateByKey: Record<string, Date> = {\n ArrowLeft: addDays(date, -1),\n ArrowRight: addDays(date, 1),\n ArrowUp: addDays(date, -7),\n ArrowDown: addDays(date, 7),\n Home: addDays(date, -weekOffset),\n End: addDays(date, 6 - weekOffset),\n PageUp: addMonthsClamped(date, -1),\n PageDown: addMonthsClamped(date, 1),\n };\n const nextDate = nextDateByKey[event.key];\n\n if (!nextDate) {\n return;\n }\n\n event.preventDefault();\n focusCalendarDate(nextDate);\n };\n\n return (\n <div\n {...props}\n ref={ref}\n id={rootId}\n style={presetColumnsStyle ? { ...style, ...presetColumnsStyle } : style}\n className={cn(\n 'p-date-range-picker',\n hasPresets && 'p-date-range-picker--with-presets',\n isError && 'p-date-range-picker--error',\n disabled && 'p-date-range-picker--disabled',\n className,\n )}\n >\n {hasPresets ? (\n <div id={labelId} className=\"p-date-range-picker__label\">\n <span>{label}</span>\n <span\n className={cn(\n 'p-date-range-picker__label-value',\n !hasCompleteRange && 'p-date-range-picker__label-value--empty',\n )}\n >\n {displayValue}\n </span>\n </div>\n ) : null}\n\n {hasPresets ? (\n <div\n aria-describedby={messageId}\n aria-labelledby={labelId}\n className={cn(\n 'p-date-range-picker__presets',\n presetColumns !== 'auto' && 'p-date-range-picker__presets--fixed',\n )}\n role=\"group\"\n >\n {presets.map((preset) => {\n const presetRange = resolvePresetRange(preset);\n const isActive = isSameRange(presetRange, selectedValue);\n\n return (\n <button\n key={preset.label}\n type=\"button\"\n className={cn('p-date-range-picker__preset', isActive && 'p-date-range-picker__preset--active')}\n disabled={disabled}\n aria-pressed={isActive}\n onClick={() => handlePresetClick(preset)}\n >\n {preset.label}\n </button>\n );\n })}\n {shouldRenderCustom ? (\n <button\n type=\"button\"\n className={cn(\n 'p-date-range-picker__preset',\n isCustomActive && 'p-date-range-picker__preset--active',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-expanded={isOpen}\n aria-pressed={isCustomActive}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n {customLabel}\n </button>\n ) : null}\n </div>\n ) : (\n <button\n type=\"button\"\n className={cn(\n 'p-date-range-picker__trigger',\n !hasCompleteRange && 'p-date-range-picker__trigger--empty',\n hasCompleteRange && 'p-date-range-picker__trigger--filled',\n isOpen && 'p-date-range-picker__trigger--open',\n )}\n disabled={disabled}\n aria-controls={panelId}\n aria-describedby={messageId}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-label={`${label}: ${displayValue}`}\n onClick={(event) => (isOpen ? closeCalendar(true) : openCalendar(event.currentTarget))}\n >\n <span\n id={labelId}\n className={cn(\n 'p-date-range-picker__trigger-label p-date-range-picker__trigger-floating-label',\n isError && 'p-date-range-picker__trigger-label--error',\n )}\n aria-hidden=\"true\"\n >\n {label}\n </span>\n <span\n className={cn(\n 'p-date-range-picker__trigger-label p-date-range-picker__trigger-placeholder-label',\n isError && 'p-date-range-picker__trigger-label--error',\n )}\n aria-hidden=\"true\"\n >\n {label}\n </span>\n <span className=\"p-date-range-picker__trigger-value\">{displayValue}</span>\n <span className=\"p-date-range-picker__trigger-icon\">\n <CalendarIcon />\n </span>\n </button>\n )}\n\n <input type=\"hidden\" name={nameStart} value={selectedValue?.start ?? ''} required={required} />\n <input type=\"hidden\" name={nameEnd} value={selectedValue?.end ?? ''} required={required} />\n\n {isOpen && (\n <div\n id={panelId}\n className=\"p-date-range-picker__panel\"\n role=\"dialog\"\n aria-labelledby={`${panelId}-title`}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeCalendar();\n }\n }}\n >\n <div className=\"p-date-range-picker__calendar-header\">\n <button\n type=\"button\"\n className=\"p-date-range-picker__nav\"\n aria-label=\"Previous month\"\n disabled={isPreviousMonthDisabled}\n onClick={() => updateVisibleMonth(previousMonth)}\n >\n <ChevronLeftIcon />\n </button>\n <div className=\"p-date-range-picker__month\">\n <span id={`${panelId}-title`} className=\"p-date-range-picker__month-label\">\n {getMonthLabel(visibleMonth, locale)}\n </span>\n <select\n className=\"p-date-range-picker__month-select p-date-range-picker__calendar-select\"\n aria-label=\"Month\"\n value={visibleMonth.getMonth()}\n onChange={handleMonthChange}\n >\n {monthOptions.map((month) => (\n <option\n key={month.value}\n value={month.value}\n disabled={isMonthDisabled(new Date(visibleMonth.getFullYear(), month.value, 1), minDate, maxDate)}\n >\n {month.label}\n </option>\n ))}\n </select>\n <select\n className=\"p-date-range-picker__year-select p-date-range-picker__calendar-select\"\n aria-label=\"Year\"\n value={visibleMonth.getFullYear()}\n onChange={handleYearChange}\n >\n {yearOptions.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </div>\n <button\n type=\"button\"\n className=\"p-date-range-picker__nav\"\n aria-label=\"Next month\"\n disabled={isNextMonthDisabled}\n onClick={() => updateVisibleMonth(nextMonth)}\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n <div className=\"p-date-range-picker__weekdays\" aria-hidden=\"true\">\n {weekdayLabels.map((weekday) => (\n <span key={weekday}>{weekday}</span>\n ))}\n </div>\n\n <div className=\"p-date-range-picker__grid\" role=\"grid\" aria-labelledby={`${panelId}-title`}>\n {calendarDays.map((date) => {\n const isoDate = toIsoDate(date);\n const isOutsideMonth = date.getMonth() !== visibleMonth.getMonth();\n const isRangeStart = isSameDay(date, startDate);\n const isRangeEnd = isSameDay(date, endDate);\n const isRangeMiddle = isInRange(date, startDate, endDate);\n const isToday = isSameDay(date, today);\n const isDisabled = isBeforeDate(date, minDate) || isAfterDate(date, maxDate);\n\n return (\n <button\n key={isoDate}\n ref={(node) => {\n dayRefs.current[isoDate] = node as unknown as FocusableElement | null;\n }}\n type=\"button\"\n role=\"gridcell\"\n data-date={isoDate}\n className={cn(\n 'p-date-range-picker__day',\n isOutsideMonth && 'p-date-range-picker__day--outside',\n isToday && 'p-date-range-picker__day--today',\n isRangeMiddle && 'p-date-range-picker__day--in-range',\n (isRangeStart || isRangeEnd) && 'p-date-range-picker__day--selected',\n )}\n disabled={isDisabled}\n aria-label={getDayLabel(date, locale)}\n aria-selected={isRangeStart || isRangeEnd}\n tabIndex={isSameDay(date, focusedDate) ? 0 : -1}\n onClick={() => handleDayClick(date)}\n onKeyDown={handleDayKeyDown(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-date-range-picker__message p-date-range-picker__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-date-range-picker__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPDateRangePicker.displayName = 'PDateRangePicker';\n\nexport const PDateRangePickerPresets = {\n thisWeek: {\n label: 'This week',\n value: () => {\n const today = getToday();\n const weekStart = addDays(today, -today.getDay());\n\n return {\n start: toIsoDate(weekStart),\n end: toIsoDate(addDays(weekStart, 6)),\n };\n },\n },\n last7Days: {\n label: 'Last 7 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -6)),\n end: toIsoDate(today),\n };\n },\n },\n last14Days: {\n label: 'Last 14 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -13)),\n end: toIsoDate(today),\n };\n },\n },\n last30Days: {\n label: 'Last 30 days',\n value: () => {\n const today = getToday();\n return {\n start: toIsoDate(addDays(today, -29)),\n end: toIsoDate(today),\n };\n },\n },\n thisMonth: {\n label: 'This month',\n value: () => {\n const today = getToday();\n const start = startOfMonth(today);\n const end = endOfMonth(today);\n\n return {\n start: toIsoDate(start),\n end: toIsoDate(end),\n };\n },\n },\n lastMonth: {\n label: 'Last month',\n value: () => {\n const today = getToday();\n const lastMonth = addMonths(today, -1);\n\n return {\n start: toIsoDate(startOfMonth(lastMonth)),\n end: toIsoDate(endOfMonth(lastMonth)),\n };\n },\n },\n monthToDate: {\n label: 'Month to date',\n value: () => {\n const today = getToday();\n const start = startOfMonth(today);\n\n return {\n start: toIsoDate(start),\n end: toIsoDate(today),\n };\n },\n },\n yearToDate: {\n label: 'Year to date',\n value: () => {\n const today = getToday();\n\n return {\n start: toIsoDate(new Date(today.getFullYear(), 0, 1)),\n end: toIsoDate(today),\n };\n },\n },\n} satisfies Record<string, PDateRangePickerPreset>;\n","import {\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PHighlight.css';\n\nexport type PHighlightVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info' | 'neutral';\nexport type PHighlightAppearance = 'text' | 'background';\nexport type PHighlightRef = HTMLElement;\n\nexport type PHighlightProps = {\n as?: ElementType;\n variant?: PHighlightVariant;\n /** Controls whether the highlight is text-only or a filled background. */\n appearance?: PHighlightAppearance;\n /** Custom highlight color. Text color by default, background color for `appearance=\"background\"`. */\n color?: CSSProperties['color'];\n /** Custom foreground color for `appearance=\"background\"`. */\n textColor?: CSSProperties['color'];\n children: ReactNode;\n className?: string;\n style?: CSSProperties;\n} & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'color' | 'style'>;\n\ntype PHighlightStyle = CSSProperties & {\n '--p-highlight-color'?: CSSProperties['color'];\n '--p-highlight-bg'?: CSSProperties['backgroundColor'];\n '--p-highlight-text'?: CSSProperties['color'];\n};\n\nexport const PHighlight = forwardRef<PHighlightRef, PHighlightProps>(\n (\n {\n as: Element = 'span',\n variant = 'primary',\n appearance = 'text',\n color,\n textColor,\n children,\n className,\n style,\n ...props\n },\n ref,\n ) => {\n const highlightStyle: PHighlightStyle = {\n ...style,\n ...(color ? { '--p-highlight-color': color, '--p-highlight-bg': color } : {}),\n ...(textColor ? { '--p-highlight-text': textColor } : {}),\n };\n\n return (\n <Element\n {...props}\n ref={ref}\n className={cn(\n 'p-highlight',\n `p-highlight--${variant}`,\n appearance === 'background' && 'p-highlight--background',\n className,\n )}\n style={highlightStyle}\n >\n {children}\n </Element>\n );\n },\n);\n\nPHighlight.displayName = 'PHighlight';\n","import {\n Children,\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PHorizontalSlider.css';\n\nexport type PHorizontalSliderRef = HTMLDivElement;\n\nexport type PHorizontalSliderProps = {\n children: ReactNode;\n /** Accessible label for the keyboard-focusable scroll region. */\n ariaLabel?: string;\n /** Gap between slider items. Accepts any CSS gap value. */\n gap?: CSSProperties['gap'];\n /** Disables horizontal snap alignment when free scrolling is preferred. */\n snap?: boolean;\n scrollerClassName?: string;\n listClassName?: string;\n itemClassName?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className'> & {\n className?: string;\n };\n\ntype SliderStyle = CSSProperties & {\n '--p-horizontal-slider-gap'?: CSSProperties['gap'];\n};\n\nexport const PHorizontalSlider = forwardRef<PHorizontalSliderRef, PHorizontalSliderProps>(\n (\n {\n children,\n ariaLabel = 'Horizontal content',\n gap,\n snap = true,\n className,\n scrollerClassName,\n listClassName,\n itemClassName,\n style,\n ...props\n },\n ref,\n ) => {\n const sliderStyle: SliderStyle = {\n ...style,\n ...(gap ? { '--p-horizontal-slider-gap': gap } : {}),\n };\n\n return (\n <div\n {...props}\n ref={ref}\n className={cn('p-horizontal-slider', !snap && 'p-horizontal-slider--no-snap', className)}\n style={sliderStyle}\n >\n <div\n aria-label={ariaLabel}\n className={cn('p-horizontal-slider__scroller', scrollerClassName)}\n role=\"region\"\n tabIndex={0}\n >\n <ul className={cn('p-horizontal-slider__list', listClassName)}>\n {Children.map(children, (child) => (\n <li className={cn('p-horizontal-slider__item', itemClassName)}>{child}</li>\n ))}\n </ul>\n </div>\n </div>\n );\n },\n);\n\nPHorizontalSlider.displayName = 'PHorizontalSlider';\n","import {\n forwardRef,\n useId,\n useState,\n type ChangeEvent,\n type ReactNode,\n type SelectHTMLAttributes,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PSelect.css';\n\nexport type PSelectRef = HTMLSelectElement;\nexport type PSelectDensity = 'standard' | 'compact';\nexport type PSelectVariant = 'floating' | 'inline';\n\nexport type PSelectOption = {\n value: string | number;\n label: ReactNode;\n disabled?: boolean;\n group?: string;\n};\n\nexport type PSelectProps = {\n className?: string;\n selectClassName?: string;\n label: string;\n options: PSelectOption[];\n placeholder?: string;\n helperText?: string;\n isError?: boolean;\n errorMessage?: string;\n density?: PSelectDensity;\n variant?: PSelectVariant;\n hideLabel?: boolean;\n onValueChange?: (value: string, option: PSelectOption | null) => void;\n} & Omit<\n SelectHTMLAttributes<HTMLSelectElement>,\n 'aria-describedby' | 'aria-label' | 'children' | 'className' | 'onChange'\n> & {\n onChange?: (event: ChangeEvent<HTMLSelectElement>) => void;\n};\n\nfunction ChevronDownIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" aria-hidden=\"true\">\n <path d=\"m5 8 5 5 5-5\" />\n </svg>\n );\n}\n\nfunction getSelectValue(value: SelectHTMLAttributes<HTMLSelectElement>['value']) {\n if (Array.isArray(value)) {\n return value[0] ?? '';\n }\n\n return value ?? '';\n}\n\nexport const PSelect = forwardRef<PSelectRef, PSelectProps>(\n (\n {\n className,\n selectClassName,\n label,\n options,\n placeholder = 'Select an option',\n helperText,\n id,\n isError = false,\n errorMessage,\n density = 'standard',\n variant = 'floating',\n hideLabel = false,\n disabled,\n required,\n value,\n defaultValue,\n onChange,\n onValueChange,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const selectId = id ?? generatedId;\n const errorId = `${selectId}-error`;\n const helperId = `${selectId}-helper`;\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(getSelectValue(defaultValue));\n const selectedValue = getSelectValue(isControlled ? value : internalValue);\n const hasValue = selectedValue !== '';\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const groupedOptions = options.reduce<Array<{ group: string | null; options: PSelectOption[] }>>(\n (accumulator, option) => {\n const group = option.group ?? null;\n const existingGroup = accumulator.find((item) => item.group === group);\n\n if (existingGroup) {\n existingGroup.options.push(option);\n return accumulator;\n }\n\n accumulator.push({ group, options: [option] });\n return accumulator;\n },\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\n const { value: nextValue } = event.currentTarget as unknown as { value: string };\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChange?.(event);\n onValueChange?.(\n nextValue,\n options.find((option) => String(option.value) === nextValue) ?? null,\n );\n };\n\n return (\n <div\n className={cn(\n 'p-select',\n `p-select--${density}`,\n `p-select--${variant}`,\n hasValue && 'p-select--filled',\n isError && 'p-select--error',\n disabled && 'p-select--disabled',\n className,\n )}\n style={style}\n >\n <div className=\"p-select__field\">\n <select\n {...props}\n id={selectId}\n ref={ref}\n value={value}\n defaultValue={value === undefined ? defaultValue ?? '' : undefined}\n disabled={disabled}\n required={required}\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={required}\n aria-disabled={disabled}\n className={cn('p-select__control', isError && 'p-select__control--error', selectClassName)}\n onChange={handleChange}\n >\n {placeholder ? (\n <option value=\"\" disabled={required} aria-label={placeholder}>\n {''}\n </option>\n ) : null}\n\n {groupedOptions.map((group) =>\n group.group ? (\n <optgroup key={group.group} label={group.group}>\n {group.options.map((option) => (\n <option key={String(option.value)} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </optgroup>\n ) : (\n group.options.map((option) => (\n <option key={String(option.value)} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))\n ),\n )}\n </select>\n\n {variant === 'floating' ? (\n <>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'p-select__label p-select__floating-label',\n hideLabel && 'p-select__label--hidden',\n isError && 'p-select__label--error',\n )}\n >\n {label}\n </span>\n\n <label\n htmlFor={selectId}\n className={cn('p-select__label p-select__placeholder-label', hideLabel && 'p-select__label--hidden')}\n >\n {placeholder || label}\n </label>\n </>\n ) : (\n <label\n htmlFor={selectId}\n className={cn('p-select__label p-select__inline-label', hideLabel && 'p-select__label--hidden')}\n >\n {label}\n </label>\n )}\n\n <span className=\"p-select__chevron\" aria-hidden=\"true\">\n <ChevronDownIcon />\n </span>\n </div>\n\n {isError && errorMessage ? (\n <p id={errorId} role=\"alert\" className=\"p-select__message p-select__message--error\">\n {errorMessage}\n </p>\n ) : null}\n\n {!isError && helperText ? (\n <p id={helperId} className=\"p-select__message\">\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nPSelect.displayName = 'PSelect';\n","import {\n forwardRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronLeftIcon, ChevronRightIcon } from '../../icons';\nimport cn from '../../utils/cn';\nimport { PSelect } from '../PSelect';\nimport './PPagination.css';\n\nexport type PPaginationRef = HTMLElement;\nexport type PPaginationDensity = 'standard' | 'compact';\nexport type PPaginationItem = number | 'ellipsis';\n\nexport type PPaginationProps = {\n page: number;\n pageCount?: number;\n totalItems?: number;\n pageSize?: number;\n pageSizeOptions?: number[];\n itemLabel?: string;\n density?: PPaginationDensity;\n siblingCount?: number;\n boundaryCount?: number;\n disabled?: boolean;\n isLoading?: boolean;\n hasPreviousPage?: boolean;\n hasNextPage?: boolean;\n showRowsPerPage?: boolean;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n className?: string;\n summary?: ReactNode;\n} & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'onChange'>;\n\nfunction clampPage(page: number, pageCount?: number) {\n if (!Number.isFinite(page)) {\n return 1;\n }\n\n if (!pageCount) {\n return Math.max(1, Math.trunc(page));\n }\n\n return Math.min(Math.max(1, Math.trunc(page)), Math.max(1, pageCount));\n}\n\nfunction getRange(start: number, end: number) {\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n}\n\nfunction getPaginationItems(\n page: number,\n pageCount: number,\n siblingCount: number,\n boundaryCount: number,\n): PPaginationItem[] {\n const normalizedPageCount = Math.max(1, pageCount);\n const normalizedPage = clampPage(page, normalizedPageCount);\n const normalizedSiblingCount = Math.max(0, Math.trunc(siblingCount));\n const normalizedBoundaryCount = Math.max(1, Math.trunc(boundaryCount));\n const totalVisible = normalizedBoundaryCount * 2 + normalizedSiblingCount * 2 + 3;\n\n if (normalizedPageCount <= totalVisible) {\n return getRange(1, normalizedPageCount);\n }\n\n const edgeWindowCount = totalVisible - normalizedBoundaryCount - 1;\n const startPages = getRange(1, normalizedBoundaryCount);\n const endPages = getRange(normalizedPageCount - normalizedBoundaryCount + 1, normalizedPageCount);\n const startWindowEnd = edgeWindowCount;\n const endWindowStart = normalizedPageCount - edgeWindowCount + 1;\n\n if (normalizedPage <= startWindowEnd - normalizedSiblingCount) {\n return [...getRange(1, startWindowEnd), 'ellipsis' as const, ...endPages];\n }\n\n if (normalizedPage >= endWindowStart + normalizedSiblingCount) {\n return [...startPages, 'ellipsis' as const, ...getRange(endWindowStart, normalizedPageCount)];\n }\n\n const middleStart = normalizedPage - normalizedSiblingCount;\n const middleEnd = normalizedPage + normalizedSiblingCount;\n\n return [\n ...startPages,\n 'ellipsis' as const,\n ...getRange(middleStart, middleEnd),\n 'ellipsis' as const,\n ...endPages,\n ];\n}\n\nfunction getDefaultSummary(\n page: number,\n pageCount: number | undefined,\n totalItems: number | undefined,\n pageSize: number | undefined,\n itemLabel: string,\n) {\n if (totalItems !== undefined && pageSize) {\n if (totalItems <= 0) {\n return `No ${itemLabel}`;\n }\n\n const start = (page - 1) * pageSize + 1;\n const end = Math.min(totalItems, page * pageSize);\n\n return `Showing ${start}-${end} of ${totalItems} ${itemLabel}`;\n }\n\n if (pageCount) {\n return `Page ${page} of ${pageCount}`;\n }\n\n return `Page ${page}`;\n}\n\nfunction PaginationButton({\n className,\n children,\n ...props\n}: ButtonHTMLAttributes<HTMLButtonElement>) {\n return (\n <button {...props} type=\"button\" className={cn('p-pagination__button', className)}>\n {children}\n </button>\n );\n}\n\nexport const PPagination = forwardRef<PPaginationRef, PPaginationProps>(\n (\n {\n page,\n pageCount,\n totalItems,\n pageSize,\n pageSizeOptions,\n itemLabel = 'items',\n density = 'standard',\n siblingCount = 1,\n boundaryCount = 1,\n disabled = false,\n isLoading = false,\n hasPreviousPage,\n hasNextPage,\n showRowsPerPage = true,\n onPageChange,\n onPageSizeChange,\n className,\n summary,\n ...props\n },\n ref,\n ) => {\n const normalizedPageCount = pageCount ? Math.max(1, Math.trunc(pageCount)) : undefined;\n const currentPage = clampPage(page, normalizedPageCount);\n const isUnavailable = disabled || isLoading;\n const canRequestPage = !isUnavailable && Boolean(onPageChange);\n const canGoPrevious = canRequestPage && (hasPreviousPage ?? currentPage > 1);\n const canGoNext = canRequestPage && (hasNextPage ?? (normalizedPageCount ? currentPage < normalizedPageCount : true));\n const pageItems = normalizedPageCount\n ? getPaginationItems(currentPage, normalizedPageCount, siblingCount, boundaryCount)\n : [];\n const shouldShowRowsPerPage = Boolean(\n showRowsPerPage && pageSize && pageSizeOptions?.length && onPageSizeChange,\n );\n const summaryText =\n summary ?? getDefaultSummary(currentPage, normalizedPageCount, totalItems, pageSize, itemLabel);\n\n const handlePageChange = (nextPage: number) => {\n if (isUnavailable) {\n return;\n }\n\n const clampedNextPage = clampPage(nextPage, normalizedPageCount);\n\n if (clampedNextPage === currentPage && normalizedPageCount) {\n return;\n }\n\n onPageChange?.(clampedNextPage);\n };\n\n return (\n <nav\n {...props}\n ref={ref}\n className={cn(\n 'p-pagination',\n `p-pagination--${density}`,\n isLoading && 'p-pagination--loading',\n className,\n )}\n aria-label={props['aria-label'] ?? 'Pagination'}\n aria-busy={isLoading || undefined}\n >\n <div className=\"p-pagination__summary\" aria-live=\"polite\">\n {summaryText}\n </div>\n\n <div className=\"p-pagination__controls\">\n <PaginationButton\n className=\"p-pagination__button--previous\"\n disabled={!canGoPrevious}\n aria-label=\"Go to previous page\"\n onClick={() => handlePageChange(currentPage - 1)}\n >\n <ChevronLeftIcon />\n <span>Previous</span>\n </PaginationButton>\n\n {normalizedPageCount ? (\n <div className=\"p-pagination__pages\" aria-label=\"Pages\">\n {pageItems.map((item, index) =>\n item === 'ellipsis' ? (\n <span key={`ellipsis-${index}`} className=\"p-pagination__ellipsis\" aria-hidden=\"true\">\n ...\n </span>\n ) : (\n <PaginationButton\n key={item}\n className={cn('p-pagination__page', item === currentPage && 'p-pagination__page--current')}\n aria-label={`Go to page ${item}`}\n aria-current={item === currentPage ? 'page' : undefined}\n disabled={!canRequestPage || item === currentPage}\n onClick={() => handlePageChange(item)}\n >\n {item}\n </PaginationButton>\n ),\n )}\n </div>\n ) : (\n <div className=\"p-pagination__cursor-page\" aria-live=\"polite\">\n Page {currentPage}\n </div>\n )}\n\n <PaginationButton\n className=\"p-pagination__button--next\"\n disabled={!canGoNext}\n aria-label=\"Go to next page\"\n onClick={() => handlePageChange(currentPage + 1)}\n >\n <span>Next</span>\n <ChevronRightIcon />\n </PaginationButton>\n </div>\n\n {shouldShowRowsPerPage ? (\n <PSelect\n className=\"p-pagination__page-size\"\n label=\"Rows per page\"\n placeholder=\"\"\n density=\"compact\"\n variant=\"inline\"\n hideLabel\n value={pageSize}\n disabled={isUnavailable}\n options={pageSizeOptions?.map((option) => ({ value: option, label: `${option} / page` })) ?? []}\n onValueChange={(nextPageSize) => onPageSizeChange?.(Number(nextPageSize))}\n />\n ) : null}\n </nav>\n );\n },\n);\n\nPPagination.displayName = 'PPagination';\n","import {\n forwardRef,\n type ForwardedRef,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport cn from '../../utils/cn';\nimport './PTable.css';\n\nexport type PTableRef = HTMLDivElement;\nexport type PTableDensity = 'compact' | 'standard' | 'spacious';\nexport type PTableAlign = 'start' | 'center' | 'end';\nexport type PTableSortDirection = 'ascending' | 'descending';\nexport type PTableColumnPriority = 'primary' | 'secondary' | 'tertiary';\nexport type PTableStateTone = 'neutral' | 'danger';\nexport type PTableRowTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info';\nexport type PTableRecord = Record<string, unknown>;\n\nexport type PTableColumn<RowData extends PTableRecord = PTableRecord> = {\n id: string;\n header: ReactNode;\n label?: string;\n accessor?: keyof RowData | ((row: RowData) => ReactNode);\n cell?: (row: RowData, rowIndex: number) => ReactNode;\n mobileLabel?: string;\n width?: string;\n align?: PTableAlign;\n priority?: PTableColumnPriority;\n hideOnTablet?: boolean;\n hideOnMobile?: boolean;\n sortable?: boolean;\n sortDirection?: PTableSortDirection | null;\n};\n\nexport type PTableState = {\n title: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n tone?: PTableStateTone;\n};\n\nexport type PTableProps<RowData extends PTableRecord = PTableRecord> = {\n columns: PTableColumn<RowData>[];\n rows: RowData[];\n caption: string;\n captionHidden?: boolean;\n summary?: ReactNode;\n density?: PTableDensity;\n stickyHeader?: boolean;\n stickyFirstColumn?: boolean;\n isLoading?: boolean;\n loadingLabel?: ReactNode;\n emptyState?: PTableState;\n errorState?: PTableState;\n getRowId?: (row: RowData, rowIndex: number) => string;\n getRowTone?: (row: RowData, rowIndex: number) => PTableRowTone | undefined;\n onRowClick?: (\n row: RowData,\n rowIndex: number,\n event: MouseEvent<HTMLTableRowElement | HTMLLIElement> | KeyboardEvent<HTMLTableRowElement | HTMLLIElement>,\n ) => void;\n renderRowActions?: (row: RowData, rowIndex: number) => ReactNode;\n onSortChange?: (columnId: string, direction: PTableSortDirection) => void;\n className?: string;\n tableClassName?: string;\n} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className'>;\n\nfunction getColumnLabel<RowData extends PTableRecord>(column: PTableColumn<RowData>) {\n if (column.label) {\n return column.label;\n }\n\n if (column.mobileLabel) {\n return column.mobileLabel;\n }\n\n return typeof column.header === 'string' ? column.header : column.id;\n}\n\nfunction getCellContent<RowData extends PTableRecord>(\n row: RowData,\n column: PTableColumn<RowData>,\n rowIndex: number,\n) {\n if (column.cell) {\n return column.cell(row, rowIndex);\n }\n\n if (typeof column.accessor === 'function') {\n return column.accessor(row);\n }\n\n if (column.accessor) {\n return row[column.accessor] as ReactNode;\n }\n\n return null;\n}\n\nfunction getNextSortDirection(direction?: PTableSortDirection | null): PTableSortDirection {\n return direction === 'ascending' ? 'descending' : 'ascending';\n}\n\ntype ClosestElementLike = {\n closest: (selector: string) => unknown;\n};\n\ntype ContainsElementLike = {\n contains: (node: unknown) => boolean;\n};\n\nfunction hasClosest(target: EventTarget | null): target is EventTarget & ClosestElementLike {\n return Boolean(\n target &&\n typeof target === 'object' &&\n 'closest' in target &&\n typeof (target as ClosestElementLike).closest === 'function',\n );\n}\n\nfunction hasContains(target: EventTarget | null): target is EventTarget & ContainsElementLike {\n return Boolean(\n target &&\n typeof target === 'object' &&\n 'contains' in target &&\n typeof (target as ContainsElementLike).contains === 'function',\n );\n}\n\nfunction isInteractiveTarget(target: EventTarget | null, container: EventTarget | null) {\n if (!hasContains(container)) {\n return false;\n }\n\n if (!hasClosest(target)) {\n return false;\n }\n\n const interactiveElement = target.closest(\n [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'summary',\n '[contenteditable=\"true\"]',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[data-p-table-ignore-row-click]',\n ].join(','),\n );\n\n return Boolean(interactiveElement && interactiveElement !== container && container.contains(interactiveElement));\n}\n\nfunction PTableComponent<RowData extends PTableRecord>(\n {\n columns,\n rows,\n caption,\n captionHidden = false,\n summary,\n density = 'standard',\n stickyHeader = true,\n stickyFirstColumn = true,\n isLoading = false,\n loadingLabel = 'Loading table data...',\n emptyState = {\n title: 'No records found',\n description: 'Try adjusting the filters or checking back later.',\n },\n errorState,\n getRowId,\n getRowTone,\n onRowClick,\n renderRowActions,\n onSortChange,\n className,\n tableClassName,\n ...props\n }: PTableProps<RowData>,\n ref: ForwardedRef<PTableRef>,\n) {\n const hasRows = rows.length > 0;\n const hasActions = Boolean(renderRowActions);\n const activeState = errorState ?? (!isLoading && !hasRows ? emptyState : null);\n const visibleMobileColumns = columns.filter((column) => !column.hideOnMobile);\n const columnCount = columns.length + (hasActions ? 1 : 0);\n const handleRowClick = (\n row: RowData,\n rowIndex: number,\n event: MouseEvent<HTMLTableRowElement | HTMLLIElement>,\n ) => {\n if (isInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n onRowClick?.(row, rowIndex, event);\n };\n const handleRowKeyDown = (\n row: RowData,\n rowIndex: number,\n event: KeyboardEvent<HTMLTableRowElement | HTMLLIElement>,\n ) => {\n if (isInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n onRowClick?.(row, rowIndex, event);\n };\n\n return (\n <div\n {...props}\n ref={ref}\n className={cn(\n 'p-table',\n `p-table--${density}`,\n stickyHeader && 'p-table--sticky-header',\n stickyFirstColumn && 'p-table--sticky-first-column',\n onRowClick && 'p-table--interactive',\n className,\n )}\n >\n <div className=\"p-table__header\">\n <div className=\"p-table__header-copy\">\n <h3 className={cn('p-table__caption', captionHidden && 'p-table__caption--hidden')}>\n {caption}\n </h3>\n {summary ? <div className=\"p-table__summary\">{summary}</div> : null}\n </div>\n </div>\n\n <div className=\"p-table__viewport\">\n <table className={cn('p-table__table', tableClassName)}>\n <caption className=\"p-table__native-caption\">{caption}</caption>\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.id}\n className={cn(\n 'p-table__col',\n column.priority && `p-table__col--priority-${column.priority}`,\n column.hideOnTablet && 'p-table__col--hide-tablet',\n column.hideOnMobile && 'p-table__col--hide-mobile',\n )}\n style={column.width ? { width: column.width } : undefined}\n />\n ))}\n {hasActions ? <col className=\"p-table__actions-col\" /> : null}\n </colgroup>\n <thead className=\"p-table__head\">\n <tr>\n {columns.map((column) => {\n const nextSortDirection = getNextSortDirection(column.sortDirection);\n const ariaSort = column.sortDirection ?? (column.sortable ? 'none' : undefined);\n\n return (\n <th\n key={column.id}\n scope=\"col\"\n aria-sort={ariaSort}\n className={cn(\n 'p-table__cell p-table__head-cell',\n column.align && `p-table__cell--${column.align}`,\n column.priority && `p-table__cell--priority-${column.priority}`,\n column.hideOnTablet && 'p-table__cell--hide-tablet',\n column.hideOnMobile && 'p-table__cell--hide-mobile',\n )}\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className=\"p-table__sort-button\"\n aria-label={`Sort by ${getColumnLabel(column)}`}\n onClick={() => onSortChange?.(column.id, nextSortDirection)}\n >\n <span>{column.header}</span>\n <span\n className={cn(\n 'p-table__sort-mark',\n column.sortDirection && `p-table__sort-mark--${column.sortDirection}`,\n )}\n aria-hidden=\"true\"\n />\n </button>\n ) : (\n column.header\n )}\n </th>\n );\n })}\n {hasActions ? (\n <th scope=\"col\" className=\"p-table__cell p-table__head-cell p-table__actions-head\">\n <span className=\"p-table__sr-only\">Actions</span>\n </th>\n ) : null}\n </tr>\n </thead>\n <tbody className=\"p-table__body\">\n {isLoading ? (\n <tr>\n <td className=\"p-table__state-cell\" colSpan={columnCount}>\n <span className=\"p-table__loading-mark\" aria-hidden=\"true\" />\n <span>{loadingLabel}</span>\n </td>\n </tr>\n ) : activeState ? (\n <tr>\n <td className=\"p-table__state-cell\" colSpan={columnCount}>\n <div className={cn('p-table__state', activeState.tone && `p-table__state--${activeState.tone}`)}>\n <strong>{activeState.title}</strong>\n {activeState.description ? <span>{activeState.description}</span> : null}\n {activeState.action ? <div className=\"p-table__state-action\">{activeState.action}</div> : null}\n </div>\n </td>\n </tr>\n ) : (\n rows.map((row, rowIndex) => {\n const rowId = getRowId?.(row, rowIndex) ?? String(rowIndex);\n const tone = getRowTone?.(row, rowIndex);\n const rowContent = columns.map((column) => (\n <td\n key={column.id}\n className={cn(\n 'p-table__cell p-table__body-cell',\n column.align && `p-table__cell--${column.align}`,\n column.priority && `p-table__cell--priority-${column.priority}`,\n column.hideOnTablet && 'p-table__cell--hide-tablet',\n column.hideOnMobile && 'p-table__cell--hide-mobile',\n )}\n >\n {getCellContent(row, column, rowIndex)}\n </td>\n ));\n\n return (\n <tr\n key={rowId}\n className={cn('p-table__row', tone && `p-table__row--${tone}`)}\n tabIndex={onRowClick ? 0 : undefined}\n onClick={onRowClick ? (event) => handleRowClick(row, rowIndex, event) : undefined}\n onKeyDown={onRowClick ? (event) => handleRowKeyDown(row, rowIndex, event) : undefined}\n >\n {rowContent}\n {hasActions ? (\n <td className=\"p-table__cell p-table__body-cell p-table__actions-cell\">\n {renderRowActions?.(row, rowIndex)}\n </td>\n ) : null}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n <ul className=\"p-table__mobile-list\" aria-label={`${caption} rows`}>\n {isLoading ? (\n <li className=\"p-table__mobile-state\">\n <span className=\"p-table__loading-mark\" aria-hidden=\"true\" />\n <span>{loadingLabel}</span>\n </li>\n ) : activeState ? (\n <li className=\"p-table__mobile-state\">\n <div className={cn('p-table__state', activeState.tone && `p-table__state--${activeState.tone}`)}>\n <strong>{activeState.title}</strong>\n {activeState.description ? <span>{activeState.description}</span> : null}\n {activeState.action ? <div className=\"p-table__state-action\">{activeState.action}</div> : null}\n </div>\n </li>\n ) : (\n rows.map((row, rowIndex) => {\n const rowId = getRowId?.(row, rowIndex) ?? String(rowIndex);\n const primaryColumn = visibleMobileColumns.find((column) => column.priority === 'primary') ?? visibleMobileColumns[0];\n const detailColumns = visibleMobileColumns.filter((column) => column.id !== primaryColumn?.id);\n const tone = getRowTone?.(row, rowIndex);\n\n return (\n <li\n key={rowId}\n className={cn('p-table__mobile-row', tone && `p-table__mobile-row--${tone}`)}\n role={onRowClick ? 'button' : undefined}\n tabIndex={onRowClick ? 0 : undefined}\n onClick={onRowClick ? (event) => handleRowClick(row, rowIndex, event) : undefined}\n onKeyDown={onRowClick ? (event) => handleRowKeyDown(row, rowIndex, event) : undefined}\n >\n {primaryColumn ? (\n <div className=\"p-table__mobile-title\">\n {getCellContent(row, primaryColumn, rowIndex)}\n </div>\n ) : null}\n <dl className=\"p-table__mobile-fields\">\n {detailColumns.map((column) => (\n <div key={column.id} className=\"p-table__mobile-field\">\n <dt>{getColumnLabel(column)}</dt>\n <dd>{getCellContent(row, column, rowIndex)}</dd>\n </div>\n ))}\n </dl>\n {hasActions ? (\n <div className=\"p-table__mobile-actions\">{renderRowActions?.(row, rowIndex)}</div>\n ) : null}\n </li>\n );\n })\n )}\n </ul>\n </div>\n );\n}\n\ntype PTableComponentType = (<RowData extends PTableRecord = PTableRecord>(\n props: PTableProps<RowData> & { ref?: ForwardedRef<PTableRef> },\n) => ReturnType<typeof PTableComponent>) & {\n displayName?: string;\n};\n\nexport const PTable = forwardRef(PTableComponent) as PTableComponentType;\n\nPTable.displayName = 'PTable';\n","import { Stack } from \"../PContainers\";\nimport { PTypography } from \"../PTypography\";\nimport cn from \"../../utils/cn\";\nimport \"./PSectionHeader.css\";\n\nexport type PSectionHeaderVariant = \"default\" | \"indexed\";\n\nexport interface PSectionHeaderProps {\n title: string;\n index?: string | number;\n variant?: PSectionHeaderVariant;\n className?: string;\n}\n\nexport default function PSectionHeader({\n title,\n index = \"01\",\n variant = \"default\",\n className,\n}: PSectionHeaderProps) {\n if (variant === \"indexed\") {\n return (\n <div\n className={cn(\"p-section-header p-section-header--indexed\", className)}\n >\n <PTypography\n as=\"span\"\n className=\"p-section-header__mark\"\n variant=\"body\"\n aria-hidden=\"true\"\n >\n —\n </PTypography>\n <PTypography\n as=\"span\"\n className=\"p-section-header__index\"\n variant=\"body\"\n >\n {index}\n </PTypography>\n <PTypography\n as=\"span\"\n className=\"p-section-header__divider\"\n variant=\"body\"\n aria-hidden=\"true\"\n >\n \\\n </PTypography>\n <PTypography as=\"h2\" className=\"p-section-header__title\" variant=\"body\">\n {title}\n </PTypography>\n </div>\n );\n }\n\n return (\n <Stack\n className={cn(\"p-section-header p-section-header--default\", className)}\n >\n <PTypography className=\"p-section-header__title\" variant=\"body-wide\">\n {title}\n </PTypography>\n </Stack>\n );\n}\n","import { forwardRef, type InputHTMLAttributes, type ReactNode, useId, useState } from 'react';\nimport './PTextInput.css';\nimport cn from '../../utils/cn';\n\nexport type PTextInputRef = HTMLInputElement;\n\nexport type PTextInputProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-input-ring:var(--p-color-info)] [--p-input-bg:var(--p-color-info-surface)]`\n */\n className?: string;\n /** Applied to the inner `<input>` element for layout / spacing overrides. */\n inputClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n /** Decorative element placed on the trailing edge. Ignored when `type=\"password\"`. */\n rightAdornment?: ReactNode;\n} & Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Inline SVG icons ────────────────────────────────────────────────────────\n\nfunction EyeIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"p-text-input__icon\"\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nfunction EyeOffIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"p-text-input__icon\"\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n </svg>\n );\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextInput = forwardRef<PTextInputRef, PTextInputProps>(\n (\n {\n className,\n inputClassName,\n type,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n rightAdornment,\n disabled,\n readOnly,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const errorId = `${inputId}-error`;\n const helperId = `${inputId}-helper`;\n\n const isPassword = type === 'password';\n const hasRightAdornment = Boolean(rightAdornment) && !isPassword;\n const [showPassword, setShowPassword] = useState(false);\n\n const inputType = isPassword ? (showPassword ? 'text' : 'password') : (type ?? 'text');\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-input', className)} style={style}>\n <div className=\"p-text-input__field\">\n <input\n {...props}\n id={inputId}\n ref={ref}\n type={inputType}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n autoComplete={props.autoComplete ?? (isPassword ? 'current-password' : undefined)}\n className={cn(\n 'p-text-input__control',\n (isPassword || hasRightAdornment) && 'p-text-input__control--adorned',\n isError && 'p-text-input__control--error',\n hasRightAdornment && type === 'date' && 'p-text-input__control--date-adorned',\n inputClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'p-text-input__label p-text-input__floating-label',\n isError && 'p-text-input__label--error',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — centered in the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the input beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={inputId}\n className=\"p-text-input__label p-text-input__placeholder-label\"\n >\n {label}\n </label>\n\n {/* Password toggle */}\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={disabled}\n className=\"p-text-input__action\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n aria-controls={inputId}\n >\n {showPassword ? <EyeIcon /> : <EyeOffIcon />}\n </button>\n )}\n\n {/* Right adornment — decorative, hidden from assistive tech */}\n {hasRightAdornment && (\n <span aria-hidden=\"true\" className=\"p-text-input__adornment\">\n {rightAdornment}\n </span>\n )}\n </div>\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p\n id={errorId}\n role=\"alert\"\n className=\"p-text-input__message p-text-input__message--error\"\n >\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p\n id={helperId}\n className=\"p-text-input__message p-text-input__message--helper\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextInput.displayName = 'PTextInput';\n","import { forwardRef, type TextareaHTMLAttributes, useId } from 'react';\nimport './PTextArea.css';\nimport cn from '../../utils/cn';\n\nexport type PTextAreaRef = HTMLTextAreaElement;\n\nexport type PTextAreaProps = {\n /**\n * Applied to the root wrapper element.\n * Override design tokens via CSS custom properties, e.g.:\n * `[--p-textarea-ring:var(--p-color-info)] [--p-textarea-bg:var(--p-color-info-surface)]`\n */\n className?: string;\n /** Applied to the inner `<textarea>` element for layout / spacing overrides. */\n textareaClassName?: string;\n /** Visible label — doubles as the floating label and the placeholder. */\n label: string;\n /** Shown below the field when there is no error. */\n helperText?: string;\n isError?: boolean;\n /** Shown below the field when `isError` is true. Announced immediately via `role=\"alert\"`. */\n errorMessage?: string;\n} & Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'className' | 'placeholder' | 'aria-label' | 'aria-describedby'\n>;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PTextArea = forwardRef<PTextAreaRef, PTextAreaProps>(\n (\n {\n className,\n textareaClassName,\n label,\n helperText,\n id,\n isError = false,\n errorMessage,\n disabled,\n readOnly,\n rows = 4,\n style,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const errorId = `${textareaId}-error`;\n const helperId = `${textareaId}-helper`;\n\n const describedBy = [\n isError && errorMessage ? errorId : null,\n !isError && helperText ? helperId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <div className={cn('p-text-area', className)} style={style}>\n <textarea\n {...props}\n id={textareaId}\n ref={ref}\n rows={rows}\n disabled={disabled}\n readOnly={readOnly}\n // Empty string required for the CSS peer-not-placeholder-shown trick.\n placeholder=\" \"\n // Accessibility\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n aria-required={props.required}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n className={cn(\n 'p-text-area__control',\n isError && 'p-text-area__control--error',\n textareaClassName,\n )}\n />\n\n {/*\n * Floating label — shown above the value when focused or filled.\n * aria-hidden: the <label> below already provides the accessible name.\n */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'p-text-area__label p-text-area__floating-label',\n isError && 'p-text-area__label--error',\n )}\n >\n {label}\n </span>\n\n {/*\n * Placeholder label — sits near the top of the field when empty and unfocused.\n * pointer-events-none lets clicks fall through to the textarea beneath;\n * htmlFor still wires up the accessible name correctly.\n */}\n <label\n htmlFor={textareaId}\n className=\"p-text-area__label p-text-area__placeholder-label\"\n >\n {label}\n </label>\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p\n id={errorId}\n role=\"alert\"\n className=\"p-text-area__message p-text-area__message--error\"\n >\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p\n id={helperId}\n className=\"p-text-area__message p-text-area__message--helper\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextArea.displayName = 'PTextArea';\n"],"names":["Row","children","gap","alignItems","justifyContent","className","jsx","cn","Stack","PBadge","forwardRef","Element","variant","size","appearance","isPinging","leftIcon","rightIcon","props","ref","jsxs","PButton","fullWidth","isActive","isLoading","isUnavailable","buttonClassName","content","Fragment","anchorDisabled","onClick","anchorProps","handleClick","event","type","buttonDisabled","buttonProps","r","t","f","n","clsx","falsyToString","value","cx","cva","base","config","variants","defaultVariants","getVariantClassNames","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","fontVariantsMap","PTypographyVariants","PTypography","hasRenderableNode","node","renderMetaNode","getCardSizeValue","PCard","prefix","eyebrow","title","description","media","actions","density","width","minWidth","height","minHeight","style","isInteractive","cardClassName","cardStyle","getSizeValue","getColumnConfig","columns","PCardGrid","minCardWidth","align","columnConfig","gridStyle","ChevronDownIcon","CheckIcon","XIcon","normalizeText","filterOptions","options","query","normalizedQuery","option","searchableText","getFirstEnabledIndex","getSelectedIndex","selectedValue","selectedIndex","getNextEnabledIndex","activeIndex","direction","nextIndex","attempt","_a","assignRef","PCombobox","label","defaultValue","selectedOptionProp","onValueChange","queryProp","defaultQuery","onQueryChange","filterMode","isLoadingMore","hasMore","onLoadMore","placeholder","searchPlaceholder","emptyText","loadingText","loadingMoreText","loadMoreText","helperText","isError","errorMessage","name","disabled","readOnly","required","clearable","inputClassName","id","generatedId","useId","rootId","labelId","inputId","listboxId","helperId","errorId","rootRef","useRef","inputRef","modalInputRef","hiddenInputRef","activeOptionRef","panelRef","isControlled","isQueryControlled","internalValue","setInternalValue","useState","selectedOption","internalQuery","setInternalQuery","isOpen","setIsOpen","isModalViewport","setIsModalViewport","filteredOptions","useMemo","setActiveIndex","activeOption","activeOptionId","modalTitleId","messageId","hasSelection","canClear","inputValue","showInitialLoading","showFooterLoading","showLoadMore","useEffect","currentIndex","matcher","mediaQuery","syncModalViewport","_b","setRootRef","setSearchQuery","nextQuery","source","requestLoadMore","scrollHeight","clientHeight","commitValue","nextOption","nextValue","openCombobox","nextOptions","closeCombobox","handleInputChange","handleInputKeyDown","handleOptionPointerDown","handleClear","handlePanelScroll","panel","handleBlur","groups","accumulator","group","existingGroup","item","optionIndex","isSelected","dayFormatter","toLocalDate","parts","year","month","day","date","toIsoDate","startOfMonth","endOfMonth","addMonths","months","addMonthsClamped","monthStart","lastDay","addDays","days","isSameDay","a","b","getToday","today","getCalendarDays","monthDate","weekStartsOn","offset","gridStart","_","index","resolvePresetDate","preset","getMonthLabel","locale","getMonthOptions","getDateLabel","getDayLabel","getWeekdayLabels","baseSunday","isBeforeDate","minDate","isAfterDate","maxDate","isSameMonth","isMonthDisabled","monthEnd","clampVisibleMonth","getFocusableDateInMonth","preferredDate","nextDate","getYearOptions","visibleMonth","visibleYear","defaultStartYear","defaultEndYear","startYear","endYear","firstYear","lastYear","PDatePicker","presets","customLabel","showCustom","presetColumns","min","max","panelId","selectedDate","setVisibleMonth","focusedDate","setFocusedDate","calendarTriggerRef","dayRefs","shouldFocusCalendarDateRef","calendarDays","weekdayLabels","monthOptions","yearOptions","hasPresets","shouldRenderCustom","presetColumnsStyle","displayValue","selectedMatchesPreset","isCustomActive","previousMonth","nextMonth","isPreviousMonthDisabled","isNextMonthDisabled","setDateValue","openCalendar","trigger","nextFocusedDate","closeCalendar","restoreFocus","updateVisibleMonth","clampedMonth","handleMonthChange","handleYearChange","nextYear","handlePresetClick","presetDate","handleDayClick","focusCalendarDate","handleDayKeyDown","weekOffset","CalendarIcon","ChevronLeftIcon","ChevronRightIcon","weekday","isoDate","isOutsideMonth","isToday","isDisabled","PDatePickerPresets","isInRange","startDate","endDate","normalizeRange","resolvePresetRange","getRangeDates","isSameRange","getRangeLabel","PDateRangePicker","nameStart","nameEnd","hasCompleteRange","setRangeValue","range","nextStartDate","nextEndDate","normalizedRange","normalizedDates","presetRange","isRangeStart","isRangeEnd","isRangeMiddle","PDateRangePickerPresets","weekStart","start","end","lastMonth","PHighlight","color","textColor","highlightStyle","PHorizontalSlider","ariaLabel","snap","scrollerClassName","listClassName","itemClassName","sliderStyle","child","getSelectValue","PSelect","selectClassName","hideLabel","onChange","selectId","hasValue","describedBy","groupedOptions","handleChange","clampPage","page","pageCount","getRange","getPaginationItems","siblingCount","boundaryCount","normalizedPageCount","normalizedPage","normalizedSiblingCount","normalizedBoundaryCount","totalVisible","edgeWindowCount","startPages","endPages","startWindowEnd","endWindowStart","middleStart","middleEnd","getDefaultSummary","totalItems","pageSize","itemLabel","PaginationButton","PPagination","pageSizeOptions","hasPreviousPage","hasNextPage","showRowsPerPage","onPageChange","onPageSizeChange","summary","currentPage","canRequestPage","canGoPrevious","canGoNext","pageItems","shouldShowRowsPerPage","summaryText","handlePageChange","nextPage","clampedNextPage","nextPageSize","getColumnLabel","column","getCellContent","row","rowIndex","getNextSortDirection","hasClosest","target","hasContains","isInteractiveTarget","container","interactiveElement","PTableComponent","rows","caption","captionHidden","stickyHeader","stickyFirstColumn","loadingLabel","emptyState","errorState","getRowId","getRowTone","onRowClick","renderRowActions","onSortChange","tableClassName","hasRows","hasActions","activeState","visibleMobileColumns","columnCount","handleRowClick","handleRowKeyDown","nextSortDirection","ariaSort","rowId","tone","rowContent","primaryColumn","detailColumns","PTable","PSectionHeader","EyeIcon","EyeOffIcon","PTextInput","rightAdornment","isPassword","hasRightAdornment","showPassword","setShowPassword","inputType","v","PTextArea","textareaClassName","textareaId"],"mappings":"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","x_google_ignoreList":[4,5]}