@paolojulian.dev/design-system 4.2.2 → 4.4.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","../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/PSectionHeader/PSectionHeader.tsx","../src/components/PTextInput/PTextInput.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","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: 'font-serif',\n body: 'text-base',\n 'body-wide': 'text-sm tracking-[0.40em] font-medium',\n heading: 'text-[1.5rem] md:text-4xl tracking-[-0.04em] font-medium',\n 'heading-lg':\n 'text-[2.5rem] md:text-[4rem] tracking-[-0.04em] font-medium leading-[2.75rem] md:leading-[4.5rem]',\n 'heading-xl':\n 'text-[4rem] md:text-[7rem] tracking-[-0.04em] leading-[3.5rem] md:leading-[5.5rem] font-medium',\n} satisfies Record<FontVariants, string>;\n\nexport const PTypographyVariants = cva('font-sans', {\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 { 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 { 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:blue] [--p-input-bg:#f5f5f5]`\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 width=\"20\"\n height=\"20\"\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 >\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 width=\"20\"\n height=\"20\"\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 >\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 relative w-full', 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 // Layout — tall enough for the floating label + value\n 'peer h-16 w-full rounded px-4 pt-6 pb-2',\n (isPassword || hasRightAdornment) && 'pr-12',\n // Visuals\n 'bg-(--p-input-bg) text-(--p-input-text)',\n 'font-sans text-sm outline-none',\n 'border border-(--p-input-border) focus:border-(--p-input-border-focus)',\n // Focus\n 'focus:bg-(--p-input-bg-focus)',\n 'focus:ring-2 focus:ring-(--p-input-ring)',\n // Motion\n 'transition-all duration-150 ease-in',\n // States\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'read-only:cursor-default read-only:bg-(--p-input-bg-readonly)',\n isError && 'ring-2 ring-red-500',\n // Date — hide native picker chrome so rightAdornment can replace it\n hasRightAdornment &&\n type === 'date' &&\n '[&::-webkit-calendar-picker-indicator]:absolute [&::-webkit-calendar-picker-indicator]:right-0 [&::-webkit-calendar-picker-indicator]:h-full [&::-webkit-calendar-picker-indicator]:w-full [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-0',\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 'pointer-events-none absolute top-2 left-4',\n 'font-sans text-xs',\n 'origin-left transition-all duration-150 ease-in',\n // Hidden by default\n 'scale-0 opacity-0',\n isError\n ? 'text-red-500'\n : 'text-(--p-input-label) peer-focus:text-(--p-input-label-focus)',\n // Reveal when focused or filled\n 'peer-focus:scale-100 peer-focus:opacity-100',\n 'peer-not-placeholder-shown:scale-100 peer-not-placeholder-shown:opacity-100',\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={cn(\n 'pointer-events-none absolute top-1/2 left-4 -translate-y-1/2',\n 'font-sans text-sm text-(--p-input-text)',\n 'origin-left transition-all duration-150 ease-in',\n // Collapse when focused or filled\n 'peer-focus:scale-0 peer-focus:opacity-0',\n 'peer-not-placeholder-shown:scale-0 peer-not-placeholder-shown:opacity-0',\n disabled && 'opacity-50',\n )}\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={cn(\n 'absolute top-1/2 right-4 -translate-y-1/2',\n 'text-(--p-input-label) hover:text-(--p-input-text)',\n 'transition-colors duration-150',\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\n 'focus-visible:outline-(--p-input-ring)',\n 'disabled:pointer-events-none disabled:opacity-50',\n )}\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\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute top-1/2 right-4 -translate-y-1/2 text-(--p-input-label)\"\n >\n {rightAdornment}\n </span>\n )}\n\n {/* Error message — announced immediately via role=\"alert\" */}\n {isError && errorMessage && (\n <p id={errorId} role=\"alert\" className=\"mt-1 px-4 font-sans text-xs text-red-500\">\n {errorMessage}\n </p>\n )}\n\n {/* Helper text — visible only when there is no error */}\n {!isError && helperText && (\n <p id={helperId} className=\"mt-1 px-4 font-sans text-xs text-(--p-input-text-helper)\">\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nPTextInput.displayName = 'PTextInput';\n"],"names":["Row","children","gap","alignItems","justifyContent","className","jsx","cn","Stack","r","e","t","f","n","clsx","falsyToString","value","cx","cva","base","config","props","ref","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","fontVariantsMap","PTypographyVariants","PTypography","Element","PSectionHeader","title","EyeIcon","jsxs","EyeOffIcon","PTextInput","forwardRef","inputClassName","type","label","helperText","id","isError","errorMessage","rightAdornment","disabled","readOnly","style","generatedId","useId","inputId","errorId","helperId","isPassword","hasRightAdornment","showPassword","setShowPassword","useState","inputType","describedBy","v"],"mappings":"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","x_google_ignoreList":[2,3]}
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]}