@kjaniec-dev/ui 0.9.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2140 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +388 -1
- package/dist/index.d.ts +388 -1
- package/dist/index.js +2124 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/alert.tsx","../src/components/spinner.tsx","../src/components/progress.tsx","../src/components/field.tsx","../src/components/form-field.tsx","../src/components/progress-ring.tsx","../src/components/input.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.tsx","../src/components/toggle-group.tsx","../src/components/card.tsx","../src/components/stat.tsx","../src/components/avatar.tsx","../src/components/tabs.tsx","../src/components/accordion.tsx","../src/components/dropdown-menu.tsx","../src/components/breadcrumb.tsx","../src/components/pagination.tsx","../src/components/bottom-navigation.tsx","../src/components/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx","../src/components/page-header.tsx","../src/components/section-header.tsx","../src/components/empty-state.tsx","../src/components/metric-card.tsx","../src/components/data-table.tsx","../src/components/error-state.tsx","../src/components/skeleton.tsx","../src/components/dashboard-shell.tsx","../src/components/settings-layout.tsx","../src/components/detail-page-layout.tsx","../src/components/table-toolbar.tsx","../src/components/confirm-dialog.tsx","../src/components/drawer.tsx","../src/components/command-palette.tsx","../src/components/sidebar-nav.tsx","../src/components/fab.tsx","../src/components/bottom-sheet.tsx","../src/components/kbd.tsx","../src/components/code-block.tsx","../src/components/separator.tsx","../src/components/popover.tsx","../src/components/combobox.tsx","../src/components/calendar-internals.ts","../src/components/calendar-grid.tsx","../src/components/calendar.tsx","../src/components/date-picker.tsx","../src/components/range-calendar.tsx","../src/components/date-range-picker.tsx","../src/components/dropzone.tsx","../src/components/file-upload-internals.ts","../src/components/file-upload.tsx","../src/components/timeline.tsx","../src/components/stepper.tsx","../src/components/app-shell.tsx","../src/components/rating/rating.tsx","../src/components/rating/rating-field.tsx","../src/components/rating/rating-summary.tsx","../src/components/pricing-card.tsx","../src/components/blog-card.tsx","../src/components/project-card.tsx","../src/components/inbox-popover.tsx","../src/components/color-picker.tsx","../src/components/image-gallery.tsx","../src/components/inpost-geowidget/use-inpost-script.ts","../src/components/inpost-geowidget/inpost-geowidget.tsx","../src/components/inpost-geowidget/inpost-geowidget-modal.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx","React2","React3","React4","React5","React6","React7","React8","range","React9","React10","React11","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21","React22","React23","container","React24","React25","React26","Fragment","React27","React28","React29","React30","React31","React32","React33","React34","React35","React36","React37","React38","React39","React40","React41","React42","React43","Combobox","ComboboxField","React44","CalendarGrid","React45","Calendar","React46","DatePicker","DatePickerField","React47","RangeCalendar","displayFormat","React48","DateRangePicker","DateRangePickerField","React49","Dropzone","React50","FileUpload","FileUploadField","React51","sizeClasses","React52","React53","React54","React55","React56","React57","React58","React59","React60","React61","React62","useState","useEffect","useRef"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind-aware conflict resolution.\n * `cn(\"px-2\", condition && \"px-4\")` → keeps the last conflicting utility.\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap select-none\",\n \"font-sans font-semibold leading-none\",\n \"border border-transparent rounded-kj-md cursor-pointer\",\n \"transition-[background-color,color,border-color,box-shadow,transform] duration-150\",\n \"active:translate-y-px\",\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-primary-foreground hover:bg-primary-hover\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n outline:\n \"bg-transparent text-foreground border-border hover:bg-muted hover:border-muted-foreground\",\n ghost: \"bg-transparent text-foreground hover:bg-muted\",\n danger: \"bg-danger text-white hover:brightness-95\",\n },\n size: {\n sm: \"h-8 px-3 text-[0.8rem] rounded-kj-sm\",\n md: \"h-10 px-[1.1rem] text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10 p-0\",\n \"icon-sm\": \"h-8 w-8 p-0 rounded-kj-sm\",\n },\n },\n defaultVariants: { variant: \"primary\", size: \"md\" },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Shows a spinner and disables interaction. */\n loading?: boolean;\n /** Icon rendered before the label. */\n leadingIcon?: React.ReactNode;\n /** Icon rendered after the label. */\n trailingIcon?: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n { className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), loading && \"relative\", className)}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <span\n aria-hidden\n className=\"absolute h-[1em] w-[1em] rounded-full border-2 border-current border-t-transparent animate-spin\"\n />\n )}\n <span className={cn(\"contents\", loading && \"invisible\")}>\n {leadingIcon && (\n <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>\n )}\n </span>\n </button>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1.5 px-2.5 py-0.5 text-xs font-semibold leading-snug rounded-full border border-transparent\",\n {\n variants: {\n variant: {\n neutral: \"bg-muted text-muted-foreground\",\n primary: \"bg-primary/15 text-primary-hover dark:text-primary\",\n secondary: \"bg-secondary/15 text-secondary-hover dark:text-secondary\",\n success: \"bg-success-surface text-success\",\n warning: \"bg-warning-surface text-warning\",\n danger: \"bg-danger-surface text-danger\",\n info: \"bg-info-surface text-info\",\n solid: \"bg-primary text-primary-foreground\",\n },\n },\n defaultVariants: { variant: \"neutral\" },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Render a leading status dot. */\n dot?: boolean;\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, dot, children, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props}>\n {dot && <span className=\"h-1.5 w-1.5 rounded-full bg-current\" aria-hidden />}\n {children}\n </span>\n )\n);\nBadge.displayName = \"Badge\";\n\nexport { badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst alertVariants = cva(\"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\", {\n variants: {\n variant: {\n info: \"bg-info-surface border-info/30\",\n success: \"bg-success-surface border-success/30\",\n warning: \"bg-warning-surface border-warning/30\",\n danger: \"bg-danger-surface border-danger/30\",\n },\n },\n defaultVariants: { variant: \"info\" },\n});\n\nconst iconColor = {\n info: \"text-info\",\n success: \"text-success\",\n warning: \"text-warning\",\n danger: \"text-danger\",\n} as const;\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n VariantProps<typeof alertVariants> {\n /** Optional leading icon (e.g. an SVG). Inherits the variant color. */\n icon?: React.ReactNode;\n title?: React.ReactNode;\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"info\", icon, title, children, ...props }, ref) => (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\n {icon && (\n <span\n className={cn(\n \"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\",\n iconColor[variant ?? \"info\"]\n )}\n >\n {icon}\n </span>\n )}\n <div className=\"text-foreground\">\n {title && <p className=\"font-bold m-0 mb-0.5 text-sm\">{title}</p>}\n {children && <p className=\"m-0 opacity-85\">{children}</p>}\n </div>\n </div>\n )\n);\nAlert.displayName = \"Alert\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Diameter in px. Default 24. */\n size?: number;\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size = 24, style, ...props }, ref) => (\n <span\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n \"inline-block rounded-full border-[2.5px] border-muted border-t-primary animate-spin align-middle\",\n className\n )}\n style={{ width: size, height: size, ...style }}\n {...props}\n />\n )\n);\nSpinner.displayName = \"Spinner\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 0–100. */\n value?: number;\n tone?: \"primary\" | \"secondary\";\n /** Extra classes applied to the inner bar span — use for animation, transform-origin, etc. */\n barClassName?: string;\n}\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value = 0, tone = \"primary\", barClassName, ...props }, ref) => {\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={props[\"aria-label\"] ?? \"Progress\"}\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\"h-2 w-full overflow-hidden rounded-full bg-muted\", className)}\n {...props}\n >\n <span\n className={cn(\n \"block h-full rounded-full transition-[width] duration-500 ease-out\",\n tone === \"secondary\" ? \"bg-secondary\" : \"bg-primary\",\n barClassName\n )}\n style={{ width: `${pct}%` }}\n />\n </div>\n );\n }\n);\nProgress.displayName = \"Progress\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** Append a red required marker. */\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)}\n {...props}\n >\n {children}\n {required && <span className=\"text-danger\"> *</span>}\n </label>\n )\n);\nLabel.displayName = \"Label\";\n\nexport interface HintProps extends React.HTMLAttributes<HTMLSpanElement> {\n error?: boolean;\n}\n\nexport const Hint = React.forwardRef<HTMLSpanElement, HintProps>(\n ({ className, error, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\"text-[0.76rem]\", error ? \"text-danger\" : \"text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nHint.displayName = \"Hint\";\n\n/** Vertical label + control + hint group. */\nexport const Field = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5\", className)} {...props} />\n )\n);\nField.displayName = \"Field\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Label, Hint } from \"./field\";\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n children: React.ReactNode;\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, label, hint, error, required, children, ...props }, ref) => {\n const id = React.useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n\n const child = React.Children.only(children) as React.ReactElement<{\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean | \"true\" | \"false\";\n required?: boolean;\n }>;\n const clonedChild = React.cloneElement(child, {\n id: child.props.id ?? id,\n \"aria-describedby\":\n cn(hint && hintId, error && errorId, child.props[\"aria-describedby\"]) || undefined,\n \"aria-invalid\": error ? \"true\" : undefined,\n required: child.props.required ?? required,\n });\n\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5 w-full\", className)} {...props}>\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n {clonedChild}\n {hint && !error && <Hint id={hintId}>{hint}</Hint>}\n {error && (\n <Hint id={errorId} error>\n {error}\n </Hint>\n )}\n </div>\n );\n }\n);\nFormField.displayName = \"FormField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { FormField } from \"./form-field\";\n\nexport type ProgressRingSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ProgressRingTone = \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface ProgressRingProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current progress value. Defaults to 0. */\n value?: number;\n /** Minimum progress value. Defaults to 0. */\n min?: number;\n /** Maximum progress value. Defaults to 100. */\n max?: number;\n /** Preset size of the ring. Defaults to \"md\". */\n size?: ProgressRingSize;\n /** Override stroke thickness (in px). */\n strokeWidth?: number;\n /** Color tone of the progress indicator. Defaults to \"primary\". */\n tone?: ProgressRingTone;\n /** Whether to show the percentage text inside the ring center if no children are provided. Defaults to false. */\n showValue?: boolean;\n /** Optional formatter for the center percentage display. */\n formatValue?: (value: number, percentage: number) => React.ReactNode;\n /** Additional CSS class for the background track circle. */\n trackClassName?: string;\n /** Additional CSS class for the progress indicator circle. */\n indicatorClassName?: string;\n /** Custom center content. */\n children?: React.ReactNode;\n}\n\nconst sizeDimensions: Record<ProgressRingSize, number> = {\n sm: 36,\n md: 64,\n lg: 96,\n xl: 128,\n};\n\nconst defaultStrokeWidths: Record<ProgressRingSize, number> = {\n sm: 3.5,\n md: 6,\n lg: 8,\n xl: 10,\n};\n\nconst textSizeClasses: Record<ProgressRingSize, string> = {\n sm: \"text-[0.65rem] font-semibold leading-none\",\n md: \"text-xs font-semibold leading-none\",\n lg: \"text-base font-bold leading-none\",\n xl: \"text-xl font-bold leading-none\",\n};\n\nconst toneClasses: Record<ProgressRingTone, string> = {\n primary: \"text-primary stroke-current\",\n secondary: \"text-secondary stroke-current\",\n success: \"text-success stroke-current\",\n warning: \"text-warning stroke-current\",\n danger: \"text-danger stroke-current\",\n info: \"text-info stroke-current\",\n};\n\nexport const ProgressRing = React.forwardRef<HTMLDivElement, ProgressRingProps>(\n (\n {\n className,\n style,\n value = 0,\n min = 0,\n max = 100,\n size = \"md\",\n strokeWidth,\n tone = \"primary\",\n showValue = false,\n formatValue,\n trackClassName,\n indicatorClassName,\n children,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref\n ) => {\n const range = max > min ? max - min : 100;\n const clampedValue = Math.max(min, Math.min(max, value));\n const percentage = Math.max(0, Math.min(100, ((clampedValue - min) / range) * 100));\n\n const dimension = sizeDimensions[size];\n const strokeWidthVal = strokeWidth ?? defaultStrokeWidths[size];\n const radius = Math.max(0, (dimension - strokeWidthVal) / 2);\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n const computedAriaLabel = ariaLabel ?? (props[\"aria-labelledby\"] ? undefined : \"Progress\");\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={computedAriaLabel}\n aria-valuenow={clampedValue}\n aria-valuemin={min}\n aria-valuemax={max}\n className={cn(\"relative inline-flex items-center justify-center shrink-0\", className)}\n style={{ width: dimension, height: dimension, ...style }}\n {...props}\n >\n <svg\n width={dimension}\n height={dimension}\n viewBox={`0 0 ${dimension} ${dimension}`}\n className=\"-rotate-90 transform\"\n >\n {/* Background track circle */}\n <circle\n cx={dimension / 2}\n cy={dimension / 2}\n r={radius}\n strokeWidth={strokeWidthVal}\n className={cn(\"stroke-muted/30 fill-none\", trackClassName)}\n />\n {/* Progress indicator circle */}\n <circle\n cx={dimension / 2}\n cy={dimension / 2}\n r={radius}\n strokeWidth={strokeWidthVal}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap={percentage === 0 ? \"butt\" : \"round\"}\n className={cn(\n \"fill-none transition-[stroke-dashoffset,opacity] duration-500 ease-in-out\",\n percentage === 0 && \"opacity-0\",\n toneClasses[tone],\n indicatorClassName\n )}\n />\n </svg>\n\n {(children || showValue) && (\n <div\n className={cn(\n \"absolute inset-0 flex flex-col items-center justify-center text-center text-foreground p-1\",\n textSizeClasses[size]\n )}\n >\n {children ??\n (formatValue\n ? formatValue(clampedValue, Math.round(percentage))\n : `${Math.round(percentage)}%`)}\n </div>\n )}\n </div>\n );\n }\n);\nProgressRing.displayName = \"ProgressRing\";\n\nexport interface ProgressRingFieldProps extends ProgressRingProps {\n /** Field label text. */\n label: string;\n /** Helper hint text displayed beneath the control. */\n hint?: string;\n /** Error message displayed beneath the control. */\n error?: string;\n /** Renders a required indicator (*). */\n required?: boolean;\n /** Class name for the outer field wrapper div. */\n fieldClassName?: string;\n}\n\nexport const ProgressRingField = React.forwardRef<HTMLDivElement, ProgressRingFieldProps>(\n ({ label, hint, error, required, fieldClassName, ...ringProps }, ref) => {\n return (\n <FormField\n label={label}\n hint={hint}\n error={error}\n required={required}\n className={fieldClassName}\n >\n <ProgressRing ref={ref} aria-label={ringProps[\"aria-label\"] ?? label} {...ringProps} />\n </FormField>\n );\n }\n);\nProgressRingField.displayName = \"ProgressRingField\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Visual error state (red border + ring). */\n error?: boolean;\n /** Icon shown inside the field, leading edge. */\n leadingIcon?: React.ReactNode;\n}\n\nconst baseField =\n \"w-full font-sans text-sm text-foreground bg-surface border rounded-kj-md px-[0.85rem] \" +\n \"transition-[border-color,box-shadow] duration-150 placeholder:text-muted-foreground \" +\n \"hover:border-control-border-hover focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30 \" +\n \"disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed\";\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, error, leadingIcon, ...props }, ref) => {\n const field = (\n <input\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n baseField,\n \"py-[calc(0.6rem*var(--kj-density,1))]\",\n error ? \"border-danger focus:border-danger focus:ring-danger/25\" : \"border-input\",\n leadingIcon && \"pl-[2.3rem]\",\n className\n )}\n {...props}\n />\n );\n if (!leadingIcon) return field;\n return (\n <span className=\"relative flex items-center\">\n <span className=\"absolute left-[0.8rem] text-muted-foreground [&_svg]:h-[1.05rem] [&_svg]:w-[1.05rem] pointer-events-none\">\n {leadingIcon}\n </span>\n {field}\n </span>\n );\n }\n);\nInput.displayName = \"Input\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => (\n <textarea\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n baseField,\n \"py-[calc(0.6rem*var(--kj-density,1))] min-h-[84px] leading-relaxed resize-y\",\n error ? \"border-danger focus:border-danger focus:ring-danger/25\" : \"border-input\",\n className\n )}\n {...props}\n />\n )\n);\nTextarea.displayName = \"Textarea\";\n\nexport interface TextFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Input>, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n ({ label, hint, error, required, className, ...props }, ref) => {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Input ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nTextField.displayName = \"TextField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean;\n}\n\nconst chevron =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\";\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, error, style, children, ...props }, ref) => (\n <select\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n \"w-full appearance-none cursor-pointer font-sans text-sm text-foreground bg-surface\",\n \"border rounded-kj-md py-[calc(0.6rem*var(--kj-density,1))] pl-[0.85rem] pr-9\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n \"disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n className\n )}\n style={{\n backgroundImage: `url(\"${chevron}\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"right 0.75rem center\",\n backgroundSize: \"1rem\",\n ...style,\n }}\n {...props}\n >\n {children}\n </select>\n )\n);\nSelect.displayName = \"Select\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface SelectFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Select>, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const SelectField = React.forwardRef<HTMLSelectElement, SelectFieldProps>(\n ({ label, hint, error, required, className, children, ...props }, ref) => {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Select ref={ref} error={!!error} {...props}>\n {children}\n </Select>\n </FormField>\n );\n }\n);\nSelectField.displayName = \"SelectField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input ref={ref} id={inputId} type=\"checkbox\" className=\"peer sr-only\" {...props} />\n <span className=\"grid place-items-center h-[1.15rem] w-[1.15rem] shrink-0 rounded-[0.4rem] border-[1.5px] border-input bg-surface transition-all duration-150 peer-checked:bg-primary peer-checked:border-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 peer-checked:[&_svg]:opacity-100 peer-checked:[&_svg]:scale-100\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n {label}\n </label>\n );\n }\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ className, label, id, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input ref={ref} id={inputId} type=\"radio\" className=\"peer sr-only\" {...props} />\n <span className=\"grid place-items-center h-[1.15rem] w-[1.15rem] shrink-0 rounded-full border-[1.5px] border-input bg-surface transition-all duration-150 peer-checked:bg-primary peer-checked:border-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 peer-checked:[&>span]:opacity-100 peer-checked:[&>span]:scale-100\">\n <span className=\"h-2 w-2 rounded-full bg-primary-foreground opacity-0 scale-[0.4] transition-all duration-150\" />\n </span>\n {label}\n </label>\n );\n }\n);\nRadio.displayName = \"Radio\";\n\nimport { Hint } from \"./field\";\n\nexport interface CheckboxFieldProps extends React.ComponentPropsWithoutRef<typeof Checkbox> {\n label: React.ReactNode;\n hint?: string;\n error?: string;\n}\n\nexport const CheckboxField = React.forwardRef<HTMLInputElement, CheckboxFieldProps>(\n ({ label, hint, error, className, ...props }, ref) => {\n const id = React.useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n return (\n <div className={cn(\"flex flex-col gap-1 w-full\", className)}>\n <Checkbox\n ref={ref}\n id={id}\n label={label}\n aria-describedby={cn(hint && hintId, error && errorId) || undefined}\n aria-invalid={error ? \"true\" : undefined}\n {...props}\n />\n {hint && !error && (\n <Hint id={hintId} className=\"pl-[1.8rem]\">\n {hint}\n </Hint>\n )}\n {error && (\n <Hint id={errorId} error className=\"pl-[1.8rem]\">\n {error}\n </Hint>\n )}\n </div>\n );\n }\n);\nCheckboxField.displayName = \"CheckboxField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, label, id, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input\n ref={ref}\n id={inputId}\n type=\"checkbox\"\n role=\"switch\"\n className=\"peer sr-only\"\n {...props}\n />\n <span className=\"relative h-[1.45rem] w-[2.6rem] shrink-0 rounded-full bg-input transition-colors duration-200 peer-checked:bg-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-[calc(1.45rem-4px)] after:w-[calc(1.45rem-4px)] after:rounded-full after:bg-white after:shadow-kj-sm after:transition-transform after:duration-200 peer-checked:after:translate-x-[1.15rem]\" />\n {label}\n </label>\n );\n }\n);\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type SliderProps = React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Range slider styled with the kit's primary token. Thumb styling lives in a\n * scoped <style> tag because pseudo-elements (::-webkit-slider-thumb) can't be\n * expressed as Tailwind utilities.\n */\nexport const Slider = React.forwardRef<HTMLInputElement, SliderProps>(\n ({ className, style, value, defaultValue, min = 0, max = 100, onChange, ...props }, ref) => {\n const [localValue, setLocalValue] = React.useState<number>(Number(defaultValue ?? value ?? 50));\n const isControlled = value !== undefined;\n const currentVal = isControlled ? Number(value) : localValue;\n\n const numMin = Number(min);\n const numMax = Number(max);\n const percentage = Math.min(\n 100,\n Math.max(0, ((currentVal - numMin) / (numMax - numMin)) * 100)\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setLocalValue(Number(e.target.value));\n }\n onChange?.(e);\n };\n\n return (\n <input\n ref={ref}\n type=\"range\"\n value={value}\n defaultValue={defaultValue}\n min={min}\n max={max}\n onChange={handleChange}\n style={{\n background: `linear-gradient(to right, var(--kj-primary) ${percentage}%, var(--kj-border, rgba(120, 120, 128, 0.2)) ${percentage}%)`,\n ...style,\n }}\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full appearance-none cursor-pointer accent-primary\",\n className\n )}\n {...props}\n />\n );\n }\n);\nSlider.displayName = \"Slider\";\n\n/** Inject once near the app root (or rely on the package stylesheet). */\nexport const sliderThumbCSS = `\n.kj-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:9999px;background:var(--kj-primary);border:3px solid var(--kj-surface);box-shadow:var(--kj-shadow-sm);cursor:pointer}\n.kj-slider::-moz-range-thumb{width:18px;height:18px;border-radius:9999px;background:var(--kj-primary);border:3px solid var(--kj-surface);box-shadow:var(--kj-shadow-sm);cursor:pointer}\n`;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SegmentedOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface SegmentedProps<T extends string> {\n options: SegmentedOption<T>[];\n value: T;\n onChange: (value: T) => void;\n className?: string;\n \"aria-label\"?: string;\n}\n\n/** Segmented control / single-select toggle group. Controlled. */\nexport function Segmented<T extends string>({\n options,\n value,\n onChange,\n className,\n ...props\n}: SegmentedProps<T>) {\n return (\n <div\n role=\"tablist\"\n className={cn(\"inline-flex gap-0.5 p-[3px] rounded-kj-md bg-muted\", className)}\n {...props}\n >\n {options.map((opt) => {\n const active = opt.value === value;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onChange(opt.value)}\n className={cn(\n \"px-3.5 py-1.5 text-[0.82rem] font-semibold rounded-[calc(var(--kj-radius-md)-3px)] cursor-pointer transition-all duration-150\",\n active\n ? \"bg-surface text-foreground shadow-kj-xs\"\n : \"bg-transparent text-muted-foreground hover:text-foreground\"\n )}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ToggleGroupOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface ToggleGroupProps<T extends string> {\n options: ToggleGroupOption<T>[];\n value: T[];\n onChange: (value: T[]) => void;\n disabled?: boolean;\n className?: string;\n \"aria-label\": string;\n}\n\n/** Multi-select toggle row. Always controlled — each button's pressed state is independent. */\nexport function ToggleGroup<T extends string>({\n options,\n value,\n onChange,\n disabled,\n className,\n ...props\n}: ToggleGroupProps<T>) {\n const toggle = (optionValue: T) => {\n if (disabled) return;\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onChange(next);\n };\n\n return (\n <div\n role=\"group\"\n className={cn(\"inline-flex gap-0.5 p-[3px] rounded-kj-md bg-muted\", className)}\n {...props}\n >\n {options.map((opt) => {\n const active = value.includes(opt.value);\n return (\n <button\n key={opt.value}\n type=\"button\"\n aria-pressed={active}\n disabled={disabled}\n onClick={() => toggle(opt.value)}\n className={cn(\n \"px-3.5 py-1.5 text-[0.82rem] font-semibold rounded-[calc(var(--kj-radius-md)-3px)] cursor-pointer transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50\",\n active\n ? \"bg-surface text-foreground shadow-kj-xs\"\n : \"bg-transparent text-muted-foreground hover:text-foreground\"\n )}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends Omit<React.AllHTMLAttributes<HTMLElement>, \"as\"> {\n as?: React.ElementType;\n /** Drop the border + heavier shadow for a floating look. */\n elevated?: boolean;\n /** Adds hover lift effect — translate-y + shadow. For keyboard accessibility pair with `as=\"a\"` or `as=\"button\"`. */\n interactive?: boolean;\n}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(\n ({ as: Tag = \"div\", className, elevated, interactive, ...props }, ref) => (\n <Tag\n ref={ref}\n className={cn(\n \"bg-card text-card-foreground rounded-kj-xl overflow-hidden border\",\n elevated ? \"border-transparent shadow-kj-lg\" : \"border-border shadow-kj-sm\",\n interactive &&\n \"cursor-pointer transition-all duration-300 hover:-translate-y-1 hover:shadow-kj-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n )\n);\nCard.displayName = \"Card\";\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[1.35rem] flex flex-col gap-1\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, children, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props}>\n {children}\n </h3>\n));\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\n/** Body region with default padding. */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-[1.35rem] pb-[1.35rem]\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\",\n className\n )}\n {...props}\n />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport interface StatProps extends React.HTMLAttributes<HTMLDivElement> {\n label: React.ReactNode;\n value: React.ReactNode;\n /** e.g. \"+12.3% mdm\" */\n delta?: React.ReactNode;\n trend?: \"up\" | \"down\";\n}\n\nexport const Stat = React.forwardRef<HTMLDivElement, StatProps>(\n ({ className, label, value, delta, trend, ...props }, ref) => (\n <Card ref={ref} className={cn(\"p-[1.35rem] flex flex-col gap-2\", className)} {...props}>\n <span className=\"text-[0.78rem] font-semibold uppercase tracking-[0.05em] text-muted-foreground\">\n {label}\n </span>\n <span className=\"text-[2rem] font-bold tracking-[-0.03em] tabular-nums leading-none\">\n {value}\n </span>\n {delta && (\n <span\n className={cn(\n \"inline-flex items-center gap-1 text-[0.8rem] font-semibold\",\n trend === \"down\" ? \"text-danger\" : \"text-success\"\n )}\n >\n {trend === \"down\" ? \"▼\" : \"▲\"} {delta}\n </span>\n )}\n </Card>\n )\n);\nStat.displayName = \"Stat\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst avatarVariants = cva(\n \"grid place-items-center shrink-0 rounded-full font-semibold border-2 border-surface\",\n {\n variants: {\n size: {\n sm: \"h-7 w-7 text-[0.7rem]\",\n md: \"h-9 w-9 text-[0.8rem]\",\n lg: \"h-12 w-12 text-base\",\n },\n tone: {\n secondary: \"bg-secondary text-secondary-foreground\",\n primary: \"bg-primary text-primary-foreground\",\n info: \"bg-info text-white\",\n muted: \"bg-muted text-muted-foreground\",\n },\n },\n defaultVariants: { size: \"md\", tone: \"secondary\" },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n /** Image URL; falls back to initials/children when absent. */\n src?: string;\n alt?: string;\n /** Show an online status dot. */\n status?: boolean;\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, tone, src, alt, status, children, ...props }, ref) => {\n const node = (\n <span\n ref={ref}\n className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)}\n {...props}\n >\n {src ? <img src={src} alt={alt} className=\"h-full w-full object-cover\" /> : children}\n </span>\n );\n if (!status) return node;\n return (\n <span className=\"relative inline-flex\">\n {node}\n <span className=\"absolute -right-px -bottom-px h-[0.7rem] w-[0.7rem] rounded-full bg-success border-2 border-surface\" />\n </span>\n );\n }\n);\nAvatar.displayName = \"Avatar\";\n\n/** Overlapping cluster of avatars. */\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex [&>*:not(:first-child)]:-ml-2.5\", className)} {...props} />\n )\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface TabsCtx {\n value: string;\n setValue: (v: string) => void;\n /** Instance-unique prefix so multiple Tabs on one page never share DOM ids. */\n uid: string;\n}\nconst TabsContext = React.createContext<TabsCtx | null>(null);\nfunction useTabs() {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error(\"Tabs.* must be used within <Tabs>\");\n return ctx;\n}\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Controlled active value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\n const uid = React.useId();\n const current = value ?? internal;\n const setValue = React.useCallback(\n (v: string) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange]\n );\n return (\n <TabsContext.Provider value={{ value: current, setValue, uid }}>\n <div className={className} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, onKeyDown, ...props }, ref) => {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = e.currentTarget;\n const tabs = Array.from(container.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]'));\n if (tabs.length === 0) return;\n\n const activeIndex = tabs.findIndex((tab) => tab.getAttribute(\"aria-selected\") === \"true\");\n let newIndex = activeIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n newIndex = (activeIndex + 1) % tabs.length;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n newIndex = (activeIndex - 1 + tabs.length) % tabs.length;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newIndex = 0;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"End\") {\n e.preventDefault();\n newIndex = tabs.length - 1;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n }\n\n onKeyDown?.(e);\n };\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex gap-1 border-b border-border overflow-x-auto whitespace-nowrap [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n );\n }\n);\nTabsList.displayName = \"TabsList\";\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, value, children, ...props }, ref) => {\n const { value: current, setValue, uid } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={`tabs-trigger-${uid}-${value}`}\n aria-controls={`tabs-panel-${uid}-${value}`}\n aria-selected={active}\n tabIndex={active ? 0 : -1}\n onClick={() => setValue(value)}\n className={cn(\n \"relative px-[0.9rem] py-2.5 text-sm font-semibold cursor-pointer transition-colors duration-150 outline-none shrink-0 whitespace-nowrap\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:rounded-sm\",\n \"after:content-[''] after:absolute after:left-[0.9rem] after:right-[0.9rem] after:-bottom-px after:h-0.5 after:rounded-sm after:transition-colors\",\n active\n ? \"text-foreground after:bg-primary\"\n : \"text-muted-foreground hover:text-foreground after:bg-transparent\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nTabsTrigger.displayName = \"TabsTrigger\";\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, value, ...props }, ref) => {\n const { value: current, uid } = useTabs();\n const active = current === value;\n if (!active) return null;\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n id={`tabs-panel-${uid}-${value}`}\n aria-labelledby={`tabs-trigger-${uid}-${value}`}\n tabIndex={0}\n className={cn(\"pt-5 text-[0.9rem] text-muted-foreground outline-none\", className)}\n {...props}\n />\n );\n }\n);\nTabsContent.displayName = \"TabsContent\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface AccordionCtx {\n open: string[];\n toggle: (v: string) => void;\n}\nconst AccordionContext = React.createContext<AccordionCtx | null>(null);\n\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \"single\" closes others when one opens. */\n type?: \"single\" | \"multiple\";\n defaultValue?: string[];\n}\n\nexport function Accordion({\n type = \"single\",\n defaultValue = [],\n className,\n children,\n ...props\n}: AccordionProps) {\n const [open, setOpen] = React.useState<string[]>(defaultValue);\n const toggle = React.useCallback(\n (v: string) => {\n setOpen((prev) => {\n const isOpen = prev.includes(v);\n if (type === \"single\") return isOpen ? [] : [v];\n return isOpen ? prev.filter((x) => x !== v) : [...prev, v];\n });\n },\n [type]\n );\n return (\n <AccordionContext.Provider value={{ open, toggle }}>\n <div\n className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)}\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nconst ItemContext = React.createContext<string>(\"\");\n\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ className, value, ...props }, ref) => (\n <ItemContext.Provider value={value}>\n <div\n ref={ref}\n className={cn(\"border-t border-border first:border-t-0\", className)}\n {...props}\n />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, children, ...props }, ref) => {\n const ctx = React.useContext(AccordionContext)!;\n const value = React.useContext(ItemContext);\n const isOpen = ctx.open.includes(value);\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={isOpen}\n onClick={() => ctx.toggle(value)}\n className={cn(\n \"w-full flex justify-between items-center gap-4 text-left px-[1.2rem] py-4 bg-card text-foreground text-[0.9rem] font-semibold cursor-pointer hover:bg-muted transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n <svg\n className={cn(\n \"shrink-0 text-muted-foreground transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n});\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n const ctx = React.useContext(AccordionContext)!;\n const value = React.useContext(ItemContext);\n const isOpen = ctx.open.includes(value);\n return (\n <div\n ref={ref}\n className={cn(\n \"grid transition-[grid-template-rows] duration-200 ease-out\",\n isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\"\n )}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div\n className={cn(\"px-[1.2rem] pt-3 pb-4 text-[0.85rem] text-muted-foreground\", className)}\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\nAccordionContent.displayName = \"AccordionContent\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface MenuCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n}\nconst MenuContext = React.createContext<MenuCtx | null>(null);\n\nexport function DropdownMenu({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = React.useState(false);\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && setOpen(false);\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open]);\n\n return (\n <MenuContext.Provider value={{ open, setOpen }}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </MenuContext.Provider>\n );\n}\n\nexport const DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { asChild?: boolean }\n>(({ onClick, asChild, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\n if (asChild) {\n const child = React.Children.only(props.children) as React.ReactElement<\n React.ComponentPropsWithRef<\"button\">\n >;\n return React.cloneElement(child, {\n ref,\n ...props,\n ...child.props,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n child.props.onClick?.(e);\n },\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": ctx.open,\n });\n }\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n {...props}\n />\n );\n});\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: \"start\" | \"end\";\n}\n\nexport function DropdownMenuContent({\n className,\n align = \"start\",\n children,\n ...props\n}: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!ctx.open) return;\n const container = ref.current;\n if (container) {\n const items = Array.from(\n container.querySelectorAll<HTMLButtonElement | HTMLAnchorElement>('[role=\"menuitem\"]')\n );\n if (items.length > 0) {\n setTimeout(() => items[0].focus(), 50);\n }\n }\n }, [ctx.open]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = ref.current;\n if (!container) return;\n\n const items = Array.from(container.querySelectorAll<HTMLElement>('[role=\"menuitem\"]'));\n if (items.length === 0) return;\n\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % items.length;\n items[nextIndex].focus();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + items.length) % items.length;\n items[prevIndex].focus();\n } else if (e.key === \"Tab\" || e.key === \"Escape\") {\n ctx.setOpen(false);\n }\n };\n\n if (!ctx.open) return null;\n return (\n <div\n ref={ref}\n role=\"menu\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n className={cn(\n \"absolute top-[calc(100%+6px)] z-40 min-w-[200px] p-1.5 rounded-kj-md bg-surface border border-border shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n align === \"end\" ? \"right-0\" : \"left-0\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport interface DropdownMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n danger?: boolean;\n icon?: React.ReactNode;\n}\n\nexport const DropdownMenuItem = React.forwardRef<HTMLButtonElement, DropdownMenuItemProps>(\n ({ className, danger, icon, children, onClick, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n onClick={(e) => {\n onClick?.(e);\n ctx.setOpen(false);\n }}\n className={cn(\n \"w-full flex items-center gap-2.5 text-left px-2.5 py-2 rounded-kj-sm text-[0.85rem] cursor-pointer transition-colors\",\n \"[&_svg]:h-4 [&_svg]:w-4\",\n danger ? \"text-danger hover:bg-danger-surface\" : \"text-foreground hover:bg-muted\",\n className\n )}\n {...props}\n >\n {icon}\n {children}\n </button>\n );\n }\n);\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\nexport function DropdownMenuSeparator({ className }: { className?: string }) {\n return <div className={cn(\"h-px bg-border my-1.5\", className)} role=\"separator\" />;\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, children, ...props }, ref) => (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)}\n {...props}\n >\n {children}\n </nav>\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport interface BreadcrumbItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Marks the trailing current page (non-link, emphasized). */\n current?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef<HTMLAnchorElement, BreadcrumbItemProps>(\n ({ className, current, children, ...props }, ref) => {\n if (current) {\n return (\n <span aria-current=\"page\" className={cn(\"text-foreground font-semibold\", className)}>\n {children}\n </span>\n );\n }\n return (\n <a\n ref={ref}\n className={cn(\n \"text-inherit no-underline hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return (\n <span aria-hidden className=\"text-muted-foreground/70\">\n /\n </span>\n );\n}\n","import { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport interface PaginationProps {\n page: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n /** How many numbered buttons to show around the edges. Default 5. */\n siblingCount?: number;\n className?: string;\n}\n\nfunction range(start: number, end: number) {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n}\n\n/** Builds a compact page list with ellipses, e.g. [1,2,3,'…',9]. */\nfunction paginate(page: number, pageCount: number): (number | \"…\")[] {\n if (pageCount <= 7) return range(1, pageCount);\n const left = Math.max(2, page - 1);\n const right = Math.min(pageCount - 1, page + 1);\n const items: (number | \"…\")[] = [1];\n if (left > 2) items.push(\"…\");\n items.push(...range(left, right));\n if (right < pageCount - 1) items.push(\"…\");\n items.push(pageCount);\n return items;\n}\n\nconst Chevron = ({ dir }: { dir: \"left\" | \"right\" }) => (\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points={dir === \"left\" ? \"15 18 9 12 15 6\" : \"9 18 15 12 9 6\"} />\n </svg>\n);\n\nexport function Pagination({ page, pageCount, onPageChange, className }: PaginationProps) {\n const items = paginate(page, pageCount);\n return (\n <nav aria-label=\"Paginacja\" className={cn(\"flex items-center gap-1\", className)}>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Previous\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n >\n <Chevron dir=\"left\" />\n </Button>\n {items.map((it, i) =>\n it === \"…\" ? (\n <span key={`e${i}`} className=\"px-1 text-muted-foreground select-none\">\n …\n </span>\n ) : (\n <Button\n key={it}\n variant={it === page ? \"primary\" : \"ghost\"}\n size=\"icon-sm\"\n aria-current={it === page ? \"page\" : undefined}\n onClick={() => onPageChange(it)}\n >\n {it}\n </Button>\n )\n )}\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Next\"\n disabled={page >= pageCount}\n onClick={() => onPageChange(page + 1)}\n >\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface BottomNavigationItem {\n id: string;\n label: string;\n href?: string;\n onClick?: () => void;\n icon: React.ReactNode;\n active?: boolean;\n badge?: React.ReactNode;\n}\n\nexport interface BottomNavigationProps extends React.HTMLAttributes<HTMLElement> {\n items: BottomNavigationItem[];\n /** Mode for displaying labels:\n * - 'always': Always show labels for all items.\n * - 'active': Only show label for the active item, hiding others.\n * - 'never': Hide all labels (only show icons).\n */\n showLabels?: \"always\" | \"active\" | \"never\";\n /** If true, uses fixed positioning at the bottom of the viewport with backdrop-blur. */\n fixed?: boolean;\n}\n\nexport const BottomNavigation = React.forwardRef<HTMLElement, BottomNavigationProps>(\n ({ className, items, showLabels = \"always\", fixed = true, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n className={cn(\n \"bg-surface/90 border-t border-border flex items-center justify-around px-4 pt-2 pb-[calc(0.75rem+env(safe-area-inset-bottom,0))] shadow-kj-lg\",\n fixed ? \"fixed bottom-0 left-0 right-0 z-40 backdrop-blur-md\" : \"relative w-full\",\n className\n )}\n {...props}\n >\n {items.map((item) => {\n const isActive = item.active;\n const showLabel = showLabels !== \"never\" && (showLabels === \"always\" || isActive);\n\n const content = (\n <span className=\"flex flex-col items-center justify-center gap-1 w-full relative\">\n <span\n className={cn(\n \"relative flex items-center justify-center p-1 rounded-full transition-all duration-200\",\n isActive\n ? \"text-primary scale-110\"\n : \"text-muted-foreground group-hover:text-foreground group-active:scale-95\"\n )}\n >\n {item.icon}\n {item.badge !== undefined && item.badge !== null && (\n <span className=\"absolute -top-1 -right-1.5 min-w-[16px] h-[16px] px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold flex items-center justify-center ring-2 ring-surface\">\n {item.badge}\n </span>\n )}\n </span>\n\n <span\n className={cn(\n \"text-[10px] font-semibold tracking-wide transition-all duration-200 select-none\",\n showLabel\n ? \"opacity-100 scale-100 h-auto\"\n : \"opacity-0 scale-75 h-0 overflow-hidden\",\n isActive\n ? \"text-primary font-bold\"\n : \"text-muted-foreground group-hover:text-foreground\"\n )}\n >\n {item.label}\n </span>\n\n {/* Subtle active indicator dot */}\n {isActive && (\n <span className=\"absolute -bottom-1.5 w-1 h-1 rounded-full bg-primary animate-fade-in\" />\n )}\n </span>\n );\n\n const itemClass =\n \"group flex-1 flex flex-col items-center justify-center py-1 cursor-pointer transition-all duration-150 relative focus:outline-none\";\n\n if (item.href) {\n return (\n <a\n key={item.id}\n href={item.href}\n className={itemClass}\n aria-current={isActive ? \"page\" : undefined}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={item.onClick}\n className={itemClass}\n aria-pressed={isActive}\n >\n {content}\n </button>\n );\n })}\n </nav>\n );\n }\n);\n\nBottomNavigation.displayName = \"BottomNavigation\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\n/** Rounded, bordered wrapper around a <Table>. */\nexport const TableWrap = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-full overflow-x-auto border border-border rounded-kj-lg\",\n className\n )}\n {...props}\n />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<\n HTMLTableElement,\n React.TableHTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n));\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n));\nTableRow.displayName = \"TableRow\";\n\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Right-align with tabular numerals. */\n numeric?: boolean;\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, numeric, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"px-4 py-3 bg-muted border-b border-border text-[0.72rem] font-semibold uppercase tracking-[0.05em] text-muted-foreground\",\n numeric ? \"text-right\" : \"text-left\",\n className\n )}\n {...props}\n />\n )\n);\nTableHead.displayName = \"TableHead\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, numeric, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"px-4 py-3 border-b border-border [tr:last-child_&]:border-b-0\",\n numeric && \"text-right tabular-nums\",\n className\n )}\n {...props}\n />\n )\n);\nTableCell.displayName = \"TableCell\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\n/** CSS-only hover/focus tooltip positioned above the trigger. */\nexport function Tooltip({ content, children, className }: TooltipProps) {\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n <span className={cn(\"relative inline-flex group\", className)} tabIndex={0}>\n {children}\n <span\n role=\"tooltip\"\n className={cn(\n \"pointer-events-none absolute bottom-[calc(100%+8px)] left-1/2 -translate-x-1/2 translate-y-1 whitespace-nowrap\",\n \"rounded-kj-sm bg-foreground text-background text-xs font-medium px-2.5 py-1.5 shadow-kj-md\",\n \"opacity-0 transition-all duration-150 group-hover:opacity-100 group-hover:translate-y-0 group-focus-visible:opacity-100 group-focus-visible:translate-y-0\",\n \"after:content-[''] after:absolute after:top-full after:left-1/2 after:-translate-x-1/2 after:border-[5px] after:border-transparent after:border-t-foreground\"\n )}\n >\n {content}\n </span>\n </span>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n /** Max width of the panel. Default 440px. */\n width?: number;\n className?: string;\n showClose?: boolean;\n}\n\nconst ModalContext = React.createContext<{ titleId: string; descId: string } | null>(null);\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. Includes focus trap and restore. */\nexport function Modal({\n open,\n onClose,\n children,\n width = 440,\n className,\n showClose = true,\n}: ModalProps) {\n const titleId = React.useId();\n const descId = React.useId();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n\n React.useEffect(() => {\n if (!open) {\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n return;\n }\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n // Delay slightly for transition to complete\n setTimeout(() => focusables[0].focus(), 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, onClose]);\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] grid place-items-center p-6 backdrop-blur-[3px] transition-opacity duration-200\",\n \"bg-[color-mix(in_oklch,#09090b_55%,transparent)]\",\n open ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n >\n <ModalContext.Provider value={{ titleId, descId }}>\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n tabIndex={-1}\n style={{ maxWidth: width }}\n className={cn(\n \"relative w-full p-7 rounded-kj-2xl bg-surface text-foreground border border-border shadow-kj-lg transition-transform duration-200 outline-none\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"absolute top-4 right-4 p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n {children}\n </div>\n </ModalContext.Provider>\n </div>\n );\n}\n\nexport function ModalTitle({\n className,\n id,\n children,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement>) {\n const ctx = React.useContext(ModalContext);\n return (\n <h3\n id={id ?? ctx?.titleId}\n className={cn(\n \"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em] text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\nexport function ModalDescription({\n className,\n id,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n const ctx = React.useContext(ModalContext);\n return (\n <p\n id={id ?? ctx?.descId}\n className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function ModalActions({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex gap-2.5 justify-end mt-6\", className)} {...props} />;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type ToastTone = \"default\" | \"success\" | \"danger\";\nexport interface ToastOptions {\n message: React.ReactNode;\n tone?: ToastTone;\n /** Auto-dismiss after ms. Default 3200. Pass 0 to keep open. */\n duration?: number;\n}\ninterface ToastItem extends Required<Omit<ToastOptions, \"duration\">> {\n id: number;\n duration: number;\n leaving?: boolean;\n}\n\ninterface ToastCtx {\n toast: (opts: ToastOptions) => void;\n}\nconst ToastContext = React.createContext<ToastCtx | null>(null);\n\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nconst icons: Record<ToastTone, React.ReactNode> = {\n default: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-primary\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n success: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-success\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n ),\n danger: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-danger\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n ),\n};\n\nconst toneBorder: Record<ToastTone, string> = {\n default: \"border-l-primary\",\n success: \"border-l-success\",\n danger: \"border-l-danger\",\n};\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [items, setItems] = React.useState<ToastItem[]>([]);\n const idRef = React.useRef(0);\n\n const remove = React.useCallback((id: number) => {\n setItems((prev) => prev.map((t) => (t.id === id ? { ...t, leaving: true } : t)));\n setTimeout(() => setItems((prev) => prev.filter((t) => t.id !== id)), 250);\n }, []);\n\n const toast = React.useCallback(\n ({ message, tone = \"default\", duration = 3200 }: ToastOptions) => {\n const id = ++idRef.current;\n setItems((prev) => [...prev, { id, message, tone, duration }]);\n if (duration > 0) setTimeout(() => remove(id), duration);\n },\n [remove]\n );\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n <div className=\"fixed bottom-6 right-6 z-[200] flex flex-col gap-2.5\">\n {items.map((t) => (\n <div\n key={t.id}\n role=\"status\"\n onClick={() => remove(t.id)}\n className={cn(\n \"flex items-center gap-2.5 min-w-[280px] px-4 py-3 cursor-pointer\",\n \"bg-surface border border-border border-l-[3px] rounded-kj-md shadow-kj-lg text-[0.85rem] font-medium\",\n toneBorder[t.tone],\n t.leaving\n ? \"animate-[kjtoastout_.25s_ease_forwards]\"\n : \"animate-[kjtoastin_.25s_ease]\"\n )}\n >\n <span className=\"grid place-items-center\">{icons[t.tone]}</span>\n <span>{t.message}</span>\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport interface PageHeaderProps {\n eyebrow?: string;\n title: string;\n description?: string;\n actions?: React.ReactNode;\n}\n\nexport const PageHeader = React.forwardRef<HTMLElement, PageHeaderProps>(\n ({ eyebrow, title, description, actions }, ref) => (\n <header ref={ref} className=\"py-12 md:py-16\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-end md:justify-between\">\n <div className=\"space-y-3 max-w-2xl\">\n {eyebrow && (\n <p className=\"font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary\">\n {eyebrow}\n </p>\n )}\n <h1 className=\"font-sans text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl\">\n {title}\n </h1>\n {description && (\n <p className=\"text-base leading-relaxed text-muted-foreground sm:text-lg\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex flex-wrap gap-3\">{actions}</div>}\n </div>\n </header>\n )\n);\nPageHeader.displayName = \"PageHeader\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type SectionHeaderAlign = \"left\" | \"center\";\nexport type SectionHeaderHeadingLevel = \"h2\" | \"h3\" | \"h4\";\n\nexport interface SectionHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n kicker?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n align?: SectionHeaderAlign;\n headingLevel?: SectionHeaderHeadingLevel;\n divider?: boolean;\n}\n\nexport type SectionHeaderKickerProps = React.HTMLAttributes<HTMLParagraphElement>;\nexport interface SectionHeaderTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n as?: SectionHeaderHeadingLevel;\n}\nexport type SectionHeaderDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;\nexport type SectionHeaderActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SectionHeaderKicker = React.forwardRef<HTMLParagraphElement, SectionHeaderKickerProps>(\n ({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <p\n ref={ref}\n className={cn(\n \"font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary\",\n className\n )}\n {...props}\n >\n {children}\n </p>\n );\n }\n);\nSectionHeaderKicker.displayName = \"SectionHeaderKicker\";\n\nconst SectionHeaderTitle = React.forwardRef<HTMLHeadingElement, SectionHeaderTitleProps>(\n ({ className, as: Component = \"h2\", children, ...props }, ref) => {\n if (!children) return null;\n return (\n <Component\n ref={ref}\n className={cn(\"text-2xl font-bold tracking-tight text-foreground sm:text-3xl\", className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nSectionHeaderTitle.displayName = \"SectionHeaderTitle\";\n\nconst SectionHeaderDescription = React.forwardRef<\n HTMLParagraphElement,\n SectionHeaderDescriptionProps\n>(({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <p\n ref={ref}\n className={cn(\"text-base leading-relaxed text-muted-foreground max-w-2xl\", className)}\n {...props}\n >\n {children}\n </p>\n );\n});\nSectionHeaderDescription.displayName = \"SectionHeaderDescription\";\n\nconst SectionHeaderActions = React.forwardRef<HTMLDivElement, SectionHeaderActionsProps>(\n ({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <div ref={ref} className={cn(\"flex flex-wrap items-center gap-3\", className)} {...props}>\n {children}\n </div>\n );\n }\n);\nSectionHeaderActions.displayName = \"SectionHeaderActions\";\n\nexport const SectionHeader = React.forwardRef<HTMLDivElement, SectionHeaderProps>(\n (\n {\n kicker,\n title,\n description,\n actions,\n align = \"left\",\n headingLevel = \"h2\",\n divider = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isCentered = align === \"center\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"space-y-4\",\n isCentered\n ? \"text-center items-center mx-auto max-w-3xl\"\n : \"md:flex md:items-end md:justify-between md:space-y-0\",\n divider && \"border-b border-border pb-6\",\n className\n )}\n {...props}\n >\n {children ? (\n children\n ) : (\n <>\n <div className={cn(\"space-y-2\", isCentered && \"flex flex-col items-center\")}>\n {kicker && <SectionHeaderKicker>{kicker}</SectionHeaderKicker>}\n {title && <SectionHeaderTitle as={headingLevel}>{title}</SectionHeaderTitle>}\n {description && <SectionHeaderDescription>{description}</SectionHeaderDescription>}\n </div>\n {actions && (\n <SectionHeaderActions className={cn(isCentered && \"justify-center mt-4\")}>\n {actions}\n </SectionHeaderActions>\n )}\n </>\n )}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<SectionHeaderProps & React.RefAttributes<HTMLDivElement>> & {\n Kicker: typeof SectionHeaderKicker;\n Title: typeof SectionHeaderTitle;\n Description: typeof SectionHeaderDescription;\n Actions: typeof SectionHeaderActions;\n};\n\nSectionHeader.displayName = \"SectionHeader\";\nSectionHeader.Kicker = SectionHeaderKicker;\nSectionHeader.Title = SectionHeaderTitle;\nSectionHeader.Description = SectionHeaderDescription;\nSectionHeader.Actions = SectionHeaderActions;\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center p-8 border border-dashed border-border rounded-kj-lg bg-muted/20 min-h-[300px]\",\n className\n )}\n {...props}\n >\n {icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground mb-4 [&_svg]:h-6 [&_svg]:w-6\">\n {icon}\n </div>\n )}\n <h3 className=\"text-base font-bold text-foreground mb-1\">{title}</h3>\n {description && (\n <p className=\"text-sm text-muted-foreground max-w-sm mb-6 leading-relaxed\">{description}</p>\n )}\n {action && <div className=\"flex items-center gap-3\">{action}</div>}\n </div>\n )\n);\nEmptyState.displayName = \"EmptyState\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string;\n value: string | number;\n trend?: string;\n trendDirection?: \"up\" | \"down\" | \"neutral\";\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n (\n { className, title, value, trend, trendDirection = \"neutral\", description, icon, ...props },\n ref\n ) => {\n const trendColor = {\n up: \"text-success bg-success-surface border-success/20\",\n down: \"text-danger bg-danger-surface border-danger/20\",\n neutral: \"text-muted-foreground bg-muted border-border/20\",\n }[trendDirection];\n\n return (\n <Card ref={ref} className={cn(\"p-6\", className)} {...props}>\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-xs font-mono font-semibold uppercase tracking-[0.1em] text-muted-foreground\">\n {title}\n </span>\n {icon && (\n <span className=\"text-muted-foreground shrink-0 [&_svg]:h-4 [&_svg]:w-4\">{icon}</span>\n )}\n </div>\n <div className=\"flex items-baseline gap-2.5 mb-1.5\">\n <span className=\"text-3xl font-bold tracking-tight text-foreground\">{value}</span>\n {trend && (\n <span\n className={cn(\"text-[0.75rem] font-bold px-2 py-0.5 rounded-full border\", trendColor)}\n >\n {trend}\n </span>\n )}\n </div>\n {description && <p className=\"text-xs text-muted-foreground\">{description}</p>}\n </Card>\n );\n }\n);\nMetricCard.displayName = \"MetricCard\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Table, TableWrap, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"./table\";\nimport { Spinner } from \"./spinner\";\nimport { Alert } from \"./alert\";\nimport { EmptyState } from \"./empty-state\";\n\nexport interface DataTableColumn<T> {\n header: React.ReactNode;\n accessor: (row: T) => React.ReactNode;\n className?: string;\n align?: \"left\" | \"center\" | \"right\";\n sortable?: boolean;\n sortKey?: string;\n}\n\nexport interface DataTableProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n columns: DataTableColumn<T>[];\n data: T[];\n loading?: boolean;\n error?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n emptyAction?: React.ReactNode;\n\n // Production-grade features\n getRowKey?: (row: T, index: number) => React.Key;\n onRowClick?: (row: T) => void;\n toolbar?: React.ReactNode;\n pagination?: React.ReactNode;\n selectedRows?: Set<React.Key>;\n onSelectionChange?: (selectedKeys: Set<React.Key>) => void;\n\n // Sorting props\n sortBy?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSort?: (sortKey: string, direction: \"asc\" | \"desc\") => void;\n}\n\nexport function DataTable<T>({\n className,\n columns,\n data,\n loading = false,\n error,\n emptyTitle = \"No data available\",\n emptyDescription = \"There are no records to display at this time.\",\n emptyAction,\n getRowKey,\n onRowClick,\n toolbar,\n pagination,\n selectedRows,\n onSelectionChange,\n sortBy,\n sortDirection,\n onSort,\n ...props\n}: DataTableProps<T>) {\n const getRowId = React.useCallback(\n (row: T, index: number) => (getRowKey ? getRowKey(row, index) : index),\n [getRowKey]\n );\n\n const isSelectionActive = selectedRows !== undefined && onSelectionChange !== undefined;\n\n const allSelected = React.useMemo(() => {\n if (!isSelectionActive || data.length === 0) return false;\n return data.every((row, idx) => selectedRows.has(getRowId(row, idx)));\n }, [isSelectionActive, data, selectedRows, getRowId]);\n\n const someSelected = React.useMemo(() => {\n if (!isSelectionActive || data.length === 0) return false;\n const selectedCount = data.filter((row, idx) => selectedRows.has(getRowId(row, idx))).length;\n return selectedCount > 0 && selectedCount < data.length;\n }, [isSelectionActive, data, selectedRows, getRowId]);\n\n const headerCheckboxRef = React.useRef<HTMLInputElement>(null);\n React.useEffect(() => {\n if (headerCheckboxRef.current) {\n headerCheckboxRef.current.indeterminate = someSelected;\n }\n }, [someSelected]);\n\n const handleSelectAll = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!onSelectionChange) return;\n const checked = e.target.checked;\n const next = new Set<React.Key>(selectedRows);\n data.forEach((row, idx) => {\n const id = getRowId(row, idx);\n if (checked) {\n next.add(id);\n } else {\n next.delete(id);\n }\n });\n onSelectionChange(next);\n };\n\n const handleSelectRow = (row: T, idx: number, checked: boolean) => {\n if (!onSelectionChange || !selectedRows) return;\n const id = getRowId(row, idx);\n const next = new Set<React.Key>(selectedRows);\n if (checked) {\n next.add(id);\n } else {\n next.delete(id);\n }\n onSelectionChange(next);\n };\n\n return (\n <div className={cn(\"flex flex-col gap-4 w-full\", className)}>\n {/* Toolbar Slot */}\n {toolbar && (\n <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center justify-between gap-3\">\n {toolbar}\n </div>\n )}\n\n <TableWrap\n className=\"relative overflow-x-auto overflow-y-hidden [scroll-behavior:smooth] [-webkit-overflow-scrolling:touch]\"\n {...props}\n >\n <Table>\n <TableHeader>\n <TableRow>\n {/* Row selection checkbox in header */}\n {isSelectionActive && (\n <TableHead className=\"w-12 px-4 text-center\">\n <div className=\"inline-flex items-center justify-center\">\n <input\n type=\"checkbox\"\n ref={headerCheckboxRef}\n checked={allSelected}\n onChange={handleSelectAll}\n aria-label=\"Select all rows\"\n className=\"h-4 w-4 rounded border-input text-primary focus:ring-ring\"\n />\n </div>\n </TableHead>\n )}\n {columns.map((col, idx) => {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n }[col.align || \"left\"];\n const isSortable = col.sortable && onSort && col.sortKey;\n const isSortedActive = sortBy && col.sortKey === sortBy;\n const ariaSort = isSortable\n ? isSortedActive\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n : undefined;\n\n return (\n <TableHead\n key={idx}\n className={cn(\n alignClass,\n isSortable && \"p-0 hover:bg-muted/30 transition-colors\",\n col.className\n )}\n aria-sort={ariaSort}\n >\n {isSortable ? (\n <button\n type=\"button\"\n onClick={() => {\n if (!col.sortKey) return;\n const nextDirection =\n isSortedActive && sortDirection === \"asc\" ? \"desc\" : \"asc\";\n onSort(col.sortKey, nextDirection);\n }}\n className={cn(\n \"w-full px-4 py-3 flex items-center gap-1.5 font-semibold text-[0.72rem] uppercase tracking-[0.05em] text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 transition-colors cursor-pointer\",\n {\n \"justify-start text-left\": col.align === \"left\" || !col.align,\n \"justify-center text-center\": col.align === \"center\",\n \"justify-end text-right\": col.align === \"right\",\n }\n )}\n >\n <span>{col.header}</span>\n <span className=\"text-[10px] text-muted-foreground shrink-0 select-none\">\n {isSortedActive ? (sortDirection === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\n </span>\n </button>\n ) : (\n <div\n className={cn(\n \"inline-flex items-center gap-1.5\",\n alignClass === \"text-right\" && \"justify-end w-full\"\n )}\n >\n {col.header}\n </div>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading && data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (isSelectionActive ? 1 : 0)}\n className=\"h-64 text-center\"\n >\n <div className=\"flex flex-col items-center justify-center gap-3\">\n <Spinner size={32} />\n <span className=\"text-sm text-muted-foreground\">Loading dataset...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : error ? (\n <TableRow>\n <TableCell colSpan={columns.length + (isSelectionActive ? 1 : 0)} className=\"p-8\">\n <Alert variant=\"danger\" title=\"Error loading data\">\n {error}\n </Alert>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length + (isSelectionActive ? 1 : 0)} className=\"p-0\">\n <EmptyState\n title={emptyTitle}\n description={emptyDescription}\n action={emptyAction}\n className=\"border-none bg-transparent rounded-none py-16\"\n />\n </TableCell>\n </TableRow>\n ) : (\n data.map((row, rowIdx) => {\n const rowKey = getRowId(row, rowIdx);\n const isSelected = isSelectionActive && selectedRows.has(rowKey);\n return (\n <TableRow\n key={rowKey}\n onClick={() => onRowClick && onRowClick(row)}\n className={cn(\n onRowClick && \"cursor-pointer hover:bg-muted/40 transition-colors\",\n isSelected && \"bg-primary/5 hover:bg-primary/10\"\n )}\n >\n {isSelectionActive && (\n <TableCell\n className=\"w-12 px-4 text-center\"\n onClick={(e) => {\n // Stop propagation to prevent triggering onRowClick\n e.stopPropagation();\n }}\n >\n <div className=\"inline-flex items-center justify-center\">\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => handleSelectRow(row, rowIdx, e.target.checked)}\n aria-label={`Select row ${rowIdx + 1}`}\n className=\"h-4 w-4 rounded border-input text-primary focus:ring-ring\"\n />\n </div>\n </TableCell>\n )}\n {columns.map((col, colIdx) => {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n }[col.align || \"left\"];\n return (\n <TableCell key={colIdx} className={cn(alignClass, col.className)}>\n {col.accessor(row)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n {loading && data.length > 0 && (\n <div className=\"absolute inset-0 bg-background/50 backdrop-blur-[1px] grid place-items-center z-10 transition-opacity duration-150\">\n <Spinner size={36} />\n </div>\n )}\n </TableWrap>\n\n {/* Pagination Slot */}\n {pagination && <div className=\"flex items-center justify-end w-full\">{pagination}</div>}\n </div>\n );\n}\nDataTable.displayName = \"DataTable\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string;\n message: string;\n onRetry?: () => void;\n retryLabel?: string;\n}\n\nexport const ErrorState = React.forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n className,\n title = \"Wystąpił błąd\",\n message,\n onRetry,\n retryLabel = \"Spróbuj ponownie\",\n ...props\n },\n ref\n ) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center p-8 border border-danger/25 rounded-kj-lg bg-danger-surface/20 min-h-[300px]\",\n className\n )}\n {...props}\n >\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-danger-surface border border-danger/30 text-danger mb-4\">\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n viewBox=\"0 0 24 24\"\n className=\"h-6 w-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\"\n />\n </svg>\n </div>\n <h3 className=\"text-base font-bold text-foreground mb-1\">{title}</h3>\n <p className=\"text-sm text-muted-foreground max-w-sm mb-6 leading-relaxed\">{message}</p>\n {onRetry && (\n <Button size=\"sm\" variant=\"danger\" onClick={onRetry}>\n {retryLabel}\n </Button>\n )}\n </div>\n )\n);\nErrorState.displayName = \"ErrorState\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"circular\" | \"rectangular\";\n animation?: \"shimmer\" | \"pulse\" | \"none\";\n width?: string | number;\n height?: string | number;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n { className, variant = \"rectangular\", animation = \"shimmer\", width, height, style, ...props },\n ref\n ) => (\n <div\n ref={ref}\n className={cn(\n \"bg-muted-foreground/15 dark:bg-muted-foreground/20\",\n animation === \"pulse\" && \"animate-pulse\",\n animation === \"shimmer\" &&\n \"relative overflow-hidden after:absolute after:inset-0 after:-translate-x-full after:animate-[kjshimmer_2s_ease-in-out_infinite_alternate] after:bg-gradient-to-r after:from-transparent after:via-foreground/10 after:to-transparent\",\n variant === \"text\" && \"h-3 w-4/5 rounded-sm my-1.5\",\n variant === \"circular\" && \"rounded-full\",\n variant === \"rectangular\" && \"rounded-kj-md\",\n className\n )}\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n />\n )\n);\nSkeleton.displayName = \"Skeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DashboardShellProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebar?: React.ReactNode;\n topbar?: React.ReactNode;\n children: React.ReactNode;\n sidebarWidth?: string;\n contentWidth?: \"default\" | \"wide\" | \"full\";\n stickyTopbar?: boolean;\n mobileSidebar?: React.ReactNode;\n}\n\nexport const DashboardShell = React.forwardRef<HTMLDivElement, DashboardShellProps>(\n (\n {\n className,\n sidebar,\n topbar,\n children,\n sidebarWidth = \"md:w-64\",\n contentWidth = \"default\",\n stickyTopbar = true,\n mobileSidebar,\n ...props\n },\n ref\n ) => {\n const [mobileOpen, setMobileOpen] = React.useState(false);\n const contentWidthClass = {\n default: \"max-w-7xl w-full mx-auto\",\n wide: \"max-w-screen-2xl w-full mx-auto\",\n full: \"max-w-none w-full\",\n }[contentWidth];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-screen bg-canvas text-foreground flex flex-col md:flex-row\",\n className\n )}\n {...props}\n >\n {/* Sidebar (sticky desk, scrollable inside) */}\n {sidebar && (\n <aside\n className={cn(\n \"border-r border-border bg-surface shrink-0 z-20\",\n mobileSidebar ? \"hidden md:flex\" : \"w-full md:flex\",\n sidebarWidth\n )}\n >\n <div\n className={cn(\n \"sticky top-0 w-full flex flex-col\",\n mobileSidebar ? \"h-screen\" : \"h-auto md:h-screen\"\n )}\n >\n {sidebar}\n </div>\n </aside>\n )}\n\n {/* Mobile Navigation Drawer */}\n {mobileSidebar && mobileOpen && (\n <div\n onClick={() => setMobileOpen(false)}\n className=\"fixed inset-0 z-50 md:hidden bg-[color-mix(in_oklch,#09090b_45%,transparent)] backdrop-blur-[2px] transition-opacity duration-300\"\n >\n <aside\n onClick={(e) => e.stopPropagation()}\n className=\"w-72 h-full bg-surface border-r border-border flex flex-col shadow-kj-lg\"\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border\">\n <span className=\"text-xs font-bold uppercase tracking-wider text-muted-foreground\">\n Navigation\n </span>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n className=\"p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"flex-1 overflow-y-auto\">{mobileSidebar}</div>\n </aside>\n </div>\n )}\n\n {/* Main Content Area */}\n <div className=\"flex-1 flex flex-col min-w-0\">\n {/* Top Header Navigation */}\n {topbar && (\n <header\n className={cn(\n \"h-14 border-b border-border bg-surface flex items-center px-6 z-10 shrink-0 gap-4\",\n stickyTopbar && \"sticky top-0\"\n )}\n >\n {mobileSidebar && (\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n className=\"md:hidden p-1.5 -ml-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Open navigation\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n )}\n {topbar}\n </header>\n )}\n\n {/* Inner page container */}\n <main className={cn(\"flex-1 p-6 md:p-8\", contentWidthClass)}>{children}</main>\n </div>\n </div>\n );\n }\n);\nDashboardShell.displayName = \"DashboardShell\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SettingsLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebar: React.ReactNode;\n children: React.ReactNode;\n title?: string;\n description?: string;\n}\n\nexport const SettingsLayout = React.forwardRef<HTMLDivElement, SettingsLayoutProps>(\n ({ className, sidebar, children, title, description, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-6 w-full\", className)} {...props}>\n {/* Header */}\n {(title || description) && (\n <div className=\"border-b border-border pb-4\">\n {title && (\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">{title}</h1>\n )}\n {description && <p className=\"text-sm text-muted-foreground mt-1\">{description}</p>}\n </div>\n )}\n\n {/* Layout */}\n <div className=\"flex flex-col lg:flex-row gap-8\">\n {/* Sidebar Tabs / Navigation */}\n <aside className=\"lg:w-1/4 shrink-0\">\n <nav className=\"flex flex-row lg:flex-col gap-1 overflow-x-auto lg:overflow-x-visible pb-2 lg:pb-0\">\n {sidebar}\n </nav>\n </aside>\n\n {/* Content */}\n <div className=\"flex-1 max-w-3xl\">{children}</div>\n </div>\n </div>\n );\n }\n);\nSettingsLayout.displayName = \"SettingsLayout\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Button, buttonVariants } from \"./button\";\n\nexport interface DetailPageLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string;\n description?: string;\n backHref?: string;\n backLabel?: string;\n onBackClick?: () => void;\n actions?: React.ReactNode;\n aside?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const DetailPageLayout = React.forwardRef<HTMLDivElement, DetailPageLayoutProps>(\n (\n {\n className,\n title,\n description,\n backHref,\n backLabel = \"Back\",\n onBackClick,\n actions,\n aside,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn(\"space-y-6 w-full\", className)} {...props}>\n {/* Header/Top Area */}\n <div className=\"flex flex-col gap-3\">\n {(backHref || onBackClick) && (\n <div>\n {backHref ? (\n <a\n href={backHref}\n className={cn(\n buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n \"-ml-3 h-8 text-muted-foreground hover:text-foreground inline-flex items-center gap-1.5\"\n )}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 19.5 8.25 12l7.5-7.5\"\n />\n </svg>\n {backLabel}\n </a>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 text-muted-foreground hover:text-foreground\"\n onClick={onBackClick}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4 mr-1.5\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 19.5 8.25 12l7.5-7.5\"\n />\n </svg>\n {backLabel}\n </Button>\n )}\n </div>\n )}\n\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-4\">\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">{title}</h1>\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\n </div>\n </div>\n\n {/* Content Body Grid */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-8 items-start\">\n <div className={cn(\"space-y-6\", aside ? \"lg:col-span-2\" : \"lg:col-span-3\")}>\n {children}\n </div>\n {aside && (\n <aside className=\"space-y-6 lg:col-span-1 bg-surface border border-border rounded-kj-xl p-6 shadow-kj-xs\">\n {aside}\n </aside>\n )}\n </div>\n </div>\n );\n }\n);\nDetailPageLayout.displayName = \"DetailPageLayout\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Input } from \"./input\";\n\nexport interface TableToolbarProps extends React.HTMLAttributes<HTMLDivElement> {\n searchQuery?: string;\n onSearchChange?: (query: string) => void;\n searchPlaceholder?: string;\n actions?: React.ReactNode;\n filters?: React.ReactNode;\n}\n\nexport const TableToolbar = React.forwardRef<HTMLDivElement, TableToolbarProps>(\n (\n {\n className,\n searchQuery,\n onSearchChange,\n searchPlaceholder = \"Search...\",\n actions,\n filters,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col sm:flex-row items-stretch sm:items-center justify-between gap-3 w-full pb-1\",\n className\n )}\n {...props}\n >\n <div className=\"flex flex-1 flex-col sm:flex-row items-stretch sm:items-center gap-2 max-w-xl\">\n {onSearchChange && (\n <Input\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchQuery}\n onChange={(e) => onSearchChange(e.target.value)}\n className=\"sm:w-64\"\n leadingIcon={\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"\n />\n </svg>\n }\n />\n )}\n {filters && <div className=\"flex items-center gap-2\">{filters}</div>}\n </div>\n {actions && <div className=\"flex items-center gap-2 shrink-0 justify-end\">{actions}</div>}\n </div>\n );\n }\n);\nTableToolbar.displayName = \"TableToolbar\";\n","import { Modal, ModalTitle, ModalDescription, ModalActions } from \"./modal\";\nimport { Button } from \"./button\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title: string;\n description: string;\n confirmLabel?: string;\n cancelLabel?: string;\n tone?: \"danger\" | \"primary\" | \"success\";\n loading?: boolean;\n}\n\nexport function ConfirmDialog({\n open,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n tone = \"primary\",\n loading = false,\n}: ConfirmDialogProps) {\n const toneButtonVariant = {\n danger: \"danger\" as const,\n primary: \"primary\" as const,\n success: \"secondary\" as const, // standard secondary in our system is teal (success-aligned)\n }[tone];\n\n return (\n <Modal open={open} onClose={onClose} width={400} showClose={!loading}>\n <ModalTitle>{title}</ModalTitle>\n <ModalDescription>{description}</ModalDescription>\n <ModalActions>\n <Button variant=\"outline\" onClick={onClose} disabled={loading}>\n {cancelLabel}\n </Button>\n <Button variant={toneButtonVariant} onClick={onConfirm} loading={loading}>\n {confirmLabel}\n </Button>\n </ModalActions>\n </Modal>\n );\n}\nConfirmDialog.displayName = \"ConfirmDialog\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n title?: string;\n description?: string;\n width?: string;\n side?: \"right\" | \"left\";\n}\n\nexport function Drawer({\n open,\n onClose,\n children,\n title,\n description,\n width = \"max-w-md\",\n side = \"right\",\n}: DrawerProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n\n React.useEffect(() => {\n if (!open) {\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n return;\n }\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n setTimeout(() => focusables[0].focus(), 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, onClose]);\n\n const sideClasses = {\n right: cn(\"right-0 h-full border-l\", open ? \"translate-x-0\" : \"translate-x-full\"),\n left: cn(\"left-0 h-full border-r\", open ? \"translate-x-0\" : \"-translate-x-full\"),\n }[side];\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] transition-opacity duration-300 backdrop-blur-[2px]\",\n \"bg-[color-mix(in_oklch,#09090b_45%,transparent)]\",\n open ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n >\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={!title ? \"Drawer\" : undefined}\n aria-labelledby={title ? \"drawer-title\" : undefined}\n aria-describedby={description ? \"drawer-description\" : undefined}\n tabIndex={-1}\n className={cn(\n \"fixed top-0 bottom-0 bg-surface border-border flex flex-col w-full shadow-kj-lg transition-transform duration-300 ease-spring outline-none\",\n width,\n sideClasses\n )}\n >\n {/* Header */}\n {(title || description) && (\n <div className=\"flex items-center justify-between p-6 border-b border-border\">\n <div className=\"space-y-1\">\n {title && (\n <h2 id=\"drawer-title\" className=\"text-lg font-bold tracking-tight text-foreground\">\n {title}\n </h2>\n )}\n {description && (\n <p id=\"drawer-description\" className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n </div>\n </div>\n );\n}\nDrawer.displayName = \"Drawer\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CommandPaletteItem {\n id: string;\n title: string;\n subtitle?: string;\n category?: string;\n shortcut?: string[];\n action: () => void;\n icon?: React.ReactNode;\n}\n\nexport interface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n items: CommandPaletteItem[];\n placeholder?: string;\n}\n\nexport function CommandPalette({\n open,\n onClose,\n items,\n placeholder = \"Type a command or search...\",\n}: CommandPaletteProps) {\n const [search, setSearch] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n // Reset state on open/close\n React.useEffect(() => {\n if (open) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSearch(\"\");\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setActiveIndex(0);\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n }, [open]);\n\n // Filter items\n const filteredItems = React.useMemo(() => {\n if (!search) return items;\n const cleanSearch = search.toLowerCase();\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(cleanSearch) ||\n item.subtitle?.toLowerCase().includes(cleanSearch) ||\n item.category?.toLowerCase().includes(cleanSearch)\n );\n }, [search, items]);\n\n // Reset active index when filter changes\n React.useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setActiveIndex(0);\n }, [filteredItems]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n if (!open) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((prev) =>\n filteredItems.length === 0 ? 0 : (prev + 1) % filteredItems.length\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((prev) =>\n filteredItems.length === 0 ? 0 : (prev - 1 + filteredItems.length) % filteredItems.length\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (filteredItems[activeIndex]) {\n filteredItems[activeIndex].action();\n onClose();\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, filteredItems, activeIndex, onClose]);\n\n // Scroll active item into view\n React.useEffect(() => {\n if (listRef.current) {\n const activeEl = listRef.current.querySelector('[aria-selected=\"true\"]') as HTMLElement;\n if (activeEl) {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }\n }, [activeIndex]);\n\n if (!open) return null;\n\n // Group filtered items by category\n const groups: { [key: string]: typeof filteredItems } = {};\n filteredItems.forEach((item) => {\n const cat = item.category || \"General\";\n if (!groups[cat]) groups[cat] = [];\n groups[cat].push(item);\n });\n\n // Flat list index calculation for grouping\n let absoluteItemIndex = 0;\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className=\"fixed inset-0 z-[100] grid place-items-start justify-center p-6 md:p-24 backdrop-blur-[3px] bg-[color-mix(in_oklch,#09090b_60%,transparent)]\"\n >\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Command palette\"\n className=\"w-[95vw] max-w-lg bg-surface border border-border rounded-kj-xl shadow-kj-lg flex flex-col overflow-hidden max-h-[500px]\"\n >\n {/* Search Input */}\n <div className=\"p-4 border-b border-border flex items-center gap-2\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-5 w-5 text-muted-foreground shrink-0 ml-1\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"\n />\n </svg>\n <input\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-autocomplete=\"list\"\n aria-controls=\"command-palette-listbox\"\n aria-activedescendant={filteredItems.length > 0 ? `cmd-item-${activeIndex}` : undefined}\n placeholder={placeholder}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 font-sans text-[0.95rem] bg-transparent text-foreground placeholder:text-muted-foreground outline-none border-none focus:ring-0\"\n autoFocus\n />\n </div>\n\n {/* Results List */}\n <div className=\"flex-1 overflow-y-auto p-2 min-h-[150px]\">\n {filteredItems.length === 0 ? (\n <div className=\"py-12 text-center text-sm text-muted-foreground\">\n No results found for \"{search}\"\n </div>\n ) : (\n <div\n ref={listRef}\n id=\"command-palette-listbox\"\n role=\"listbox\"\n aria-label=\"Commands\"\n className=\"space-y-4\"\n >\n {Object.entries(groups).map(([cat, itemsInCat]) => (\n <div\n key={cat}\n role=\"group\"\n aria-labelledby={`cmd-cat-${cat}`}\n className=\"space-y-1\"\n >\n <div\n id={`cmd-cat-${cat}`}\n className=\"px-3 py-1 text-[0.65rem] font-bold uppercase tracking-wider text-muted-foreground\"\n >\n {cat}\n </div>\n {itemsInCat.map((item) => {\n const currentIdx = absoluteItemIndex++;\n const isActive = currentIdx === activeIndex;\n return (\n <div\n key={item.id}\n id={`cmd-item-${currentIdx}`}\n role=\"option\"\n aria-selected={isActive}\n onClick={() => {\n item.action();\n onClose();\n }}\n className={cn(\n \"flex items-center justify-between gap-3 px-3 py-2.5 rounded-kj-md cursor-pointer select-none transition-colors\",\n isActive\n ? \"bg-primary/10 text-foreground\"\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\n )}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n {item.icon && (\n <span className=\"text-muted-foreground [&_svg]:h-[1.1rem] [&_svg]:w-[1.1rem]\">\n {item.icon}\n </span>\n )}\n <div className=\"min-w-0 flex flex-col\">\n <span\n className={cn(\n \"text-[0.85rem] font-semibold\",\n isActive ? \"text-primary\" : \"text-foreground\"\n )}\n >\n {item.title}\n </span>\n {item.subtitle && (\n <span className=\"text-[0.75rem] text-muted-foreground truncate\">\n {item.subtitle}\n </span>\n )}\n </div>\n </div>\n {item.shortcut && (\n <div className=\"flex items-center gap-1\">\n {item.shortcut.map((sc, scIdx) => (\n <kbd\n key={scIdx}\n className=\"px-1.5 py-0.5 rounded border border-border bg-subtle text-[10px] font-mono leading-none shadow-kj-xs text-muted-foreground\"\n >\n {sc}\n </kbd>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Footer info */}\n <div className=\"px-4 py-2.5 border-t border-border bg-subtle flex items-center justify-between text-[11px] text-muted-foreground font-medium\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex items-center gap-1\">\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">↑↓</kbd> Navigate\n </span>\n <span className=\"flex items-center gap-1\">\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">Enter</kbd>{\" \"}\n Select\n </span>\n </div>\n <div>\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">Esc</kbd> Close\n </div>\n </div>\n </div>\n </div>\n );\n}\nCommandPalette.displayName = \"CommandPalette\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SidebarNavItem {\n id: string;\n label: string;\n href?: string;\n onClick?: () => void;\n active?: boolean;\n icon?: React.ReactNode;\n badge?: React.ReactNode;\n}\n\nexport interface SidebarNavGroup {\n title?: string;\n items: SidebarNavItem[];\n}\n\nexport interface SidebarNavProps extends React.HTMLAttributes<HTMLDivElement> {\n groups: SidebarNavGroup[];\n currentHref?: string;\n}\n\nexport function SidebarNav({ className, groups, currentHref, ...props }: SidebarNavProps) {\n return (\n <div className={cn(\"space-y-6 py-4 px-3 w-full\", className)} {...props}>\n {groups.map((group, groupIdx) => (\n <div key={groupIdx} className=\"space-y-1.5\">\n {group.title && (\n <h4 className=\"px-3 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/85\">\n {group.title}\n </h4>\n )}\n <div className=\"space-y-0.5\">\n {group.items.map((item) => {\n const isActive =\n item.active || (item.href && currentHref && currentHref === item.href);\n const content = (\n <>\n <span className=\"flex items-center gap-2.5 min-w-0\">\n {item.icon && (\n <span\n className={cn(\n \"[&_svg]:h-[1.1rem] [&_svg]:w-[1.1rem] shrink-0\",\n isActive\n ? \"text-primary\"\n : \"text-muted-foreground group-hover:text-foreground\"\n )}\n >\n {item.icon}\n </span>\n )}\n <span className=\"truncate\">{item.label}</span>\n </span>\n {item.badge && (\n <span className=\"shrink-0 flex items-center justify-center\">{item.badge}</span>\n )}\n </>\n );\n\n const itemClass = cn(\n \"group flex items-center justify-between gap-3 px-3 py-2 rounded-kj-md text-[0.85rem] font-semibold select-none cursor-pointer transition-all duration-150\",\n isActive\n ? \"bg-primary/10 text-primary border-l-2 border-primary rounded-l-none pl-2.5\"\n : \"text-muted-foreground hover:bg-muted hover:text-foreground border-l-2 border-transparent\"\n );\n\n if (item.href) {\n return (\n <a key={item.id} href={item.href} className={itemClass}>\n {content}\n </a>\n );\n }\n\n return (\n <button key={item.id} type=\"button\" onClick={item.onClick} className={itemClass}>\n {content}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\nSidebarNav.displayName = \"SidebarNav\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst fabVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap select-none\",\n \"font-sans font-semibold leading-none\",\n \"border border-transparent rounded-full cursor-pointer shadow-lg\",\n \"transition-[background-color,color,border-color,box-shadow,transform] duration-150\",\n \"active:translate-y-px active:shadow-md\",\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-primary-foreground hover:bg-primary-hover\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n outline:\n \"bg-transparent text-foreground border-border hover:bg-muted hover:border-muted-foreground\",\n danger: \"bg-danger text-white hover:brightness-95\",\n },\n size: {\n sm: \"h-10 w-10 p-0 text-sm\",\n md: \"h-14 w-14 p-0 text-base\",\n lg: \"h-16 w-16 p-0 text-lg\",\n },\n position: {\n \"bottom-right\": \"fixed bottom-6 right-6 z-50\",\n \"bottom-left\": \"fixed bottom-6 left-6 z-50\",\n \"bottom-center\": \"fixed bottom-6 left-1/2 -translate-x-1/2 z-50\",\n none: \"relative\",\n },\n },\n defaultVariants: { variant: \"primary\", size: \"md\", position: \"bottom-right\" },\n }\n);\n\nexport interface FabProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof fabVariants> {\n /** Icon rendered inside the button. */\n icon: React.ReactNode;\n\n /** Text label for accessibility (aria-label). */\n label: string;\n\n /** If true, the FAB will only be visible on mobile screens (< 768px). */\n mobileOnly?: boolean;\n\n /** Shows a spinner and disables interaction. */\n loading?: boolean;\n}\n\nexport const Fab = React.forwardRef<HTMLButtonElement, FabProps>(\n (\n { className, variant, size, position, mobileOnly, icon, label, loading, disabled, ...props },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(\n fabVariants({ variant, size, position }),\n mobileOnly && \"md:hidden\",\n className\n )}\n {...props}\n disabled={disabled || loading}\n aria-label={label}\n aria-busy={loading || undefined}\n >\n {loading ? (\n <span\n aria-hidden\n className=\"h-[1.2em] w-[1.2em] rounded-full border-2 border-current border-t-transparent animate-spin\"\n />\n ) : (\n <span className=\"[&_svg]:h-[1.35em] [&_svg]:w-[1.35em] flex items-center justify-center\">\n {icon}\n </span>\n )}\n </button>\n );\n }\n);\nFab.displayName = \"Fab\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface BottomSheetProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n maxWidth?: \"max-w-sm\" | \"max-w-md\" | \"max-w-lg\" | \"max-w-xl\" | \"max-w-2xl\";\n className?: string;\n showClose?: boolean;\n}\n\nconst BottomSheetContext = React.createContext<{ titleId: string; descId: string } | null>(null);\n\nexport function BottomSheet({\n open,\n onClose,\n children,\n maxWidth = \"max-w-lg\",\n className,\n showClose = true,\n}: BottomSheetProps) {\n const titleId = React.useId();\n const descId = React.useId();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n const [mounted, setMounted] = React.useState(open);\n\n React.useEffect(() => {\n if (open) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setMounted(true);\n } else {\n const timer = setTimeout(() => setMounted(false), 200);\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open) return;\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n focusables[0].focus();\n setTimeout(() => {\n if (container.contains(document.activeElement)) return;\n focusables[0].focus();\n }, 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (!container.contains(document.activeElement)) {\n e.preventDefault();\n if (e.shiftKey) {\n last.focus();\n } else {\n first.focus();\n }\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n };\n }, [open, onClose]);\n\n if (!open && !mounted) return null;\n\n return (\n <BottomSheetContext.Provider value={{ titleId, descId }}>\n {/* Backdrop overlay */}\n <div\n role=\"presentation\"\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] grid items-end sm:place-items-center p-0 sm:p-6 backdrop-blur-[3px] transition-all duration-200\",\n \"bg-[color-mix(in_oklch,#09090b_55%,transparent)]\",\n open\n ? \"opacity-100 pointer-events-auto visible\"\n : \"opacity-0 pointer-events-none invisible\"\n )}\n >\n {/* Panel wrapper */}\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n tabIndex={-1}\n className={cn(\n \"relative w-full bg-surface border-t sm:border border-border shadow-kj-lg transition-all duration-200 outline-none\",\n \"rounded-t-kj-2xl sm:rounded-kj-2xl flex flex-col max-h-[85vh] sm:max-h-[90vh]\",\n // Mobile sliding & Desktop scale/opacity transitions\n open\n ? \"translate-y-0 sm:scale-100 sm:opacity-100\"\n : \"translate-y-full sm:scale-95 sm:opacity-0\",\n // Mobile styling vs Desktop styling\n \"bottom-0 sm:bottom-auto\",\n maxWidth,\n className\n )}\n >\n {/* Mobile Drag Handle */}\n <div className=\"flex justify-center py-2 sm:hidden cursor-grab\">\n <div className=\"w-12 h-1.5 rounded-full bg-muted-foreground/20\" />\n </div>\n\n {/* Close button (rendered on top right for desktop modal look) */}\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"absolute top-4 right-4 p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer z-10\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n\n {children}\n </div>\n </div>\n </BottomSheetContext.Provider>\n );\n}\n\nexport function BottomSheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"p-6 flex flex-col gap-1.5 border-b border-border\", className)} {...props} />\n );\n}\n\nexport function BottomSheetTitle({\n className,\n id,\n children,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement>) {\n const ctx = React.useContext(BottomSheetContext);\n return (\n <h2\n id={id ?? ctx?.titleId}\n className={cn(\"m-0 text-[1.15rem] font-bold tracking-[-0.01em]\", className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function BottomSheetDescription({\n className,\n id,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n const ctx = React.useContext(BottomSheetContext);\n return (\n <p\n id={id ?? ctx?.descId}\n className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function BottomSheetContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"p-6 overflow-y-auto flex-1\", className)} {...props} />;\n}\n\nexport function BottomSheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"p-6 border-t border-border flex gap-2.5 justify-end mt-auto\", className)}\n {...props}\n />\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst kbdVariants = cva(\n \"inline-flex items-center justify-center font-mono font-medium text-muted-foreground bg-muted border border-border border-b-2 rounded-kj-sm select-none\",\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 px-1 text-[0.68rem]\",\n md: \"h-6 min-w-6 px-1.5 text-[0.78rem]\",\n },\n },\n defaultVariants: { size: \"sm\" },\n }\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof kbdVariants> {\n /** Render one <kbd> chip per key (separated by a small gap); children are ignored. */\n keys?: string[];\n}\n\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, keys, children, ...props }, ref) => {\n if (keys && keys.length > 0) {\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n >\n {keys.map((k, i) => (\n <kbd key={i} className={kbdVariants({ size })}>\n {k}\n </kbd>\n ))}\n </span>\n );\n }\n return (\n <kbd ref={ref} className={cn(kbdVariants({ size }), className)} {...props}>\n {children}\n </kbd>\n );\n }\n);\nKbd.displayName = \"Kbd\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The snippet text to display. */\n code: string;\n /** Language label shown in the header when no filename is set (e.g. \"tsx\"). */\n language?: string;\n /** Optional filename label shown in the header; takes precedence over language. */\n filename?: string;\n /** Show the copy-to-clipboard button. */\n copyable?: boolean;\n /** Max height in pixels; content scrolls vertically beyond it. */\n maxHeight?: number;\n}\n\nexport const CodeBlock = React.forwardRef<HTMLDivElement, CodeBlockProps>(\n ({ className, code, language, filename, copyable = true, maxHeight, ...props }, ref) => {\n const [copied, setCopied] = React.useState(false);\n const canCopy = copyable && typeof navigator !== \"undefined\" && !!navigator.clipboard;\n\n const onCopy = () => {\n navigator.clipboard.writeText(code).then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1500);\n },\n () => {\n /* clipboard rejected — keep \"Copy\" label */\n }\n );\n };\n\n const label = filename ?? language;\n\n return (\n <div\n ref={ref}\n className={cn(\"rounded-kj-md border border-border bg-muted/50 overflow-hidden\", className)}\n {...props}\n >\n {(label || canCopy) && (\n <div className=\"flex items-center justify-between gap-2 px-3.5 py-2 border-b border-border\">\n <span className=\"text-[0.72rem] font-mono text-muted-foreground\">{label}</span>\n {canCopy && (\n <button\n type=\"button\"\n onClick={onCopy}\n className=\"text-[0.72rem] font-medium text-muted-foreground hover:text-foreground transition-colors cursor-pointer bg-transparent border-0 p-0\"\n >\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n )}\n </div>\n )}\n <pre\n className=\"m-0 px-3.5 py-3 overflow-x-auto text-[0.8rem] leading-relaxed font-mono text-foreground\"\n style={maxHeight ? { maxHeight, overflowY: \"auto\" } : undefined}\n >\n <code>{code}</code>\n </pre>\n </div>\n );\n }\n);\nCodeBlock.displayName = \"CodeBlock\";\n","import { cn } from \"../lib/cn\";\n\nexport interface SeparatorProps {\n orientation?: \"horizontal\" | \"vertical\";\n /** Purely visual by default (role=\"none\", hidden from a11y tree). Set false for a semantically meaningful divider. */\n decorative?: boolean;\n className?: string;\n}\n\n/** Thin layout divider. Decorative by default; pass decorative={false} for a semantic role=\"separator\". */\nexport function Separator({\n orientation = \"horizontal\",\n decorative = true,\n className,\n}: SeparatorProps) {\n const semanticProps = decorative\n ? { role: \"none\" as const, \"aria-hidden\": true as const }\n : { role: \"separator\" as const, \"aria-orientation\": orientation };\n\n return (\n <div\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"w-px h-full\",\n className\n )}\n {...semanticProps}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface PopoverCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\nconst PopoverContext = React.createContext<PopoverCtx | null>(null);\n\nfunction usePopoverContext(part: string): PopoverCtx {\n const ctx = React.useContext(PopoverContext);\n if (!ctx) throw new Error(`${part} must be used inside <Popover>`);\n return ctx;\n}\n\nexport interface PopoverProps {\n /** Trigger and content elements. */\n children: React.ReactNode;\n /** Additional classes for the positioning wrapper. */\n className?: string;\n /** Controlled open state. Omit for uncontrolled behavior. */\n open?: boolean;\n /** Called whenever the open state should change. */\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Popover({ children, className, open: openProp, onOpenChange }: PopoverProps) {\n const [openState, setOpenState] = React.useState(false);\n const controlled = openProp !== undefined;\n const open = controlled ? openProp : openState;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const ref = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (v: boolean) => {\n if (!controlled) setOpenState(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open, setOpen]);\n\n return (\n <PopoverContext.Provider value={{ open, setOpen, triggerRef }}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </PopoverContext.Provider>\n );\n}\n\nexport const PopoverTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { asChild?: boolean }\n>(({ onClick, asChild, ...props }, ref) => {\n const ctx = usePopoverContext(\"PopoverTrigger\");\n const setRefs = (node: HTMLButtonElement | null) => {\n // eslint-disable-next-line react-hooks/immutability\n ctx.triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n if (asChild) {\n const child = React.Children.only(props.children) as React.ReactElement<\n React.ComponentPropsWithRef<\"button\">\n >;\n return React.cloneElement(child, {\n ref: setRefs,\n ...props,\n ...child.props,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n child.props.onClick?.(e);\n },\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": ctx.open,\n });\n }\n return (\n <button\n /* eslint-disable-next-line react-hooks/immutability */\n ref={setRefs}\n {...props}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n />\n );\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nconst sideAlignClasses: Record<string, string> = {\n \"bottom-start\": \"top-[calc(100%+6px)] left-0\",\n \"bottom-center\": \"top-[calc(100%+6px)] left-1/2 -translate-x-1/2\",\n \"bottom-end\": \"top-[calc(100%+6px)] right-0\",\n \"top-start\": \"bottom-[calc(100%+6px)] left-0\",\n \"top-center\": \"bottom-[calc(100%+6px)] left-1/2 -translate-x-1/2\",\n \"top-end\": \"bottom-[calc(100%+6px)] right-0\",\n \"left-start\": \"right-[calc(100%+6px)] top-0\",\n \"left-center\": \"right-[calc(100%+6px)] top-1/2 -translate-y-1/2\",\n \"left-end\": \"right-[calc(100%+6px)] bottom-0\",\n \"right-start\": \"left-[calc(100%+6px)] top-0\",\n \"right-center\": \"left-[calc(100%+6px)] top-1/2 -translate-y-1/2\",\n \"right-end\": \"left-[calc(100%+6px)] bottom-0\",\n};\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which side of the trigger the panel opens on. */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Alignment along the chosen side. */\n align?: \"start\" | \"center\" | \"end\";\n}\n\nexport function PopoverContent({\n className,\n side = \"bottom\",\n align = \"center\",\n children,\n ...props\n}: PopoverContentProps) {\n const ctx = usePopoverContext(\"PopoverContent\");\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ctx.open) ref.current?.focus();\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n return (\n <div\n ref={ref}\n role=\"dialog\"\n tabIndex={-1}\n className={cn(\n \"absolute z-40 min-w-[200px] p-4 rounded-kj-md bg-surface border border-border shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n sideAlignClasses[`${side}-${align}`],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface ComboboxBaseProps {\n options: ComboboxOption[];\n /** Trigger text when nothing is selected. Default \"Select…\". */\n placeholder?: string;\n /** Search input placeholder inside the popup. Default \"Search…\". */\n searchPlaceholder?: string;\n /** Shown when the filter matches no options. Default \"No results\". */\n emptyMessage?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nexport type ComboboxProps =\n | (ComboboxBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n })\n | (ComboboxBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n });\n\n// Internal selection is always an array; single mode holds at most one entry.\nfunction toArray(v: string | string[] | undefined): string[] {\n if (v == null) return [];\n return Array.isArray(v) ? v : [v];\n}\n\nexport const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(\n function Combobox(props, ref) {\n const {\n options,\n placeholder = \"Select…\",\n searchPlaceholder = \"Search…\",\n emptyMessage = \"No results\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n } = props;\n const multiple = props.multiple ?? false;\n\n const reactId = React.useId();\n const baseId = id ?? reactId;\n const listId = `${baseId}-listbox`;\n const optionId = (i: number) => `${baseId}-opt-${i}`;\n\n const controlled = props.value !== undefined;\n const [internal, setInternal] = React.useState<string[]>(() => toArray(props.defaultValue));\n const selected = controlled ? toArray(props.value) : internal;\n\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const filtered = React.useMemo(() => {\n const q = search.trim().toLowerCase();\n return q ? options.filter((o) => o.label.toLowerCase().includes(q)) : options;\n }, [search, options]);\n\n const firstEnabled = React.useCallback(() => {\n const i = filtered.findIndex((o) => !o.disabled);\n return i === -1 ? 0 : i;\n }, [filtered]);\n\n const labelFor = (v: string) => options.find((o) => o.value === v)?.label ?? v;\n\n const emit = (next: string[]) => {\n if (!controlled) setInternal(next);\n if (props.multiple) {\n props.onChange?.(next);\n } else {\n props.onChange?.(next[0] ?? \"\");\n }\n };\n\n const closePopup = React.useCallback(() => {\n setOpen(false);\n setSearch(\"\");\n }, []);\n\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleSelect = (opt: ComboboxOption) => {\n if (opt.disabled) return;\n if (multiple) {\n const next = selected.includes(opt.value)\n ? selected.filter((v) => v !== opt.value)\n : [...selected, opt.value];\n emit(next);\n inputRef.current?.focus();\n } else {\n emit([opt.value]);\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const removeValue = (value: string) => {\n emit(selected.filter((v) => v !== value));\n };\n\n // Reset the active option to the first enabled row on open / filter change.\n React.useEffect(() => {\n if (open) setActiveIndex(firstEnabled());\n }, [open, firstEnabled]);\n\n // Autofocus the search input when the popup opens.\n React.useEffect(() => {\n if (open) inputRef.current?.focus();\n }, [open]);\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n // Keep the active option scrolled into view.\n React.useEffect(() => {\n const el = listRef.current?.querySelector('[data-active=\"true\"]') as HTMLElement | null;\n el?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex]);\n\n const moveActive = (dir: 1 | -1) => {\n if (filtered.length === 0) return;\n setActiveIndex((prev) => {\n let i = prev;\n for (let step = 0; step < filtered.length; step++) {\n i = (i + dir + filtered.length) % filtered.length;\n if (!filtered[i]?.disabled) return i;\n }\n return prev;\n });\n };\n\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n setActiveIndex(firstEnabled());\n break;\n case \"End\":\n e.preventDefault();\n for (let i = filtered.length - 1; i >= 0; i--) {\n if (!filtered[i].disabled) {\n setActiveIndex(i);\n break;\n }\n }\n break;\n case \"Enter\":\n e.preventDefault();\n if (filtered[activeIndex]) handleSelect(filtered[activeIndex]);\n break;\n case \"Escape\":\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n break;\n case \"Backspace\":\n if (multiple && search === \"\" && selected.length > 0) {\n removeValue(selected[selected.length - 1]);\n }\n break;\n }\n };\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n }\n };\n\n const showPlaceholder = multiple ? selected.length === 0 : !selected[0];\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"relative flex w-full items-center gap-1.5 flex-wrap border rounded-kj-md bg-surface\",\n \"pl-[0.85rem] pr-9 py-[calc(0.45rem*var(--kj-density,1))] min-h-[calc(2.5rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus-within:outline-none focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/30\",\n disabled && \"bg-muted cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\"\n )}\n >\n {multiple &&\n selected.map((value) => (\n <span\n key={value}\n className=\"inline-flex items-center gap-1 rounded-kj-sm bg-primary/10 text-primary text-xs font-medium pl-2 pr-1 py-0.5\"\n >\n {labelFor(value)}\n <button\n type=\"button\"\n aria-label={`Remove ${labelFor(value)}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n removeValue(value);\n }}\n className=\"rounded-full p-0.5 leading-none hover:bg-primary/20\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-3 w-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </button>\n </span>\n ))}\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open && filtered.length > 0 ? listId : undefined}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"flex-1 min-w-[60px] text-left bg-transparent border-none outline-none cursor-pointer text-sm disabled:cursor-not-allowed\",\n showPlaceholder && \"text-muted-foreground\"\n )}\n >\n {multiple\n ? selected.length === 0\n ? placeholder\n : \"\"\n : (selected[0] ? labelFor(selected[0]) : \"\") || placeholder}\n </button>\n {name &&\n multiple &&\n selected.map((v) => <input key={v} type=\"hidden\" name={name} value={v} />)}\n {name && !multiple && <input type=\"hidden\" name={name} value={selected[0] ?? \"\"} />}\n <span className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </div>\n\n {open && (\n <div className=\"absolute z-40 top-[calc(100%+6px)] left-0 w-full min-w-[12rem] bg-surface border border-border rounded-kj-md shadow-kj-lg overflow-hidden animate-[kjpop_.12s_ease]\">\n <div className=\"p-2 border-b border-border\">\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={open}\n aria-controls={filtered.length > 0 ? listId : undefined}\n aria-activedescendant={filtered[activeIndex] ? optionId(activeIndex) : undefined}\n aria-label={searchPlaceholder}\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onKeyDown={onInputKeyDown}\n className=\"w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none px-2 py-1\"\n />\n </div>\n {filtered.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">{emptyMessage}</div>\n ) : (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={placeholder}\n className=\"max-h-60 overflow-y-auto p-1\"\n >\n {filtered.map((opt, i) => {\n const isSelected = selected.includes(opt.value);\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n id={optionId(i)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={isActive || undefined}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n onClick={() => handleSelect(opt)}\n className={cn(\n \"flex items-center justify-between gap-2 px-3 py-2 rounded-kj-sm text-sm cursor-pointer select-none\",\n opt.disabled && \"text-muted-foreground opacity-50 cursor-not-allowed\",\n !opt.disabled && isActive && \"bg-primary/10 text-primary\",\n !opt.disabled && !isActive && \"text-foreground hover:bg-muted\"\n )}\n >\n <span>{opt.label}</span>\n {isSelected && (\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-primary shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m5 12 5 5L20 7\" />\n </svg>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nCombobox.displayName = \"Combobox\";\n\n// Distributive omit preserves the discriminated union (plain Omit<Union, K>\n// collapses it to the shared keys and drops the `multiple` narrowing).\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\nexport type ComboboxFieldProps = DistributiveOmit<ComboboxProps, \"error\"> & {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n};\n\nimport { FormField } from \"./form-field\";\n\nexport const ComboboxField = React.forwardRef<HTMLButtonElement, ComboboxFieldProps>(\n function ComboboxField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Combobox ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nComboboxField.displayName = \"ComboboxField\";\n","export function startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function addDays(d: Date, n: number): Date {\n const r = new Date(d);\n r.setDate(r.getDate() + n);\n return r;\n}\n\nexport function addMonths(d: Date, n: number): Date {\n const r = new Date(d);\n r.setMonth(r.getMonth() + n);\n return r;\n}\n\n// setMonth/setFullYear roll over into the next month when the target month is\n// shorter than the current day-of-month (e.g. Jan 31 + 1 month -> Mar 3, not\n// Feb 28). Clamp the day to the target month's actual length to avoid that.\nfunction clampToMonth(year: number, month: number, day: number): Date {\n const daysInTarget = new Date(year, month + 1, 0).getDate();\n return new Date(year, month, Math.min(day, daysInTarget));\n}\n\nexport function addMonthsClamped(d: Date, n: number): Date {\n return clampToMonth(d.getFullYear(), d.getMonth() + n, d.getDate());\n}\n\nexport function addYearsClamped(d: Date, n: number): Date {\n return clampToMonth(d.getFullYear() + n, d.getMonth(), d.getDate());\n}\n\nexport function startOfMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1);\n}\n\nexport function startOfWeek(d: Date): Date {\n const r = startOfDay(d);\n r.setDate(r.getDate() - r.getDay());\n return r;\n}\n\nexport function buildGridDays(viewMonth: Date): Date[] {\n const gridStart = startOfWeek(startOfMonth(viewMonth));\n return Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n}\n\nexport function dateKey(d: Date): string {\n return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n}\n\n// Local YYYY-MM-DD, not Date#toISOString() — that converts to UTC first and\n// can shift the calendar date across a timezone boundary.\nexport function toISODateString(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${day}`;\n}\n\nexport const monthLabelFormat = new Intl.DateTimeFormat(undefined, {\n month: \"long\",\n year: \"numeric\",\n});\nexport const fullDateFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"full\" });\nconst weekdayShortFormat = new Intl.DateTimeFormat(undefined, { weekday: \"short\" });\nconst weekdayLongFormat = new Intl.DateTimeFormat(undefined, { weekday: \"long\" });\n\nexport const weekdayLabels = Array.from({ length: 7 }, (_, i) => {\n const d = addDays(startOfWeek(new Date()), i);\n return { key: i, short: weekdayShortFormat.format(d), long: weekdayLongFormat.format(d) };\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport {\n startOfDay,\n isSameDay,\n addDays,\n startOfWeek,\n buildGridDays,\n dateKey,\n addMonthsClamped,\n addYearsClamped,\n fullDateFormat,\n monthLabelFormat,\n weekdayLabels,\n} from \"./calendar-internals\";\n\nexport interface CalendarCellState {\n selected?: boolean;\n rangeStart?: boolean;\n rangeEnd?: boolean;\n inRange?: boolean;\n today?: boolean;\n}\n\nexport interface CalendarGridProps {\n viewMonth: Date;\n isDayDisabled: (d: Date) => boolean;\n cellState: (d: Date) => CalendarCellState;\n onSelectDay: (d: Date) => void;\n /** Fired on hover and on keyboard focus-move within this grid (not on click). */\n onFocusDay?: (d: Date) => void;\n /** Seeds the roving-tabindex focus once, on mount. Not re-synced on later prop changes (matches Calendar's existing behavior). */\n initialFocusDate: Date;\n className?: string;\n}\n\nexport const CalendarGrid = React.forwardRef<HTMLDivElement, CalendarGridProps>(\n function CalendarGrid(\n { viewMonth, isDayDisabled, cellState, onSelectDay, onFocusDay, initialFocusDate, className },\n ref\n ) {\n const gridDays = React.useMemo(() => buildGridDays(viewMonth), [viewMonth]);\n const inViewMonth = (d: Date) =>\n d.getMonth() === viewMonth.getMonth() && d.getFullYear() === viewMonth.getFullYear();\n\n const [focusedDate, setFocusedDate] = React.useState<Date>(() => startOfDay(initialFocusDate));\n const pendingFocusRef = React.useRef(false);\n const gridRef = React.useRef<HTMLDivElement>(null);\n\n const rovingTarget =\n inViewMonth(focusedDate) && !isDayDisabled(focusedDate)\n ? focusedDate\n : (gridDays.find((d) => inViewMonth(d) && !isDayDisabled(d)) ??\n gridDays.find((d) => inViewMonth(d)) ??\n gridDays[0]);\n\n const moveFocusTo = (next: Date, viaKeyboard: boolean) => {\n pendingFocusRef.current = viaKeyboard;\n setFocusedDate(next);\n onFocusDay?.(next);\n };\n\n React.useEffect(() => {\n if (!pendingFocusRef.current) return;\n pendingFocusRef.current = false;\n const el = gridRef.current?.querySelector(\n `[data-date=\"${dateKey(rovingTarget)}\"]`\n ) as HTMLElement | null;\n el?.focus();\n }, [rovingTarget]);\n\n const step = (from: Date, delta: number): Date => {\n let next = addDays(from, delta);\n let guard = 0;\n while (isDayDisabled(next) && guard < 1000) {\n next = addDays(next, delta);\n guard++;\n }\n return isDayDisabled(next) ? from : next;\n };\n\n const selectDay = (d: Date) => {\n if (isDayDisabled(d)) return;\n moveFocusTo(d, false);\n onSelectDay(d);\n };\n\n const onGridKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, 1), true);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, -1), true);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, 7), true);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, -7), true);\n break;\n case \"Home\": {\n e.preventDefault();\n const target = startOfWeek(rovingTarget);\n moveFocusTo(isDayDisabled(target) ? step(target, 1) : target, true);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const target = addDays(startOfWeek(rovingTarget), 6);\n moveFocusTo(isDayDisabled(target) ? step(target, -1) : target, true);\n break;\n }\n case \"PageUp\": {\n e.preventDefault();\n const target = e.shiftKey\n ? addYearsClamped(rovingTarget, -1)\n : addMonthsClamped(rovingTarget, -1);\n moveFocusTo(isDayDisabled(target) ? step(target, -1) : target, true);\n break;\n }\n case \"PageDown\": {\n e.preventDefault();\n const target = e.shiftKey\n ? addYearsClamped(rovingTarget, 1)\n : addMonthsClamped(rovingTarget, 1);\n moveFocusTo(isDayDisabled(target) ? step(target, 1) : target, true);\n break;\n }\n case \"Enter\":\n case \" \":\n e.preventDefault();\n selectDay(rovingTarget);\n break;\n }\n };\n\n return (\n <div ref={ref} className={cn(className)}>\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={monthLabelFormat.format(viewMonth)}\n onKeyDown={onGridKeyDown}\n >\n <div role=\"row\" className=\"grid grid-cols-7\">\n {weekdayLabels.map((w) => (\n <div\n key={w.key}\n role=\"columnheader\"\n aria-label={w.long}\n className=\"h-8 flex items-center justify-center text-xs font-medium text-muted-foreground\"\n >\n {w.short}\n </div>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, week) => (\n <div role=\"row\" key={week} className=\"grid grid-cols-7\">\n {gridDays.slice(week * 7, week * 7 + 7).map((day) => {\n if (!inViewMonth(day)) {\n return (\n <div key={dateKey(day)} role=\"gridcell\" aria-hidden=\"true\" className=\"h-9\" />\n );\n }\n const disabled = isDayDisabled(day);\n const state = cellState(day);\n const isRoving = isSameDay(day, rovingTarget);\n const isEndpoint = !!(state.selected || state.rangeStart || state.rangeEnd);\n return (\n <button\n key={dateKey(day)}\n type=\"button\"\n role=\"gridcell\"\n data-date={dateKey(day)}\n tabIndex={isRoving ? 0 : -1}\n aria-selected={isEndpoint}\n aria-disabled={disabled || undefined}\n aria-label={fullDateFormat.format(day)}\n onMouseEnter={() => onFocusDay?.(day)}\n onClick={() => selectDay(day)}\n className={cn(\n \"h-9 w-9 mx-auto flex items-center justify-center text-sm\",\n state.inRange && !isEndpoint ? \"rounded-none\" : \"rounded-full\",\n \"focus:outline-none focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"text-muted-foreground opacity-40 cursor-not-allowed\",\n !disabled && isEndpoint && \"bg-primary text-primary-foreground\",\n !disabled && state.inRange && !isEndpoint && \"bg-primary/15 text-foreground\",\n !disabled &&\n !isEndpoint &&\n !state.inRange &&\n state.today &&\n \"ring-1 ring-primary text-primary font-medium\",\n !disabled &&\n !isEndpoint &&\n !state.inRange &&\n !state.today &&\n \"text-foreground hover:bg-muted\"\n )}\n >\n {day.getDate()}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\nCalendarGrid.displayName = \"CalendarGrid\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { CalendarGrid, type CalendarCellState } from \"./calendar-grid\";\nimport {\n isSameDay,\n addMonths,\n startOfMonth,\n startOfDay,\n monthLabelFormat,\n} from \"./calendar-internals\";\n\nexport interface CalendarProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n /** Controlled displayed month. Omit for uncontrolled behavior. */\n month?: Date;\n /** Initial displayed month when uncontrolled. Defaults to `value` ?? today. */\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n className?: string;\n}\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(\n {\n value,\n defaultValue,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n className,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(defaultValue);\n const selected = controlled ? value : internalValue;\n\n const monthControlled = month !== undefined;\n const [internalMonth, setInternalMonth] = React.useState<Date>(() =>\n startOfMonth(month ?? defaultMonth ?? selected ?? new Date())\n );\n const viewMonth = monthControlled ? startOfMonth(month as Date) : internalMonth;\n\n const setViewMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (!monthControlled) setInternalMonth(normalized);\n onMonthChange?.(normalized);\n };\n\n const isDayDisabled = React.useCallback(\n (d: Date) => {\n if (min && d < startOfDay(min)) return true;\n if (max && d > startOfDay(max)) return true;\n return disabledDates?.(d) ?? false;\n },\n [min, max, disabledDates]\n );\n\n const commitValue = (d: Date) => {\n if (!controlled) setInternalValue(d);\n onChange?.(d);\n };\n\n const today = new Date();\n const cellState = (d: Date): CalendarCellState => ({\n selected: selected ? isSameDay(d, selected) : false,\n today: isSameDay(d, today),\n });\n\n const inViewMonth = (d: Date) =>\n d.getMonth() === viewMonth.getMonth() && d.getFullYear() === viewMonth.getFullYear();\n\n // CalendarGrid owns roving focus internally and only reports where it moved.\n // When a keyboard move (PageUp/PageDown/Shift+PageUp/PageDown, or Arrow keys\n // near a month boundary) lands outside the currently displayed month, this\n // is what advances the header/grid to follow it — mirrors the pre-refactor\n // Calendar's own `moveFocusTo`, which called `setViewMonth` directly.\n const handleFocusDay = (d: Date) => {\n if (!inViewMonth(d)) setViewMonth(d);\n };\n\n return (\n <div ref={ref} className={cn(\"w-[280px] select-none\", className)}>\n <div className=\"flex items-center justify-between mb-2\">\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n onClick={() => setViewMonth(addMonths(viewMonth, -1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(viewMonth)}\n </span>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n onClick={() => setViewMonth(addMonths(viewMonth, 1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n </div>\n <CalendarGrid\n viewMonth={viewMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={commitValue}\n onFocusDay={handleFocusDay}\n initialFocusDate={selected ?? new Date()}\n />\n </div>\n );\n});\nCalendar.displayName = \"Calendar\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Calendar } from \"./calendar\";\nimport { toISODateString } from \"./calendar-internals\";\n\nexport interface DatePickerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Trigger text when nothing is selected. Default \"Pick a date…\". */\n placeholder?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nconst displayFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" });\n\nexport const DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDates,\n placeholder = \"Pick a date…\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(defaultValue);\n const selected = controlled ? value : internalValue;\n\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const commitValue = (d: Date) => {\n if (!controlled) setInternalValue(d);\n onChange?.(d);\n };\n\n const closePopup = React.useCallback(() => setOpen(false), []);\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleCalendarChange = (d: Date) => {\n commitValue(d);\n closePopup();\n triggerRef.current?.focus();\n };\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n } else if (e.key === \"Escape\" && open) {\n // The panel is a DOM sibling of the trigger, not a descendant, and\n // the Calendar deliberately doesn't auto-focus into the grid on\n // open. So while focus remains on the trigger, a real Escape\n // keydown never bubbles into the panel's onKeyDown handler — it\n // must be handled here instead. Focus is already on the trigger,\n // so no refocus is needed.\n e.preventDefault();\n closePopup();\n }\n };\n\n const onPanelKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative inline-block w-full\", className)}>\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"grid\"\n aria-expanded={open}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"w-full flex items-center justify-between gap-2 border rounded-kj-md bg-surface text-left text-sm\",\n \"pl-[0.85rem] pr-3 py-[calc(0.6rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"bg-muted text-muted-foreground cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n !selected && \"text-muted-foreground\"\n )}\n >\n <span>{selected ? displayFormat.format(selected) : placeholder}</span>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-muted-foreground shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 10h18M8 2v4M16 2v4\" />\n </svg>\n </button>\n {name && (\n <input type=\"hidden\" name={name} value={selected ? toISODateString(selected) : \"\"} />\n )}\n\n {open && (\n <div\n onKeyDown={onPanelKeyDown}\n className=\"absolute z-40 top-[calc(100%+6px)] left-0 bg-surface border border-border rounded-kj-md shadow-kj-lg p-3 animate-[kjpop_.12s_ease]\"\n >\n <Calendar\n value={selected}\n onChange={handleCalendarChange}\n min={min}\n max={max}\n disabledDates={disabledDates}\n />\n </div>\n )}\n </div>\n );\n});\nDatePicker.displayName = \"DatePicker\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface DatePickerFieldProps extends Omit<DatePickerProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const DatePickerField = React.forwardRef<HTMLButtonElement, DatePickerFieldProps>(\n function DatePickerField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <DatePicker ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nDatePickerField.displayName = \"DatePickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { CalendarGrid, type CalendarCellState } from \"./calendar-grid\";\nimport {\n startOfDay,\n isSameDay,\n addMonths,\n startOfMonth,\n monthLabelFormat,\n} from \"./calendar-internals\";\n\nexport interface DateRange {\n start?: Date;\n end?: Date;\n}\n\nexport interface RangeCalendarProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n /** Controlled left-month. The right month is always this + 1 (locked navigation). */\n month?: Date;\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Force rendering 1 month instead of 2 side-by-side. */\n singleMonth?: boolean;\n className?: string;\n}\n\nfunction isBetweenExclusive(d: Date, lo: Date, hi: Date): boolean {\n const t = startOfDay(d).getTime();\n return t > startOfDay(lo).getTime() && t < startOfDay(hi).getTime();\n}\n\nexport const RangeCalendar = React.forwardRef<HTMLDivElement, RangeCalendarProps>(\n function RangeCalendar(\n {\n value,\n defaultValue,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n singleMonth,\n className,\n },\n ref\n ) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<DateRange>(defaultValue ?? {});\n const range = controlled ? (value as DateRange) : internalValue;\n\n const monthControlled = month !== undefined;\n const [internalMonth, setInternalMonth] = React.useState<Date>(() =>\n startOfMonth(month ?? defaultMonth ?? range.start ?? new Date())\n );\n const leftMonth = monthControlled ? startOfMonth(month as Date) : internalMonth;\n const rightMonth = addMonths(leftMonth, 1);\n\n const setViewMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (!monthControlled) setInternalMonth(normalized);\n onMonthChange?.(normalized);\n };\n\n const isDayDisabled = React.useCallback(\n (d: Date) => {\n if (min && d < startOfDay(min)) return true;\n if (max && d > startOfDay(max)) return true;\n return disabledDates?.(d) ?? false;\n },\n [min, max, disabledDates]\n );\n\n // Purely internal — never part of the controlled/uncontrolled `value`. Tracks\n // an in-progress pick (start clicked, end not yet chosen) so onChange fires\n // exactly once, only when a full range completes.\n const [pendingStart, setPendingStart] = React.useState<Date | undefined>(undefined);\n const [hoverDate, setHoverDate] = React.useState<Date | undefined>(undefined);\n\n const commitRange = (next: DateRange) => {\n if (!controlled) setInternalValue(next);\n onChange?.(next);\n };\n\n const handleSelectDay = (d: Date) => {\n const day = startOfDay(d);\n if (pendingStart === undefined) {\n setPendingStart(day);\n setHoverDate(undefined);\n return;\n }\n if (day < startOfDay(pendingStart)) {\n setPendingStart(day);\n setHoverDate(undefined);\n return;\n }\n commitRange({ start: pendingStart, end: day });\n setPendingStart(undefined);\n setHoverDate(undefined);\n };\n\n const today = new Date();\n const previewEnd = pendingStart !== undefined ? hoverDate : undefined;\n\n const cellState = (d: Date): CalendarCellState => {\n const isToday = isSameDay(d, today);\n if (pendingStart !== undefined) {\n if (previewEnd === undefined) {\n return { rangeStart: isSameDay(d, pendingStart), today: isToday };\n }\n if (startOfDay(previewEnd) < startOfDay(pendingStart)) {\n return { rangeStart: isSameDay(d, previewEnd), today: isToday };\n }\n return {\n rangeStart: isSameDay(d, pendingStart),\n rangeEnd: isSameDay(d, previewEnd),\n inRange: isBetweenExclusive(d, pendingStart, previewEnd),\n today: isToday,\n };\n }\n if (range.start && range.end) {\n return {\n rangeStart: isSameDay(d, range.start),\n rangeEnd: isSameDay(d, range.end),\n inRange: isBetweenExclusive(d, range.start, range.end),\n today: isToday,\n };\n }\n return { rangeStart: range.start ? isSameDay(d, range.start) : false, today: isToday };\n };\n\n const inLockedRange = (d: Date) =>\n (d.getMonth() === leftMonth.getMonth() && d.getFullYear() === leftMonth.getFullYear()) ||\n (d.getMonth() === rightMonth.getMonth() && d.getFullYear() === rightMonth.getFullYear());\n\n // Each CalendarGrid owns its own roving focus internally and only reports\n // where it moved via onFocusDay. That single callback serves two purposes\n // here: (1) drives the hover/keyboard-focus range preview (setHoverDate),\n // and (2) — mirroring Calendar's own onFocusDay wiring — advances the\n // locked month pair when a keyboard move (PageUp/PageDown, Shift+PageUp/\n // PageDown, or an Arrow key) lands outside both currently visible months.\n const handleFocusDay = (d: Date) => {\n if (pendingStart !== undefined) setHoverDate(d);\n if (!inLockedRange(d)) setViewMonth(d);\n };\n\n const navButton = (direction: \"prev\" | \"next\") => (\n <button\n type=\"button\"\n aria-label={direction === \"prev\" ? \"Previous month\" : \"Next month\"}\n onClick={() => setViewMonth(addMonths(leftMonth, direction === \"prev\" ? -1 : 1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {direction === \"prev\" ? <path d=\"m15 18-6-6 6-6\" /> : <path d=\"m9 18 6-6-6-6\" />}\n </svg>\n </button>\n );\n\n const showSingleMonth = singleMonth;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col sm:flex-row gap-4 sm:gap-6 select-none max-w-full overflow-hidden\",\n className\n )}\n >\n <div className=\"w-full sm:w-[280px]\">\n <div className=\"flex items-center justify-between mb-2\">\n {navButton(\"prev\")}\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(leftMonth)}\n </span>\n <span className={showSingleMonth ? \"\" : \"sm:hidden\"}>{navButton(\"next\")}</span>\n </div>\n <CalendarGrid\n viewMonth={leftMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={handleSelectDay}\n onFocusDay={handleFocusDay}\n initialFocusDate={pendingStart ?? range.start ?? new Date()}\n />\n </div>\n {!showSingleMonth && (\n <div className=\"hidden sm:block w-[280px]\">\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"w-[26px]\" aria-hidden=\"true\" />\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(rightMonth)}\n </span>\n {navButton(\"next\")}\n </div>\n <CalendarGrid\n viewMonth={rightMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={handleSelectDay}\n onFocusDay={handleFocusDay}\n initialFocusDate={pendingStart ?? range.start ?? new Date()}\n />\n </div>\n )}\n </div>\n );\n }\n);\nRangeCalendar.displayName = \"RangeCalendar\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { RangeCalendar, type DateRange } from \"./range-calendar\";\nimport { toISODateString } from \"./calendar-internals\";\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Trigger text when nothing is selected. Default \"Pick a date range…\". */\n placeholder?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nconst displayFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" });\n\nfunction formatRangeLabel(range: DateRange): string | undefined {\n if (!range.start || !range.end) return undefined;\n return `${displayFormat.format(range.start)} – ${displayFormat.format(range.end)}`;\n}\n\nexport const DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n function DateRangePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDates,\n placeholder = \"Pick a date range…\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n },\n ref\n ) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<DateRange>(defaultValue ?? {});\n const selected = controlled ? value : internalValue;\n\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const commitValue = (r: DateRange) => {\n if (!controlled) setInternalValue(r);\n onChange?.(r);\n };\n\n const closePopup = React.useCallback(() => setOpen(false), []);\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleRangeChange = (r: DateRange) => {\n commitValue(r);\n closePopup();\n triggerRef.current?.focus();\n };\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n } else if (e.key === \"Escape\" && open) {\n // The panel is a DOM sibling of the trigger, not a descendant, and\n // RangeCalendar deliberately doesn't auto-focus into a grid on open.\n // So a real Escape keydown while focus is on the trigger never\n // bubbles into the panel's onKeyDown handler — it must be handled\n // here instead. Refocus the trigger explicitly rather than assuming\n // it already has focus.\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const onPanelKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const label = formatRangeLabel(selected);\n\n return (\n <div ref={containerRef} className={cn(\"relative inline-block w-full\", className)}>\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"w-full flex items-center justify-between gap-2 border rounded-kj-md bg-surface text-left text-sm\",\n \"pl-[0.85rem] pr-3 py-[calc(0.6rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"bg-muted text-muted-foreground cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n !label && \"text-muted-foreground\"\n )}\n >\n <span>{label ?? placeholder}</span>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-muted-foreground shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 10h18M8 2v4M16 2v4\" />\n </svg>\n </button>\n {name && (\n <>\n <input\n type=\"hidden\"\n name={`${name}Start`}\n value={selected.start ? toISODateString(selected.start) : \"\"}\n />\n <input\n type=\"hidden\"\n name={`${name}End`}\n value={selected.end ? toISODateString(selected.end) : \"\"}\n />\n </>\n )}\n\n {open && (\n <div\n onKeyDown={onPanelKeyDown}\n className=\"absolute z-40 top-[calc(100%+6px)] left-0 sm:left-auto right-0 sm:right-auto max-w-[calc(100vw-2rem)] bg-surface border border-border rounded-kj-md shadow-kj-lg p-3 animate-[kjpop_.12s_ease]\"\n >\n <RangeCalendar\n value={selected}\n onChange={handleRangeChange}\n min={min}\n max={max}\n disabledDates={disabledDates}\n />\n </div>\n )}\n </div>\n );\n }\n);\nDateRangePicker.displayName = \"DateRangePicker\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface DateRangePickerFieldProps extends Omit<DateRangePickerProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const DateRangePickerField = React.forwardRef<HTMLButtonElement, DateRangePickerFieldProps>(\n function DateRangePickerField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <DateRangePicker ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nDateRangePickerField.displayName = \"DateRangePickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DropzoneProps {\n onFiles: (files: File[]) => void;\n /** Native picker filter hint. Real enforcement lives in FileUpload's validation. */\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n className?: string;\n /** Overrides the default drop-region content. */\n children?: React.ReactNode;\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean | \"true\" | \"false\";\n \"aria-required\"?: boolean;\n}\n\nexport const Dropzone = React.forwardRef<HTMLButtonElement, DropzoneProps>(function Dropzone(\n {\n onFiles,\n accept,\n multiple = true,\n disabled = false,\n className,\n children,\n id,\n \"aria-describedby\": describedBy,\n \"aria-invalid\": ariaInvalid,\n \"aria-required\": ariaRequired,\n },\n ref\n) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [dragActive, setDragActive] = React.useState(false);\n // dragenter/dragleave fire as the pointer crosses child elements; count\n // them so the highlight only clears when the pointer truly leaves.\n const dragCounter = React.useRef(0);\n const invalid = ariaInvalid === true || ariaInvalid === \"true\";\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files ? Array.from(e.target.files) : [];\n if (files.length > 0) onFiles(files);\n // Reset so re-selecting the same file fires change again.\n e.target.value = \"\";\n };\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault();\n if (disabled) return;\n dragCounter.current += 1;\n setDragActive(true);\n };\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n };\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n if (disabled) return;\n dragCounter.current -= 1;\n if (dragCounter.current <= 0) {\n dragCounter.current = 0;\n setDragActive(false);\n }\n };\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n dragCounter.current = 0;\n setDragActive(false);\n if (disabled) return;\n const files = e.dataTransfer?.files ? Array.from(e.dataTransfer.files) : [];\n if (files.length > 0) onFiles(files);\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <button\n ref={ref}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-describedby={describedBy}\n aria-invalid={ariaInvalid}\n aria-required={ariaRequired}\n data-drag-active={dragActive || undefined}\n onClick={openPicker}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"w-full flex flex-col items-center justify-center gap-2 rounded-kj-md border-2 border-dashed px-6 py-8 text-center text-sm transition-colors\",\n \"focus:outline-none focus:ring-[3px] focus:ring-ring/30\",\n disabled\n ? \"border-input bg-muted text-muted-foreground cursor-not-allowed\"\n : dragActive\n ? \"border-primary bg-primary/5 text-foreground cursor-pointer\"\n : invalid\n ? \"border-danger bg-surface text-muted-foreground hover:text-foreground cursor-pointer\"\n : \"border-input bg-surface text-muted-foreground hover:border-primary hover:text-foreground cursor-pointer\"\n )}\n >\n {children ?? (\n <>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-7 w-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 16V4M7 9l5-5 5 5\" />\n <path d=\"M20 16v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3\" />\n </svg>\n <span>\n <span className=\"font-medium text-foreground\">Drag and drop files here</span>, or\n click to browse\n </span>\n </>\n )}\n </button>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleInputChange}\n className=\"sr-only\"\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n </div>\n );\n});\nDropzone.displayName = \"Dropzone\";\n","export type UploadStatus = \"pending\" | \"uploading\" | \"success\" | \"error\";\n\nexport interface UploadItem {\n id: string;\n file: File;\n /** Defaults to \"pending\" when unset. Drives the row's rendering. */\n status?: UploadStatus;\n /** 0–100. Shown as a Progress bar when status === \"uploading\". */\n progress?: number;\n /** Shown (danger tone) when status === \"error\". */\n error?: string;\n}\n\nexport interface FileRejection {\n file: File;\n reason: \"type\" | \"size\" | \"count\";\n}\n\nconst KB = 1024;\n\nexport function formatBytes(bytes: number): string {\n if (bytes < KB) return `${bytes} B`;\n const units = [\"KB\", \"MB\", \"GB\", \"TB\"];\n let value = bytes / KB;\n let unitIndex = 0;\n while (value >= KB && unitIndex < units.length - 1) {\n value /= KB;\n unitIndex++;\n }\n return `${value.toFixed(1)} ${units[unitIndex]}`;\n}\n\nexport function matchesAccept(file: File, accept?: string): boolean {\n if (!accept || accept.trim() === \"\") return true;\n const tokens = accept\n .split(\",\")\n .map((t) => t.trim())\n .filter(Boolean);\n if (tokens.length === 0) return true;\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n return tokens.some((token) => {\n const t = token.toLowerCase();\n if (t.startsWith(\".\")) return fileName.endsWith(t);\n if (t.endsWith(\"/*\")) return fileType.startsWith(t.slice(0, -1)); // \"image/*\" -> \"image/\"\n return fileType === t;\n });\n}\n\nlet idCounter = 0;\nexport function generateId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n idCounter += 1;\n return `file-${Date.now().toString(36)}-${idCounter}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nexport interface ValidateOptions {\n accept?: string;\n maxSize?: number;\n maxFiles?: number;\n existingCount?: number;\n multiple?: boolean;\n}\n\nexport function validateFiles(\n files: File[],\n { accept, maxSize, maxFiles, existingCount = 0, multiple = true }: ValidateOptions\n): { accepted: File[]; rejected: FileRejection[] } {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n // Single mode replaces the list, so existing count doesn't consume capacity.\n const effectiveExisting = multiple ? existingCount : 0;\n\n for (const file of files) {\n if (!matchesAccept(file, accept)) {\n rejected.push({ file, reason: \"type\" });\n continue;\n }\n if (maxSize != null && file.size > maxSize) {\n rejected.push({ file, reason: \"size\" });\n continue;\n }\n if (!multiple) {\n // Single mode: first type/size-valid file wins; the rest overflow.\n if (accepted.length === 0) accepted.push(file);\n else rejected.push({ file, reason: \"count\" });\n continue;\n }\n const capacity = maxFiles != null ? maxFiles - effectiveExisting - accepted.length : Infinity;\n if (capacity <= 0) {\n rejected.push({ file, reason: \"count\" });\n continue;\n }\n accepted.push(file);\n }\n\n return { accepted, rejected };\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Dropzone } from \"./dropzone\";\nimport { Progress } from \"./progress\";\nimport { FormField } from \"./form-field\";\nimport {\n formatBytes,\n generateId,\n validateFiles,\n type UploadItem,\n type UploadStatus,\n type FileRejection,\n} from \"./file-upload-internals\";\n\nexport type { UploadItem, UploadStatus, FileRejection };\n\nexport interface FileUploadProps {\n value?: UploadItem[];\n defaultValue?: UploadItem[];\n onChange?: (items: UploadItem[]) => void;\n /** Called with files rejected by validation on a given drop/selection. */\n onReject?: (rejections: FileRejection[]) => void;\n accept?: string;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n disabled?: boolean;\n /** Visual error state (danger border + aria-invalid on the dropzone). */\n error?: boolean;\n /** aria-required on the dropzone. */\n required?: boolean;\n className?: string;\n id?: string;\n \"aria-describedby\"?: string;\n}\n\nfunction FileIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\nexport const FileUpload = React.forwardRef<HTMLButtonElement, FileUploadProps>(function FileUpload(\n {\n value,\n defaultValue,\n onChange,\n onReject,\n accept,\n maxSize,\n maxFiles,\n multiple = true,\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n \"aria-describedby\": describedBy,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalItems, setInternalItems] = React.useState<UploadItem[]>(defaultValue ?? []);\n const items = controlled ? (value as UploadItem[]) : internalItems;\n\n const commit = (next: UploadItem[]) => {\n if (!controlled) setInternalItems(next);\n onChange?.(next);\n };\n\n const handleFiles = (files: File[]) => {\n const { accepted, rejected } = validateFiles(files, {\n accept,\n maxSize,\n maxFiles,\n existingCount: items.length,\n multiple,\n });\n if (rejected.length > 0) onReject?.(rejected);\n if (accepted.length === 0) return;\n const newItems: UploadItem[] = accepted.map((file) => ({\n id: generateId(),\n file,\n status: \"pending\",\n }));\n commit(multiple ? [...items, ...newItems] : newItems.slice(0, 1));\n };\n\n const removeItem = (itemId: string) => {\n commit(items.filter((it) => it.id !== itemId));\n };\n\n return (\n <div className={cn(\"w-full flex flex-col gap-3\", className)}>\n <Dropzone\n ref={ref}\n onFiles={handleFiles}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n id={id}\n aria-describedby={describedBy}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n />\n {items.length > 0 && (\n <ul className=\"flex flex-col gap-2\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-center gap-3 rounded-kj-md border border-border bg-surface px-3 py-2\"\n >\n <FileIcon className=\"h-5 w-5 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate text-sm text-foreground\">{item.file.name}</span>\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {formatBytes(item.file.size)}\n </span>\n </div>\n {item.status === \"uploading\" && item.progress != null && (\n <div className=\"mt-1.5 flex items-center gap-2\">\n <Progress value={item.progress} className=\"h-1.5\" />\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {Math.round(item.progress)}%\n </span>\n </div>\n )}\n {item.status === \"success\" && (\n <span className=\"mt-0.5 block text-xs text-success\">Uploaded</span>\n )}\n {item.status === \"error\" && (\n <span className=\"mt-0.5 block text-xs text-danger\">\n {item.error ?? \"Upload failed\"}\n </span>\n )}\n </div>\n {!disabled && (\n <button\n type=\"button\"\n aria-label={`Remove ${item.file.name}`}\n onClick={() => removeItem(item.id)}\n className=\"shrink-0 rounded-kj-sm p-1 text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n});\nFileUpload.displayName = \"FileUpload\";\n\nexport interface FileUploadFieldProps extends Omit<FileUploadProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const FileUploadField = React.forwardRef<HTMLButtonElement, FileUploadFieldProps>(\n function FileUploadField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <FileUpload ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nFileUploadField.displayName = \"FileUploadField\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type TimelineAlign = \"left\" | \"right\" | \"alternate\";\nexport type TimelineDotVariant =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"danger\";\nexport type TimelineDotSize = \"sm\" | \"md\" | \"lg\";\n\ninterface TimelineCtx {\n align: TimelineAlign;\n count: number;\n}\nconst TimelineContext = React.createContext<TimelineCtx | null>(null);\n\ninterface TimelineItemCtx {\n isEven: boolean;\n align: TimelineAlign;\n isLast: boolean;\n}\nconst TimelineItemContext = React.createContext<TimelineItemCtx | null>(null);\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: TimelineAlign;\n}\n\nexport const Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n ({ align = \"left\", className, children, ...props }, ref) => {\n const validChildren = React.Children.toArray(children).filter(React.isValidElement);\n const count = validChildren.length;\n\n const childrenWithIndex = validChildren.map((child, index) => {\n return React.cloneElement(child as React.ReactElement<any>, {\n index,\n });\n });\n\n return (\n <TimelineContext.Provider value={{ align, count }}>\n <div\n ref={ref}\n role=\"list\"\n className={cn(\"flex flex-col gap-6 w-full\", className)}\n {...props}\n >\n {childrenWithIndex}\n </div>\n </TimelineContext.Provider>\n );\n }\n);\nTimeline.displayName = \"Timeline\";\n\nexport interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement> {\n index?: number;\n}\n\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n ({ className, index = 0, children, ...props }, ref) => {\n const ctx = React.useContext(TimelineContext);\n if (!ctx) throw new Error(\"TimelineItem must be used within a Timeline\");\n\n const { align, count } = ctx;\n const isEven = index % 2 === 0;\n const isLast = index === count - 1;\n\n // Grid config per alignment\n const gridClass = cn(\n \"grid w-full gap-4 items-start group/timeline-item\",\n align === \"left\" && \"grid-cols-[auto_1fr]\",\n align === \"right\" && \"grid-cols-[1fr_auto] text-right\",\n align === \"alternate\" && \"md:grid-cols-[1fr_auto_1fr] grid-cols-[auto_1fr]\"\n );\n\n return (\n <TimelineItemContext.Provider value={{ isEven, align, isLast }}>\n <div ref={ref} role=\"listitem\" className={cn(gridClass, className)} {...props}>\n {children}\n </div>\n </TimelineItemContext.Provider>\n );\n }\n);\nTimelineItem.displayName = \"TimelineItem\";\n\nexport interface TimelineSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n isEven?: boolean;\n align?: TimelineAlign;\n}\n\nexport const TimelineSeparator = React.forwardRef<HTMLDivElement, TimelineSeparatorProps>(\n ({ className, align: propAlign, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const align = propAlign ?? ctx?.align ?? \"left\";\n\n const separatorClass = cn(\n \"flex flex-col items-center justify-self-center h-full min-h-[40px]\",\n align === \"alternate\" && \"md:col-start-2 col-start-1\",\n align === \"left\" && \"col-start-1\",\n align === \"right\" && \"col-start-2\",\n className\n );\n\n return <div ref={ref} className={separatorClass} {...props} />;\n }\n);\nTimelineSeparator.displayName = \"TimelineSeparator\";\n\nexport interface TimelineConnectorProps extends React.HTMLAttributes<HTMLDivElement> {\n dashed?: boolean;\n}\n\nexport const TimelineConnector = React.forwardRef<HTMLDivElement, TimelineConnectorProps>(\n ({ className, dashed, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const isLast = ctx?.isLast ?? false;\n\n const connectorClass = cn(\n \"grow\",\n isLast && \"hidden\",\n dashed ? \"w-0 border-l border-dashed border-border\" : \"w-0.5 bg-border\",\n className\n );\n\n return <div ref={ref} className={connectorClass} {...props} />;\n }\n);\nTimelineConnector.displayName = \"TimelineConnector\";\n\nexport interface TimelineDotProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: TimelineDotVariant;\n size?: TimelineDotSize;\n}\n\nexport const TimelineDot = React.forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ className, variant = \"default\", size = \"md\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-2.5 h-2.5 rounded-full my-1.5\",\n md: \"w-4 h-4 rounded-full my-1 border-2 bg-background border-border\",\n lg: \"w-8 h-8 rounded-full border flex items-center justify-center bg-background text-[0.8rem]\",\n };\n\n const variantClasses = {\n default: \"border-border text-muted-foreground\",\n primary: \"border-primary bg-primary/5 text-primary\",\n secondary: \"border-secondary bg-secondary/5 text-secondary\",\n success: \"border-success bg-success-surface text-success\",\n warning: \"border-warning bg-warning-surface text-warning\",\n danger: \"border-danger bg-danger-surface text-danger\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"shrink-0 select-none\",\n sizeClasses[size],\n variantClasses[variant],\n className\n )}\n {...props}\n />\n );\n }\n);\nTimelineDot.displayName = \"TimelineDot\";\n\nexport interface TimelineContentProps extends React.HTMLAttributes<HTMLDivElement> {\n isEven?: boolean;\n align?: TimelineAlign;\n}\n\nexport const TimelineContent = React.forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ className, isEven: propIsEven, align: propAlign, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const isEven = propIsEven ?? ctx?.isEven ?? false;\n const align = propAlign ?? ctx?.align ?? \"left\";\n\n const contentClass = cn(\n \"pb-8 flex flex-col gap-1 w-full\",\n align === \"left\" && \"col-start-2 text-left\",\n align === \"right\" && \"col-start-1 text-right\",\n align === \"alternate\" &&\n (isEven\n ? \"md:col-start-3 col-start-2 text-left\"\n : \"md:col-start-1 col-start-2 md:text-right text-left\"),\n className\n );\n\n return <div ref={ref} className={contentClass} {...props} />;\n }\n);\nTimelineContent.displayName = \"TimelineContent\";\n\nexport const TimelineTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, children, ...props }, ref) => (\n <h4\n ref={ref}\n className={cn(\"m-0 text-sm font-semibold tracking-[-0.01em] text-foreground\", className)}\n {...props}\n >\n {children}\n </h4>\n));\nTimelineTitle.displayName = \"TimelineTitle\";\n\nexport const TimelineTime = React.forwardRef<\n HTMLTimeElement,\n React.TimeHTMLAttributes<HTMLTimeElement>\n>(({ className, ...props }, ref) => (\n <time\n ref={ref}\n className={cn(\"text-[0.75rem] text-muted-foreground font-normal\", className)}\n {...props}\n />\n));\nTimelineTime.displayName = \"TimelineTime\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface UseStepperOptions {\n initialStep?: number;\n stepsCount: number;\n}\n\nexport interface UseStepperReturn {\n activeStep: number;\n completedSteps: number[];\n setStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n completeStep: (step: number) => void;\n uncompleteStep: (step: number) => void;\n reset: () => void;\n isFirstStep: boolean;\n isLastStep: boolean;\n}\n\nexport function useStepper({ initialStep = 0, stepsCount }: UseStepperOptions): UseStepperReturn {\n const safeStepsCount = Math.max(1, stepsCount);\n const [activeStep, setActiveStep] = React.useState(initialStep);\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([]);\n\n const setStep = React.useCallback(\n (step: number) => {\n if (step >= 0 && step < safeStepsCount) {\n setActiveStep(step);\n }\n },\n [safeStepsCount]\n );\n\n const nextStep = React.useCallback(() => {\n setActiveStep((prev) => Math.min(prev + 1, safeStepsCount - 1));\n }, [safeStepsCount]);\n\n const prevStep = React.useCallback(() => {\n setActiveStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const completeStep = React.useCallback(\n (step: number) => {\n setCompletedSteps((prev) => {\n if (step < 0 || step >= safeStepsCount) return prev; // ignore out-of-range\n if (prev.includes(step)) return prev;\n return [...prev, step].sort((a, b) => a - b);\n });\n },\n [safeStepsCount]\n );\n\n const uncompleteStep = React.useCallback((step: number) => {\n setCompletedSteps((prev) => prev.filter((s) => s !== step));\n }, []);\n\n const reset = React.useCallback(() => {\n setActiveStep(initialStep);\n setCompletedSteps([]);\n }, [initialStep]);\n\n return {\n activeStep,\n completedSteps,\n setStep,\n nextStep,\n prevStep,\n completeStep,\n uncompleteStep,\n reset,\n isFirstStep: activeStep === 0,\n isLastStep: activeStep === safeStepsCount - 1,\n };\n}\n\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\n\ninterface StepperCtx {\n activeStep: number;\n orientation: StepperOrientation;\n responsive?: boolean;\n linear: boolean;\n setStep: (step: number) => void;\n completedSteps: number[];\n registerStep: (value: number) => void;\n unregisterStep: (value: number) => void;\n steps: number[];\n}\n\nconst StepperContext = React.createContext<StepperCtx | null>(null);\n\ninterface StepperItemCtx {\n value: number;\n disabled: boolean;\n isLast: boolean;\n}\n\nconst StepperItemContext = React.createContext<StepperItemCtx | null>(null);\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n orientation?: StepperOrientation;\n responsive?: boolean;\n linear?: boolean;\n}\n\nexport const Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n responsive = true,\n linear = true,\n children,\n className,\n ...props\n },\n ref\n ) => {\n const [localValue, setLocalValue] = React.useState(defaultValue ?? 0);\n const isControlled = value !== undefined;\n const activeStep = isControlled ? value : localValue;\n\n const [steps, setSteps] = React.useState<number[]>([]);\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([]);\n\n const registerStep = React.useCallback((val: number) => {\n setSteps((prev) => (prev.includes(val) ? prev : [...prev, val].sort((a, b) => a - b)));\n }, []);\n\n const unregisterStep = React.useCallback((val: number) => {\n setSteps((prev) => prev.filter((v) => v !== val));\n }, []);\n\n const setStep = React.useCallback(\n (step: number) => {\n if (!isControlled) {\n setLocalValue(step);\n }\n onValueChange?.(step);\n\n // Auto mark previous steps as completed in linear mode\n if (linear) {\n setCompletedSteps((prev) => {\n const priorSteps = steps.filter((s) => s < step);\n const nextCompleted = Array.from(new Set([...prev, ...priorSteps])).sort(\n (a, b) => a - b\n );\n return nextCompleted;\n });\n }\n },\n [isControlled, onValueChange, linear, steps]\n );\n\n const contextValue = React.useMemo(\n () => ({\n activeStep,\n orientation,\n responsive,\n linear,\n setStep,\n completedSteps,\n registerStep,\n unregisterStep,\n steps,\n }),\n [\n activeStep,\n orientation,\n responsive,\n linear,\n setStep,\n completedSteps,\n registerStep,\n unregisterStep,\n steps,\n ]\n );\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n orientation === \"vertical\" ? \"flex flex-col gap-6\" : \"space-y-6\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n }\n);\nStepper.displayName = \"Stepper\";\n\nexport interface StepperContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number;\n}\n\nexport const StepperContent = React.forwardRef<HTMLDivElement, StepperContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperContent must be used within a Stepper\");\n\n const isActive = ctx.activeStep === value;\n\n if (!isActive) return null;\n\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n tabIndex={0}\n className={cn(\"focus-visible:outline-none w-full\", className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nStepperContent.displayName = \"StepperContent\";\n\nexport type StepperListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const StepperList = React.forwardRef<HTMLDivElement, StepperListProps>(\n ({ className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperList must be used within a Stepper\");\n\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n const orientationClass = isResponsiveHorizontal\n ? \"flex flex-col sm:flex-row items-start sm:items-center justify-between w-full relative gap-4\"\n : ctx.orientation === \"horizontal\"\n ? \"flex items-center justify-between w-full relative gap-4\"\n : \"flex flex-col items-start gap-6 relative w-full\";\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n className={cn(orientationClass, className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nStepperList.displayName = \"StepperList\";\n\nexport interface StepperItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number;\n disabled?: boolean;\n}\n\nexport const StepperItem = React.forwardRef<HTMLDivElement, StepperItemProps>(\n ({ value, disabled = false, className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperItem must be used within a Stepper\");\n\n const { registerStep, unregisterStep } = ctx;\n\n React.useEffect(() => {\n registerStep(value);\n return () => unregisterStep(value);\n }, [value, registerStep, unregisterStep]);\n\n const isLast = ctx.steps[ctx.steps.length - 1] === value;\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n return (\n <StepperItemContext.Provider value={{ value, disabled, isLast }}>\n <div\n ref={ref}\n className={cn(\n \"group relative flex items-center gap-3 z-10\",\n ctx.orientation === \"vertical\"\n ? \"flex items-start w-full\"\n : isResponsiveHorizontal\n ? \"w-full sm:w-auto items-start sm:items-center\"\n : \"\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperItemContext.Provider>\n );\n }\n);\nStepperItem.displayName = \"StepperItem\";\n\nexport type StepperSeparatorProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const StepperSeparator = React.forwardRef<HTMLDivElement, StepperSeparatorProps>(\n ({ className, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperSeparator must be used within a Stepper\");\n\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n return (\n <div\n ref={ref}\n className={cn(\n isResponsiveHorizontal\n ? \"hidden sm:block flex-1 h-[2px] bg-border transition-all duration-300\"\n : ctx.orientation === \"horizontal\"\n ? \"flex-1 h-[2px] bg-border transition-all duration-300\"\n : \"w-[2px] bg-border absolute left-[17px] top-8 bottom-0 -ml-px z-0\",\n className\n )}\n {...props}\n />\n );\n }\n);\nStepperSeparator.displayName = \"StepperSeparator\";\n\nexport type StepperTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const StepperTrigger = React.forwardRef<HTMLButtonElement, StepperTriggerProps>(\n ({ className, children, onClick, onKeyDown, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperTrigger must be used within a StepperItem inside a Stepper\");\n }\n\n const isCompleted =\n ctx.completedSteps.includes(itemCtx.value) || itemCtx.value < ctx.activeStep;\n const isActive = ctx.activeStep === itemCtx.value;\n\n // In linear mode, user can click completed steps to go back, but not future uncompleted ones\n const isClickable = !ctx.linear || isCompleted || isActive;\n const disabled = itemCtx.disabled || !isClickable;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n ctx.setStep(itemCtx.value);\n onClick?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n\n const triggers = Array.from(\n e.currentTarget.closest('[role=\"tablist\"]')?.querySelectorAll('[role=\"tab\"]') || []\n ) as HTMLElement[];\n\n const currentIndex = triggers.indexOf(e.currentTarget);\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n targetIndex = Math.min(currentIndex + 1, triggers.length - 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n targetIndex = Math.max(currentIndex - 1, 0);\n }\n\n if (targetIndex !== -1 && triggers[targetIndex]) {\n e.preventDefault();\n triggers[targetIndex].focus();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex items-center gap-3 bg-transparent border-0 p-0 text-left cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary rounded-md disabled:cursor-not-allowed disabled:opacity-50\",\n ctx.orientation === \"vertical\" ? \"w-full\" : \"\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nStepperTrigger.displayName = \"StepperTrigger\";\n\nexport type StepperIndicatorProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperIndicator = React.forwardRef<HTMLSpanElement, StepperIndicatorProps>(\n ({ className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperIndicator must be used within a StepperItem inside a Stepper\");\n }\n\n const isCompleted =\n ctx.completedSteps.includes(itemCtx.value) || itemCtx.value < ctx.activeStep;\n const isActive = ctx.activeStep === itemCtx.value;\n\n return (\n <span\n ref={ref}\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-full border text-sm font-semibold transition-all duration-200\",\n isCompleted\n ? \"bg-primary border-primary text-primary-foreground\"\n : isActive\n ? \"border-primary text-primary bg-primary/10 ring-2 ring-primary/20\"\n : \"border-border text-muted-foreground bg-muted/40\",\n className\n )}\n {...props}\n >\n {children ?? (isCompleted ? \"✓\" : itemCtx.value + 1)}\n </span>\n );\n }\n);\nStepperIndicator.displayName = \"StepperIndicator\";\n\nexport type StepperTitleProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperTitle = React.forwardRef<HTMLSpanElement, StepperTitleProps>(\n ({ className, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperTitle must be used within a StepperItem inside a Stepper\");\n }\n\n const isActive = ctx.activeStep === itemCtx.value;\n\n return (\n <span\n ref={ref}\n className={cn(\n \"text-sm font-medium transition-colors duration-200\",\n isActive ? \"text-foreground font-semibold\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n );\n }\n);\nStepperTitle.displayName = \"StepperTitle\";\n\nexport type StepperDescriptionProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperDescription = React.forwardRef<HTMLSpanElement, StepperDescriptionProps>(\n ({ className, ...props }, ref) => {\n const itemCtx = React.useContext(StepperItemContext);\n if (!itemCtx) throw new Error(\"StepperDescription must be used within a StepperItem\");\n\n return (\n <span\n ref={ref}\n className={cn(\"text-xs text-muted-foreground text-left block\", className)}\n {...props}\n />\n );\n }\n);\nStepperDescription.displayName = \"StepperDescription\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n banner?: React.ReactNode;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n contentWidth?: \"default\" | \"narrow\" | \"wide\" | \"full\";\n headerPosition?: \"sticky\" | \"fixed\" | \"static\";\n headerVariant?: \"glass\" | \"solid\" | \"transparent\";\n paddedContent?: boolean;\n mobileNav?: React.ReactNode;\n bottomNav?: React.ReactNode;\n}\n\nexport interface AppShellBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"primary\" | \"accent\" | \"muted\";\n closable?: boolean;\n onClose?: () => void;\n children: React.ReactNode;\n}\n\nexport interface AppShellHeaderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: \"glass\" | \"solid\" | \"transparent\";\n position?: \"sticky\" | \"fixed\" | \"static\";\n bordered?: boolean;\n children?: React.ReactNode;\n mobileNav?: React.ReactNode;\n}\n\nexport interface AppShellMainProps extends React.HTMLAttributes<HTMLElement> {\n width?: \"default\" | \"narrow\" | \"wide\" | \"full\";\n padded?: boolean;\n children: React.ReactNode;\n}\n\nexport interface AppShellFooterProps extends React.HTMLAttributes<HTMLElement> {\n bordered?: boolean;\n children: React.ReactNode;\n}\n\nexport const AppShellBanner = React.forwardRef<HTMLDivElement, AppShellBannerProps>(\n ({ className, variant = \"primary\", closable, onClose, children, ...props }, ref) => {\n const variantClass = {\n primary: \"bg-primary text-primary-foreground\",\n accent: \"bg-secondary text-secondary-foreground\",\n muted: \"bg-surface border-b border-border text-muted-foreground\",\n }[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"px-4 py-2 text-sm font-medium text-center flex items-center justify-center relative z-30\",\n variantClass,\n className\n )}\n {...props}\n >\n <div className=\"flex-1\">{children}</div>\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1 rounded opacity-80 hover:opacity-100 transition-opacity ml-2 cursor-pointer\"\n aria-label=\"Close banner\"\n >\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\nAppShellBanner.displayName = \"AppShellBanner\";\n\nexport const AppShellHeader = React.forwardRef<HTMLElement, AppShellHeaderProps>(\n (\n {\n className,\n variant = \"glass\",\n position = \"sticky\",\n bordered = true,\n children,\n mobileNav,\n ...props\n },\n ref\n ) => {\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && mobileOpen) {\n setMobileOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [mobileOpen]);\n\n React.useEffect(() => {\n if (mobileOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [mobileOpen]);\n\n const positionClass = {\n sticky: \"sticky top-0 z-40\",\n fixed: \"fixed top-0 left-0 right-0 z-40\",\n static: \"relative z-40\",\n }[position];\n\n const variantClass = {\n glass: \"bg-surface/80 backdrop-blur-md text-foreground\",\n solid: \"bg-surface text-foreground\",\n transparent: \"bg-transparent text-foreground\",\n }[variant];\n\n return (\n <>\n <header\n ref={ref}\n className={cn(\n \"w-full transition-colors\",\n positionClass,\n variantClass,\n bordered && \"border-b border-border/60\",\n className\n )}\n {...props}\n >\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between gap-4\">\n {mobileNav && (\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n className=\"md:hidden p-2 -ml-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Open navigation\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n )}\n {children}\n </div>\n </header>\n\n {mobileNav && mobileOpen && (\n <div className=\"fixed inset-0 z-50 md:hidden flex\">\n <div\n aria-hidden=\"true\"\n onClick={() => setMobileOpen(false)}\n className=\"fixed inset-0 bg-overlay backdrop-blur-[2px] transition-opacity duration-300\"\n />\n <aside\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Mobile Navigation\"\n className=\"relative z-10 w-72 h-full bg-surface border-r border-border flex flex-col shadow-kj-lg\"\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border\">\n <span className=\"text-xs font-bold uppercase tracking-wider text-muted-foreground\">\n Navigation\n </span>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n className=\"p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Close navigation\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4\">{mobileNav}</div>\n </aside>\n </div>\n )}\n </>\n );\n }\n);\nAppShellHeader.displayName = \"AppShellHeader\";\n\nexport const AppShellMain = React.forwardRef<HTMLElement, AppShellMainProps>(\n ({ className, width = \"default\", padded = true, children, ...props }, ref) => {\n const widthClass = {\n default: \"max-w-7xl mx-auto w-full\",\n narrow: \"max-w-5xl mx-auto w-full\",\n wide: \"max-w-screen-2xl mx-auto w-full\",\n full: \"max-w-none w-full\",\n }[width];\n\n return (\n <main\n ref={ref}\n className={cn(\n \"flex-1\",\n padded && \"px-4 sm:px-6 lg:px-8 py-4 sm:py-6 md:py-12\",\n widthClass,\n className\n )}\n {...props}\n >\n {children}\n </main>\n );\n }\n);\nAppShellMain.displayName = \"AppShellMain\";\n\nexport const AppShellFooter = React.forwardRef<HTMLElement, AppShellFooterProps>(\n ({ className, bordered = true, children, ...props }, ref) => {\n return (\n <footer\n ref={ref}\n className={cn(\n \"w-full bg-surface text-foreground py-12 mt-auto\",\n bordered && \"border-t border-border\",\n className\n )}\n {...props}\n >\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">{children}</div>\n </footer>\n );\n }\n);\nAppShellFooter.displayName = \"AppShellFooter\";\n\ntype AppShellComponent = React.ForwardRefExoticComponent<\n AppShellProps & React.RefAttributes<HTMLDivElement>\n> & {\n Banner: typeof AppShellBanner;\n Header: typeof AppShellHeader;\n Main: typeof AppShellMain;\n Footer: typeof AppShellFooter;\n};\n\nexport const AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\n (\n {\n className,\n banner,\n header,\n children,\n footer,\n contentWidth = \"default\",\n headerPosition = \"sticky\",\n headerVariant = \"glass\",\n paddedContent = true,\n mobileNav,\n bottomNav,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-screen bg-canvas text-foreground flex flex-col antialiased\",\n className\n )}\n {...props}\n >\n {banner && <AppShellBanner>{banner}</AppShellBanner>}\n {header && (\n <AppShellHeader variant={headerVariant} position={headerPosition} mobileNav={mobileNav}>\n {header}\n </AppShellHeader>\n )}\n <AppShellMain width={contentWidth} padded={paddedContent}>\n {children}\n </AppShellMain>\n {footer && <AppShellFooter>{footer}</AppShellFooter>}\n {bottomNav && (\n <div className=\"md:hidden sticky bottom-0 z-30 w-full bg-surface border-t border-border\">\n {bottomNav}\n </div>\n )}\n </div>\n );\n }\n) as AppShellComponent;\n\nAppShell.displayName = \"AppShell\";\nAppShell.Banner = AppShellBanner;\nAppShell.Header = AppShellHeader;\nAppShell.Main = AppShellMain;\nAppShell.Footer = AppShellFooter;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type RatingSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type RatingIconType = \"star\" | \"heart\" | \"flame\" | \"shield\" | \"thumb\";\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n size?: RatingSize;\n icon?: RatingIconType | React.ComponentType<{ className?: string }>;\n color?: string;\n emptyColor?: string;\n allowClear?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n hoverPreview?: boolean;\n showValue?: boolean;\n showCount?: boolean;\n count?: number;\n name?: string;\n onChange?: (value: number) => void;\n onHoverChange?: (value: number | null) => void;\n}\n\nconst sizeClasses: Record<RatingSize, { wrapper: string; star: string; text: string }> = {\n sm: { wrapper: \"kj-rating-sm gap-1\", star: \"w-4 h-4\", text: \"text-xs\" },\n md: { wrapper: \"kj-rating-md gap-1.5\", star: \"w-5 h-5\", text: \"text-sm\" },\n lg: { wrapper: \"kj-rating-lg gap-2\", star: \"w-6 h-6\", text: \"text-base\" },\n xl: { wrapper: \"kj-rating-xl gap-2.5\", star: \"w-8 h-8\", text: \"text-lg\" },\n};\n\nconst iconPaths: Record<RatingIconType, string> = {\n star: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\",\n heart:\n \"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\",\n flame:\n \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n shield:\n \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67 0C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n thumb:\n \"M7 10v12M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n};\n\nfunction roundToPrecision(value: number, precision: number): number {\n const inv = 1 / precision;\n return Math.round(value * inv) / inv;\n}\n\nfunction isCssColor(str: string): boolean {\n return str.startsWith(\"#\") || str.startsWith(\"rgb\") || str.startsWith(\"hsl\");\n}\n\nexport const Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n value: controlledValue,\n defaultValue = 0,\n max = 5,\n precision = 1,\n size = \"md\",\n icon = \"star\",\n color = \"#f59e0b\",\n emptyColor = \"#e5e7eb\",\n allowClear = true,\n disabled = false,\n readOnly = false,\n hoverPreview = true,\n showValue = false,\n showCount = false,\n count,\n name,\n onChange,\n onHoverChange,\n className,\n onKeyDown,\n onMouseLeave,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref\n ) => {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = React.useState<number>(\n controlledValue ?? defaultValue\n );\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n const instanceId = React.useId();\n\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(controlledValue);\n }\n }, [isControlled, controlledValue]);\n\n const currentValue = isControlled ? controlledValue : internalValue;\n const displayValue = hoverPreview && hoverValue !== null ? hoverValue : currentValue;\n\n const handleValueChange = (newValue: number) => {\n if (disabled || readOnly) return;\n const clamped = Math.max(0, Math.min(max, roundToPrecision(newValue, precision)));\n if (!isControlled) {\n setInternalValue(clamped);\n }\n onChange?.(clamped);\n };\n\n const getEventValue = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number): number => {\n const target = e.currentTarget;\n const width = target.offsetWidth;\n const nativeEv = e.nativeEvent as any;\n const offsetX = nativeEv?.offsetX ?? nativeEv?.nativeEvent?.offsetX ?? (e as any).offsetX;\n\n if (width > 0 && offsetX !== undefined && offsetX !== null) {\n const ratio = Math.max(0.001, Math.min(1, offsetX / width));\n const stepInStar = Math.ceil(ratio / precision) * precision;\n return Math.min(max, Math.max(precision, starIndex - 1 + stepInStar));\n }\n return starIndex;\n };\n\n const handleStarClick = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number) => {\n if (disabled || readOnly) return;\n const targetValue = getEventValue(e, starIndex);\n let nextValue = targetValue;\n if (allowClear && targetValue === currentValue) {\n nextValue = 0;\n }\n handleValueChange(nextValue);\n };\n\n const handleStarMouseMove = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number) => {\n if (disabled || readOnly) return;\n if (hoverPreview) {\n const hoveredVal = getEventValue(e, starIndex);\n setHoverValue(hoveredVal);\n onHoverChange?.(hoveredVal);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled || readOnly) {\n onKeyDown?.(e);\n return;\n }\n\n let nextVal: number | null = null;\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n nextVal = Math.min(max, currentValue + precision);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n nextVal = Math.max(0, currentValue - precision);\n break;\n case \"Home\":\n nextVal = 0;\n break;\n case \"End\":\n nextVal = max;\n break;\n }\n\n if (nextVal !== null) {\n e.preventDefault();\n handleValueChange(nextVal);\n }\n\n onKeyDown?.(e);\n };\n\n const handleContainerMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n if (hoverPreview) {\n setHoverValue(null);\n onHoverChange?.(null);\n }\n onMouseLeave?.(e);\n };\n\n const sizing = sizeClasses[size] || sizeClasses.md;\n\n return (\n <div\n ref={ref}\n role={readOnly ? \"img\" : \"radiogroup\"}\n tabIndex={disabled || readOnly ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-readonly={readOnly || undefined}\n aria-label={ariaLabel || (readOnly ? `Rated ${displayValue} out of ${max}` : \"Rating\")}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleContainerMouseLeave}\n className={cn(\n \"inline-flex items-center select-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md\",\n disabled && \"opacity-50 cursor-not-allowed\",\n readOnly && \"cursor-default\",\n !disabled && !readOnly && \"cursor-pointer\",\n sizing.wrapper,\n className\n )}\n {...props}\n >\n {name && <input type=\"hidden\" name={name} value={currentValue} />}\n\n <div className=\"inline-flex items-center gap-0.5\">\n {Array.from({ length: max }, (_, index) => {\n const starIndex = index + 1;\n const fillFraction = Math.max(0, Math.min(1, displayValue - index));\n const gradientId = `rating-grad-${instanceId}-${index}-${Math.round(\n fillFraction * 100\n )}`;\n\n const CustomIconComponent =\n typeof icon === \"function\" || typeof icon === \"object\"\n ? (icon as React.ComponentType<{ className?: string }>)\n : null;\n const builtInIconType = typeof icon === \"string\" ? icon : \"star\";\n const pathD = iconPaths[builtInIconType] || iconPaths.star;\n\n return (\n <button\n key={index}\n type=\"button\"\n tabIndex={-1}\n data-testid=\"rating-star\"\n role={readOnly ? undefined : \"radio\"}\n aria-checked={readOnly ? undefined : displayValue >= starIndex}\n aria-label={`${starIndex} of ${max} stars`}\n disabled={disabled}\n onClick={(e) => handleStarClick(e, starIndex)}\n onMouseMove={(e) => handleStarMouseMove(e, starIndex)}\n onMouseEnter={(e) => handleStarMouseMove(e, starIndex)}\n className={cn(\n \"p-0.5 focus:outline-none transition-transform active:scale-95 disabled:scale-100\",\n sizing.star\n )}\n >\n {CustomIconComponent ? (\n <CustomIconComponent\n className={cn(\n \"w-full h-full\",\n fillFraction >= 0.5\n ? !isCssColor(color) && color\n : !isCssColor(emptyColor) && emptyColor\n )}\n />\n ) : (\n <svg\n viewBox=\"0 0 24 24\"\n className=\"w-full h-full\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {fillFraction > 0 && fillFraction < 1 && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n {isCssColor(color) ? (\n <stop offset={`${fillFraction * 100}%`} stopColor={color} />\n ) : (\n <stop\n offset={`${fillFraction * 100}%`}\n stopColor=\"currentColor\"\n className={color}\n />\n )}\n {isCssColor(emptyColor) ? (\n <stop offset={`${fillFraction * 100}%`} stopColor={emptyColor} />\n ) : (\n <stop\n offset={`${fillFraction * 100}%`}\n stopColor=\"currentColor\"\n className={emptyColor}\n />\n )}\n </linearGradient>\n </defs>\n )}\n <path\n d={pathD}\n fill={\n fillFraction === 1\n ? isCssColor(color)\n ? color\n : undefined\n : fillFraction === 0\n ? isCssColor(emptyColor)\n ? emptyColor\n : undefined\n : `url(#${gradientId})`\n }\n className={\n fillFraction === 1\n ? !isCssColor(color)\n ? color\n : undefined\n : fillFraction === 0\n ? !isCssColor(emptyColor)\n ? emptyColor\n : undefined\n : undefined\n }\n stroke=\"none\"\n />\n </svg>\n )}\n </button>\n );\n })}\n </div>\n\n {showValue && (\n <span className={cn(\"font-medium text-foreground ml-1.5\", sizing.text)}>\n {displayValue}\n </span>\n )}\n\n {showCount && count !== undefined && (\n <span className={cn(\"text-muted-foreground ml-1\", sizing.text)}>({count})</span>\n )}\n </div>\n );\n }\n);\n\nRating.displayName = \"Rating\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Label, Hint } from \"../field\";\nimport { Rating, type RatingProps } from \"./rating\";\n\nexport interface RatingFieldProps extends RatingProps {\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n errorMessage?: React.ReactNode;\n required?: boolean;\n containerClassName?: string;\n}\n\nexport const RatingField = React.forwardRef<HTMLDivElement, RatingFieldProps>(\n (\n {\n id: customId,\n label,\n helperText,\n errorMessage,\n required,\n className,\n containerClassName,\n \"aria-describedby\": ariaDescribedBy,\n ...ratingProps\n },\n ref\n ) => {\n const generatedId = React.useId();\n const id = customId || generatedId;\n const helperId = helperText ? `${id}-helper` : undefined;\n const errorId = errorMessage ? `${id}-error` : undefined;\n\n const describedBy = [ariaDescribedBy, helperId, errorId].filter(Boolean).join(\" \") || undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", containerClassName)}>\n {label && (\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n )}\n <Rating\n ref={ref}\n id={id}\n className={className}\n aria-describedby={describedBy}\n {...ratingProps}\n />\n {helperText && <Hint id={helperId}>{helperText}</Hint>}\n {errorMessage && (\n <Hint id={errorId} error>\n {errorMessage}\n </Hint>\n )}\n </div>\n );\n }\n);\n\nRatingField.displayName = \"RatingField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Rating, type RatingSize, type RatingIconType } from \"./rating\";\nimport { Progress } from \"../progress\";\n\nexport interface RatingDistributionItem {\n stars: number;\n count: number;\n percentage: number;\n}\n\nexport interface RatingSummaryProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n average: number;\n totalCount: number;\n distribution: RatingDistributionItem[];\n max?: number;\n size?: RatingSize;\n icon?: RatingIconType | React.ComponentType<{ className?: string }>;\n}\n\nexport const RatingSummary = React.forwardRef<HTMLDivElement, RatingSummaryProps>(\n (\n { average, totalCount, distribution, max = 5, size = \"md\", icon = \"star\", className, ...props },\n ref\n ) => {\n const formattedAverage = Number.isInteger(average) ? average.toString() : average.toFixed(1);\n\n const formattedTotalCount = totalCount.toLocaleString();\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col gap-6 sm:flex-row sm:items-center sm:gap-8 p-4 rounded-xl border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n >\n {/* Average Score Summary Section */}\n <div className=\"flex flex-col items-center justify-center p-4 rounded-lg bg-muted/40 text-center min-w-[140px]\">\n <div className=\"text-4xl font-bold tracking-tight text-foreground\">\n {formattedAverage}\n </div>\n <div className=\"my-1.5\">\n <Rating\n value={average}\n max={max}\n size={size}\n icon={icon}\n readOnly\n allowClear={false}\n hoverPreview={false}\n />\n </div>\n <div className=\"text-xs text-muted-foreground\">{formattedTotalCount} total ratings</div>\n </div>\n\n {/* Distribution Breakdown Progress Bars Section */}\n <div className=\"flex-1 flex flex-col gap-2.5\">\n {distribution.map((item) => (\n <div key={item.stars} className=\"flex items-center gap-3 text-sm\">\n <span className=\"w-12 text-right font-medium text-foreground whitespace-nowrap\">\n {item.stars} star\n </span>\n <Progress\n value={item.percentage}\n aria-label={`${item.stars} star ratings: ${item.percentage}%`}\n className=\"h-2.5 flex-1\"\n />\n <span className=\"w-12 text-right text-xs text-muted-foreground font-mono\">\n {item.percentage}%\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nRatingSummary.displayName = \"RatingSummary\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Button, buttonVariants } from \"./button\";\n\nexport type PricingFeatureItem =\n | string\n | {\n text: string;\n included?: boolean;\n tooltip?: string;\n };\n\nexport interface PricingCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n price: string | number;\n period?: string;\n description?: string;\n features?: PricingFeatureItem[];\n variant?: \"default\" | \"featured\" | \"outline\";\n badge?: string;\n popular?: boolean;\n ctaText?: string;\n onCtaClick?: React.MouseEventHandler<HTMLButtonElement>;\n ctaHref?: string;\n cta?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport const PricingCard = React.forwardRef<HTMLDivElement, PricingCardProps>(\n (\n {\n className,\n name,\n price,\n period,\n description,\n features = [],\n variant,\n badge,\n popular = false,\n ctaText = \"Get Started\",\n onCtaClick,\n ctaHref,\n cta,\n disabled = false,\n ...props\n },\n ref\n ) => {\n const resolvedVariant = variant || (popular ? \"featured\" : \"default\");\n const displayBadge = badge || (popular ? \"Most Popular\" : undefined);\n\n const isFeatured = resolvedVariant === \"featured\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"relative flex flex-col p-6 transition-all duration-300\",\n isFeatured\n ? \"border-amber-500/80 shadow-kj-lg ring-1 ring-amber-500/30\"\n : resolvedVariant === \"outline\"\n ? \"border-border/80 bg-transparent shadow-none\"\n : \"border-border shadow-kj-sm\",\n className\n )}\n {...props}\n >\n <div className=\"mb-4 flex items-start justify-between gap-3\">\n <div>\n <h3 className=\"text-xl font-bold tracking-tight text-foreground\">{name}</h3>\n {description && <p className=\"mt-1 text-xs text-muted-foreground\">{description}</p>}\n </div>\n {displayBadge && (\n <span className=\"rounded-full bg-amber-500 px-3 py-0.5 text-[0.7rem] font-bold uppercase tracking-wider text-black shadow-sm shrink-0 mt-0.5\">\n {displayBadge}\n </span>\n )}\n </div>\n\n <div className=\"mb-6 flex items-baseline gap-1\">\n <span className=\"text-3xl font-extrabold tracking-tight text-foreground\">{price}</span>\n {period && <span className=\"text-xs font-medium text-muted-foreground\">{period}</span>}\n </div>\n\n {features.length > 0 && (\n <ul className=\"mb-6 flex flex-1 flex-col gap-2.5 p-0 text-xs list-none\">\n {features.map((feature, idx) => {\n const text = typeof feature === \"string\" ? feature : feature.text;\n const included = typeof feature === \"string\" ? true : (feature.included ?? true);\n\n return (\n <li key={idx} className=\"flex items-center gap-2.5\">\n <span\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[0.65rem] font-bold\",\n included\n ? \"bg-amber-500/15 text-amber-600 dark:text-amber-400\"\n : \"bg-muted text-muted-foreground/60\"\n )}\n >\n {included ? \"✓\" : \"✕\"}\n </span>\n <span\n className={cn(\n included ? \"text-foreground\" : \"text-muted-foreground line-through opacity-70\"\n )}\n >\n {text}\n </span>\n </li>\n );\n })}\n </ul>\n )}\n\n <div className=\"mt-auto pt-2\">\n {cta ? (\n cta\n ) : ctaHref ? (\n /* eslint-disable-next-line jsx-a11y/anchor-is-valid */\n <a\n href={disabled ? undefined : ctaHref}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={cn(\n buttonVariants({ variant: isFeatured ? \"primary\" : \"outline\" }),\n \"w-full justify-center\",\n disabled && \"pointer-events-none opacity-50\"\n )}\n >\n {ctaText}\n </a>\n ) : (\n <Button\n variant={isFeatured ? \"primary\" : \"outline\"}\n className=\"w-full justify-center\"\n onClick={onCtaClick}\n disabled={disabled}\n >\n {ctaText}\n </Button>\n )}\n </div>\n </Card>\n );\n }\n);\nPricingCard.displayName = \"PricingCard\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Badge } from \"./badge\";\nimport { Avatar } from \"./avatar\";\n\nexport interface BlogCardAuthor {\n name: string;\n avatarUrl?: string;\n role?: string;\n}\n\nexport interface BlogCardProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"title\"> {\n title: string;\n description?: string;\n coverUrl?: string;\n coverAlt?: string;\n category?: string;\n readTime?: string;\n publishedAt?: string;\n author?: BlogCardAuthor;\n orientation?: \"vertical\" | \"horizontal\";\n href?: string;\n}\n\nexport const BlogCard = React.forwardRef<HTMLElement, BlogCardProps>(\n (\n {\n className,\n title,\n description,\n coverUrl,\n coverAlt,\n category,\n readTime,\n publishedAt,\n author,\n orientation = \"vertical\",\n href,\n ...props\n },\n ref\n ) => {\n const isHorizontal = orientation === \"horizontal\";\n const isInteractive = Boolean(href || props.onClick);\n\n return (\n <Card\n ref={ref}\n as={href ? \"a\" : \"div\"}\n href={href}\n interactive={isInteractive}\n className={cn(\n \"group flex overflow-hidden transition-all duration-300\",\n isHorizontal ? \"flex-col sm:flex-row\" : \"flex-col\",\n className\n )}\n {...props}\n >\n {coverUrl && (\n <div\n className={cn(\n \"relative overflow-hidden bg-muted shrink-0\",\n isHorizontal ? \"w-full sm:w-2/5 min-h-[160px]\" : \"w-full aspect-[16/9]\"\n )}\n >\n <img\n src={coverUrl}\n alt={coverAlt || title}\n className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n </div>\n )}\n\n <div className=\"flex flex-1 flex-col justify-between p-5\">\n <div>\n <div className=\"mb-2 flex items-center gap-2 text-[0.75rem] text-muted-foreground\">\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n {(readTime || publishedAt) && (\n <span>\n {publishedAt} {publishedAt && readTime && \"•\"} {readTime}\n </span>\n )}\n </div>\n\n <h3 className=\"text-base font-bold tracking-tight text-foreground transition-colors group-hover:text-primary\">\n {title}\n </h3>\n\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground line-clamp-2\">{description}</p>\n )}\n </div>\n\n {author && (\n <div className=\"mt-4 flex items-center gap-2.5 border-t border-border/60 pt-3\">\n <Avatar src={author.avatarUrl} alt={author.name} size=\"sm\">\n {author.name.charAt(0)}\n </Avatar>\n <div className=\"flex flex-col text-xs\">\n <span className=\"font-semibold text-foreground\">{author.name}</span>\n {author.role && (\n <span className=\"text-[0.7rem] text-muted-foreground\">{author.role}</span>\n )}\n </div>\n </div>\n )}\n </div>\n </Card>\n );\n }\n);\nBlogCard.displayName = \"BlogCard\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Badge } from \"./badge\";\n\nexport interface ProjectCardMetric {\n label?: string;\n value: string | number;\n icon?: React.ReactNode;\n}\n\nexport interface ProjectCardStatus {\n label: string;\n variant?: \"success\" | \"warning\" | \"danger\" | \"neutral\" | \"info\";\n}\n\nexport interface ProjectCardProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"title\"> {\n title: string;\n description?: string;\n status?: ProjectCardStatus;\n techStack?: string[];\n metrics?: ProjectCardMetric[];\n updatedAt?: string;\n actions?: React.ReactNode;\n}\n\nexport const ProjectCard = React.forwardRef<HTMLElement, ProjectCardProps>(\n (\n {\n className,\n title,\n description,\n status,\n techStack = [],\n metrics = [],\n updatedAt,\n actions,\n href,\n ...props\n },\n ref\n ) => {\n const isInteractive = Boolean(href || props.onClick);\n\n return (\n <Card\n ref={ref}\n as={href ? \"a\" : \"div\"}\n href={href}\n interactive={isInteractive}\n className={cn(\n \"group flex flex-col justify-between p-5 transition-all duration-300\",\n className\n )}\n {...props}\n >\n <div>\n <div className=\"flex items-start justify-between gap-3\">\n <h3 className=\"text-base font-bold tracking-tight text-foreground transition-colors group-hover:text-primary\">\n {title}\n </h3>\n {status && (\n <Badge variant={status.variant || \"neutral\"} className=\"shrink-0 text-[0.65rem]\">\n {status.label}\n </Badge>\n )}\n </div>\n\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground line-clamp-2\">{description}</p>\n )}\n\n {techStack.length > 0 && (\n <div className=\"mt-3.5 flex flex-wrap gap-1.5\">\n {techStack.map((tech) => (\n <Badge key={tech} variant=\"neutral\" className=\"text-[0.65rem] py-0 px-2 font-mono\">\n {tech}\n </Badge>\n ))}\n </div>\n )}\n </div>\n\n {(metrics.length > 0 || updatedAt || actions) && (\n <div className=\"mt-4 flex items-center justify-between border-t border-border/60 pt-3 text-[0.75rem] text-muted-foreground\">\n <div className=\"flex items-center gap-3\">\n {metrics.map((metric, idx) => (\n <span\n key={metric.label ? `${metric.label}-${idx}` : idx}\n className=\"flex items-center gap-1 font-mono font-medium\"\n >\n {metric.icon && <span className=\"shrink-0\">{metric.icon}</span>}\n <span>{metric.value}</span>\n {metric.label && <span className=\"text-muted-foreground/70\">{metric.label}</span>}\n </span>\n ))}\n {updatedAt && <span>{updatedAt}</span>}\n </div>\n\n {actions && (\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"flex items-center gap-1 shrink-0\"\n >\n {actions}\n </div>\n )}\n </div>\n )}\n </Card>\n );\n }\n);\nProjectCard.displayName = \"ProjectCard\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface NotificationItemData {\n /** Unique stable identifier. */\n id: string;\n /** Primary notification text. */\n title: React.ReactNode;\n /** Optional second line (preview, quote, etc.). */\n body?: React.ReactNode;\n /**\n * Leading visual (28×28 circle).\n * SVG ReactNode → icon mode. If avatarSrc is also provided, avatarSrc wins.\n */\n icon?: React.ReactNode;\n /** Image URL for avatar mode. */\n avatarSrc?: string;\n /** 1–2 character initials for avatar fallback. */\n avatarFallback?: string;\n /** Shown as a relative time string. */\n timestamp: Date | string;\n /** Defaults to false (unread). */\n read?: boolean;\n /**\n * If provided, the row renders as <a href={href}>.\n * Clicking marks the item read and navigates.\n */\n href?: string;\n /** Called after the row is clicked (after mark-read). */\n onClick?: (id: string) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Relative timestamp utility (exported for unit tests)\n// ---------------------------------------------------------------------------\n\nexport function formatRelativeTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n if (isNaN(d.getTime())) return \"\";\n const diffMs = Date.now() - d.getTime();\n const diffMin = Math.floor(diffMs / 60_000);\n const diffH = Math.floor(diffMs / 3_600_000);\n const diffD = Math.floor(diffMs / 86_400_000);\n\n if (diffMin < 1) return \"Just now\";\n if (diffMin < 60) return `${diffMin} min ago`;\n if (diffH < 24) return diffH === 1 ? \"1 hour ago\" : `${diffH} hours ago`;\n // \"Yesterday\" fires from 24h to 47h59m (floor-based). Intentional — matches common app conventions.\n if (diffD === 1) return \"Yesterday\";\n if (diffD < 7) return `${diffD} days ago`;\n return d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" });\n}\n\n// ---------------------------------------------------------------------------\n// useInboxState — optional local-state convenience hook\n// ---------------------------------------------------------------------------\n\nexport interface InboxStateReturn {\n items: NotificationItemData[];\n unreadCount: number;\n markRead: (id: string) => void;\n markAllRead: () => void;\n dismiss: (id: string) => void;\n}\n\n/**\n * Local-state convenience hook for InboxPopover.\n * Intended for demos, Storybook stories, and simple apps.\n *\n * NOTE: `initial` is used only as the seed value for `useState`.\n * Re-rendering the parent with a new `initial` array does NOT reset\n * the hook's state. This is intentional — the hook owns its state\n * independently after mount. To reset from the outside, remount the\n * component using a `key` prop.\n */\nexport function useInboxState(initial: NotificationItemData[]): InboxStateReturn {\n const [items, setItems] = React.useState<NotificationItemData[]>(initial);\n\n const unreadCount = items.filter((i) => !i.read).length;\n\n const markRead = React.useCallback((id: string) => {\n setItems((prev) => prev.map((item) => (item.id === id ? { ...item, read: true } : item)));\n }, []);\n\n const markAllRead = React.useCallback(() => {\n setItems((prev) => prev.map((item) => ({ ...item, read: true })));\n }, []);\n\n const dismiss = React.useCallback((id: string) => {\n setItems((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n return { items, unreadCount, markRead, markAllRead, dismiss };\n}\n\n// ---------------------------------------------------------------------------\n// InboxPopover — context + root\n// ---------------------------------------------------------------------------\n\ninterface InboxCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\nconst InboxContext = React.createContext<InboxCtx | null>(null);\n\nfunction useInboxContext(part: string): InboxCtx {\n const ctx = React.useContext(InboxContext);\n if (!ctx) throw new Error(`${part} must be used inside <InboxPopover>`);\n return ctx;\n}\n\nexport interface InboxPopoverProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n}\n\nexport function InboxPopover({\n children,\n className,\n open: openProp,\n onOpenChange,\n}: InboxPopoverProps) {\n const [openState, setOpenState] = React.useState(false);\n const controlled = openProp !== undefined;\n const open = controlled ? openProp : openState;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const ref = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (v: boolean) => {\n if (!controlled) setOpenState(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open, setOpen]);\n\n const ctxValue = React.useMemo(() => ({ open, setOpen, triggerRef }), [open, setOpen]);\n\n return (\n <InboxContext.Provider value={ctxValue}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </InboxContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InboxTrigger — bell button with unread badge\n// ---------------------------------------------------------------------------\n\nexport interface InboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Badge count. Hidden when 0 or undefined. */\n unreadCount?: number;\n /** Accessible label (default: \"Notifications\"). */\n label?: string;\n}\n\nexport function InboxTrigger({\n unreadCount,\n label = \"Notifications\",\n className,\n onClick,\n ...props\n}: InboxTriggerProps) {\n const ctx = useInboxContext(\"InboxTrigger\");\n const setRef = (node: HTMLButtonElement | null) => {\n // eslint-disable-next-line react-hooks/immutability\n ctx.triggerRef.current = node;\n };\n\n const displayCount =\n unreadCount == null || unreadCount <= 0 ? null : unreadCount > 99 ? \"99+\" : String(unreadCount);\n\n const defaultLabel = displayCount ? `${label} (${displayCount} unread)` : label;\n\n return (\n <button\n ref={setRef}\n type=\"button\"\n aria-label={defaultLabel}\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n className={cn(\n \"relative inline-flex items-center justify-center w-9 h-9 rounded-full\",\n \"bg-surface border border-border text-muted-foreground\",\n \"hover:bg-muted hover:text-foreground transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\",\n className\n )}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n {...props}\n >\n {/* Bell icon */}\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n\n {/* Unread badge */}\n {displayCount != null && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute -top-0.5 -right-0.5 min-w-[16px] h-4 px-1\",\n \"rounded-full bg-primary text-primary-foreground\",\n \"text-[9px] font-bold leading-4 flex items-center justify-center\"\n )}\n >\n {displayCount}\n </span>\n )}\n </button>\n );\n}\n\n// ---------------------------------------------------------------------------\n// NotificationItem\n// ---------------------------------------------------------------------------\n\nexport interface NotificationItemProps {\n item: NotificationItemData;\n onDismiss?: (id: string) => void;\n className?: string;\n}\n\nexport function NotificationItem({ item, onDismiss, className }: NotificationItemProps) {\n const leadingSlot = item.avatarSrc ? (\n <img\n src={item.avatarSrc}\n alt={item.avatarFallback ?? \"\"}\n className=\"w-7 h-7 rounded-full object-cover flex-shrink-0\"\n />\n ) : item.avatarFallback ? (\n <span className=\"w-7 h-7 rounded-full bg-primary/20 text-primary text-[10px] font-bold flex items-center justify-center flex-shrink-0 select-none\">\n {item.avatarFallback}\n </span>\n ) : item.icon ? (\n <span className=\"w-7 h-7 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0 text-primary\">\n {item.icon}\n </span>\n ) : null;\n\n const textBlock = (\n <div className=\"flex-1 min-w-0\">\n <p\n className={cn(\n \"text-sm leading-snug\",\n item.read ? \"text-muted-foreground\" : \"text-foreground\"\n )}\n >\n {item.title}\n </p>\n {item.body && <p className=\"text-xs text-muted-foreground mt-0.5 truncate\">{item.body}</p>}\n <p className=\"text-xs text-muted-foreground mt-1\">{formatRelativeTime(item.timestamp)}</p>\n </div>\n );\n\n const sharedClass = cn(\n \"group relative flex items-start gap-2.5 px-3.5 py-2.5 w-full text-left\",\n \"border-b border-border last:border-0\",\n !item.read && \"bg-primary/[0.04]\",\n \"hover:bg-muted/50 transition-colors\",\n className\n );\n\n const mainContent = (\n <>\n {leadingSlot}\n {textBlock}\n </>\n );\n\n const mainAction = item.href ? (\n <a\n href={item.href}\n onClick={() => item.onClick?.(item.id)}\n className=\"flex-1 flex items-start gap-2.5 min-w-0 text-left outline-none\"\n >\n {mainContent}\n </a>\n ) : (\n <button\n type=\"button\"\n onClick={() => item.onClick?.(item.id)}\n className=\"flex-1 flex items-start gap-2.5 min-w-0 text-left outline-none\"\n >\n {mainContent}\n </button>\n );\n\n return (\n <div className={sharedClass}>\n {mainAction}\n <div className=\"flex items-start gap-2 flex-shrink-0 mt-0.5\">\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onDismiss?.(item.id);\n }}\n className={cn(\n \"text-muted-foreground hover:text-foreground transition-colors\",\n \"opacity-0 group-hover:opacity-100 focus:opacity-100\",\n \"text-base leading-none p-0.5 rounded\"\n )}\n >\n ×\n </button>\n <span\n aria-label={item.read ? undefined : \"Unread\"}\n aria-hidden={item.read ? true : undefined}\n className={cn(\n \"w-[7px] h-[7px] rounded-full flex-shrink-0 mt-1\",\n item.read ? \"border border-border\" : \"bg-primary\"\n )}\n />\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InboxContent — full panel\n// ---------------------------------------------------------------------------\n\nexport interface InboxContentProps {\n items: NotificationItemData[];\n onMarkAllRead?: () => void;\n onDismiss?: (id: string) => void;\n viewAllHref?: string;\n viewAllLabel?: string;\n emptyState?: React.ReactNode;\n align?: \"auto\" | \"start\" | \"end\";\n width?: number | string;\n maxHeight?: number | string;\n className?: string;\n}\n\nexport function InboxContent({\n items,\n onMarkAllRead,\n onDismiss,\n viewAllHref,\n viewAllLabel = \"View all notifications\",\n emptyState,\n align = \"auto\",\n width = 360,\n maxHeight = 320,\n className,\n}: InboxContentProps) {\n const ctx = useInboxContext(\"InboxContent\");\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ctx.open) ref.current?.focus();\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n\n const allRead = items.length === 0 || items.every((i) => i.read);\n\n const defaultEmptyState = (\n <div className=\"flex flex-col items-center justify-center py-10 px-5 text-center\">\n <span className=\"w-10 h-10 rounded-full bg-muted flex items-center justify-center mb-3 text-muted-foreground\">\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n </span>\n <p className=\"text-sm font-medium text-foreground\">All caught up</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">No new notifications</p>\n </div>\n );\n\n const alignClass = {\n start: \"left-0 top-[calc(100%+6px)]\",\n end: \"right-0 top-[calc(100%+6px)]\",\n auto: \"right-0 sm:right-0 left-auto top-[calc(100%+6px)] max-sm:left-1/2 max-sm:-translate-x-1/2\",\n }[align ?? \"auto\"];\n\n return (\n <div\n ref={ref}\n role=\"dialog\"\n aria-label=\"Notifications\"\n tabIndex={-1}\n style={{ width: typeof width === \"number\" ? `${width}px` : width }}\n className={cn(\n \"absolute z-40 max-w-[calc(100vw-1.5rem)]\",\n \"bg-surface border border-border rounded-kj-md shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n alignClass,\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-3.5 py-2.5 border-b border-border\">\n <span className=\"text-sm font-semibold text-foreground\">Notifications</span>\n <button\n type=\"button\"\n disabled={allRead}\n aria-disabled={allRead}\n onClick={allRead ? undefined : onMarkAllRead}\n className={cn(\n \"text-xs font-medium transition-colors\",\n allRead\n ? \"text-muted-foreground cursor-not-allowed\"\n : \"text-primary hover:text-primary/80\"\n )}\n >\n Mark all read\n </button>\n </div>\n\n {/* List or empty state */}\n {items.length === 0 ? (\n (emptyState ?? defaultEmptyState)\n ) : (\n <div className=\"overflow-y-auto\" style={{ maxHeight }}>\n {items.map((item) => (\n <NotificationItem key={item.id} item={item} onDismiss={onDismiss} />\n ))}\n </div>\n )}\n\n {/* Footer */}\n {items.length > 0 && viewAllHref && (\n <div className=\"border-t border-border px-3.5 py-2.5 text-center\">\n <a\n href={viewAllHref}\n className=\"text-xs font-medium text-primary hover:text-primary/80 transition-colors\"\n >\n {viewAllLabel} →\n </a>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"./popover\";\nimport { Field, Label, Hint } from \"./field\";\n\nexport const DEFAULT_COLOR_SWATCHES = [\n \"#EF4444\", // Red\n \"#F97316\", // Orange\n \"#F59E0B\", // Amber\n \"#10B981\", // Emerald\n \"#14B8A6\", // Teal\n \"#06B6D4\", // Sky\n \"#3B82F6\", // Blue\n \"#6366F1\", // Indigo\n \"#8B5CF6\", // Purple\n \"#EC4899\", // Pink\n \"#64748B\", // Slate\n \"#1E293B\", // Charcoal\n] as const;\n\nexport function isValidHex(hex: string): boolean {\n const trimmed = hex.trim();\n const clean = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n return /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(clean);\n}\n\nexport function normalizeHex(hex: string): string {\n let clean = hex.trim();\n if (!clean.startsWith(\"#\")) clean = `#${clean}`;\n if (/^#[0-9A-Fa-f]{3}$/.test(clean)) {\n clean = `#${clean[1]}${clean[1]}${clean[2]}${clean[2]}${clean[3]}${clean[3]}`;\n }\n return clean.toUpperCase();\n}\n\nexport function hexToHsl(hex: string): { h: number; s: number; l: number } {\n if (!isValidHex(hex)) return { h: 0, s: 0, l: 0 };\n const normalized = normalizeHex(hex);\n const r = parseInt(normalized.slice(1, 3), 16) / 255;\n const g = parseInt(normalized.slice(3, 5), 16) / 255;\n const b = parseInt(normalized.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const normalizedH = ((h % 360) + 360) % 360;\n const sPct = s / 100;\n const lPct = l / 100;\n\n const c = (1 - Math.abs(2 * lPct - 1)) * sPct;\n const x = c * (1 - Math.abs(((normalizedH / 60) % 2) - 1));\n const m = lPct - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n\n if (0 <= normalizedH && normalizedH < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= normalizedH && normalizedH < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= normalizedH && normalizedH < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= normalizedH && normalizedH < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= normalizedH && normalizedH < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= normalizedH && normalizedH < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n const toHex = (n: number) => {\n const hex = Math.round((n + m) * 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();\n}\n\nexport interface ColorPickerSwatchProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n color: string;\n selected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const ColorPickerSwatch = React.forwardRef<HTMLButtonElement, ColorPickerSwatchProps>(\n ({ color, selected = false, size = \"md\", className, style, ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-5 h-5\",\n md: \"w-7 h-7\",\n lg: \"w-9 h-9\",\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n style={{ backgroundColor: color, ...style }}\n className={cn(\n \"relative shrink-0 rounded-full border border-border/50 shadow-sm transition-transform hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary flex items-center justify-center text-white text-xs font-bold\",\n sizeClasses[size],\n selected && \"ring-2 ring-primary ring-offset-2 ring-offset-surface\",\n className\n )}\n {...props}\n >\n {selected && <span aria-hidden=\"true\">✓</span>}\n </button>\n );\n }\n);\nColorPickerSwatch.displayName = \"ColorPickerSwatch\";\n\nexport interface ColorPickerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"value\" | \"defaultValue\"> {\n /** Current hex color value (controlled). */\n value?: string;\n /** Initial hex color value (uncontrolled). Defaults to \"#3B82F6\". */\n defaultValue?: string;\n /** Called when color changes. */\n onChange?: (hex: string) => void;\n /** Array of hex color strings for preset palette. Defaults to DEFAULT_COLOR_SWATCHES. */\n swatches?: readonly string[] | string[];\n /** Whether the picker is disabled. */\n disabled?: boolean;\n /** Whether to show the manual Hex text input inside the popover. Defaults to true. */\n showHexInput?: boolean;\n /** Additional class name for the container. */\n className?: string;\n}\n\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value,\n defaultValue = \"#3B82F6\",\n onChange,\n swatches = DEFAULT_COLOR_SWATCHES,\n disabled = false,\n showHexInput = true,\n className,\n ...props\n },\n ref\n ) => {\n const isControlled = value !== undefined;\n const [localColor, setLocalColor] = React.useState<string>(normalizeHex(defaultValue));\n const color = isControlled ? normalizeHex(value) : localColor;\n\n const [hexInputValue, setHexInputValue] = React.useState<string>(color);\n\n React.useEffect(() => {\n setHexInputValue(color);\n }, [color]);\n\n const handleColorChange = React.useCallback(\n (newHex: string) => {\n const normalized = normalizeHex(newHex);\n if (!isControlled) {\n setLocalColor(normalized);\n }\n onChange?.(normalized);\n },\n [isControlled, onChange]\n );\n\n const hsl = React.useMemo(() => hexToHsl(color), [color]);\n\n const handleHueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const h = Number(e.target.value);\n const s = hsl.s === 0 ? 100 : hsl.s;\n const l = hsl.s === 0 ? 50 : hsl.l;\n const newHex = hslToHex(h, s, l);\n handleColorChange(newHex);\n };\n\n const handleHexSubmit = () => {\n if (isValidHex(hexInputValue)) {\n handleColorChange(hexInputValue);\n } else {\n setHexInputValue(color);\n }\n };\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-label={`Select color, current ${color}`}\n className={cn(\n \"inline-flex items-center gap-2.5 px-3 py-1.5 rounded-kj-md border border-border bg-surface text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n >\n <span\n style={{ backgroundColor: color }}\n className=\"w-5 h-5 rounded-full border border-border/50 shadow-sm shrink-0\"\n />\n <span className=\"font-mono text-xs uppercase\">{color}</span>\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n className=\"text-muted-foreground ml-auto\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent side=\"bottom\" align=\"start\" className=\"w-64 p-3.5 space-y-3.5\">\n {/* Header Banner */}\n <div className=\"flex items-center gap-3 p-2 rounded-kj-md bg-muted/40 border border-border\">\n <span\n style={{ backgroundColor: color }}\n className=\"w-8 h-8 rounded-full border border-border/50 shadow-sm shrink-0\"\n />\n <div>\n <p className=\"text-xs text-muted-foreground\">Selected Color</p>\n <p className=\"text-sm font-mono font-bold text-foreground uppercase\">{color}</p>\n </div>\n </div>\n\n {/* Swatches Grid */}\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Preset Swatches</p>\n <div className=\"grid grid-cols-6 gap-2\">\n {swatches.map((swatch) => {\n const normalizedSwatch = normalizeHex(swatch);\n return (\n <ColorPickerSwatch\n key={swatch}\n color={swatch}\n selected={normalizedSwatch === color}\n aria-label={`Select color ${swatch}`}\n onClick={() => handleColorChange(swatch)}\n />\n );\n })}\n </div>\n </div>\n\n {/* Hue Slider */}\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Hue</p>\n <input\n type=\"range\"\n min={0}\n max={360}\n value={hsl.h}\n onChange={handleHueChange}\n aria-label=\"Hue slider\"\n className=\"w-full h-3 rounded-full appearance-none cursor-pointer\"\n style={{\n background:\n \"linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)\",\n }}\n />\n </div>\n\n {/* Manual Hex Input */}\n {showHexInput && (\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Hex Code</p>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n aria-label=\"Hex Code\"\n value={hexInputValue}\n onChange={(e) => setHexInputValue(e.target.value)}\n onBlur={handleHexSubmit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleHexSubmit();\n }}\n placeholder=\"#000000\"\n className=\"flex-1 px-2.5 py-1 text-xs font-mono rounded-kj-md border border-border bg-surface text-foreground uppercase focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n />\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n );\n }\n);\nColorPicker.displayName = \"ColorPicker\";\n\nexport interface ColorPickerFieldProps extends ColorPickerProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n}\n\nexport const ColorPickerField = React.forwardRef<HTMLDivElement, ColorPickerFieldProps>(\n ({ label, hint, error, required, ...props }, ref) => {\n return (\n <Field>\n {label && <Label required={required}>{label}</Label>}\n <ColorPicker ref={ref} {...props} />\n {hint && <Hint>{hint}</Hint>}\n {error && <Hint error>{error}</Hint>}\n </Field>\n );\n }\n);\nColorPickerField.displayName = \"ColorPickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface GalleryImage {\n src: string;\n alt?: string;\n title?: string;\n caption?: string;\n thumbnailSrc?: string;\n}\n\nexport interface ImageGalleryProps {\n images: GalleryImage[];\n columns?: 2 | 3 | 4 | 5;\n aspectRatio?: \"square\" | \"video\" | \"4/3\" | \"auto\" | string;\n maxVisible?: number;\n className?: string;\n thumbnailClassName?: string;\n lightboxClassName?: string;\n onImageClick?: (index: number) => void;\n}\n\nconst COLUMN_CLASSES: Record<number, string> = {\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n};\n\nconst ASPECT_CLASSES: Record<string, string> = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n auto: \"aspect-auto\",\n};\n\nexport function ImageGallery({\n images = [],\n columns = 3,\n aspectRatio = \"square\",\n maxVisible,\n className,\n thumbnailClassName,\n lightboxClassName,\n onImageClick,\n}: ImageGalleryProps) {\n const [selectedIndex, setSelectedIndex] = React.useState<number | null>(null);\n\n const columnClass = COLUMN_CLASSES[columns] || \"grid-cols-3\";\n const aspectClass =\n ASPECT_CLASSES[aspectRatio] ||\n (aspectRatio.startsWith(\"aspect-\") ? aspectRatio : `aspect-[${aspectRatio}]`);\n\n const hasMaxVisible =\n typeof maxVisible === \"number\" && maxVisible > 0 && images.length > maxVisible;\n const visibleImages = hasMaxVisible ? images.slice(0, maxVisible) : images;\n const remainingCount = hasMaxVisible ? images.length - maxVisible + 1 : 0;\n\n const handleThumbnailClick = (index: number) => {\n setSelectedIndex(index);\n if (onImageClick) {\n onImageClick(index);\n }\n };\n\n const handleClose = React.useCallback(() => {\n setSelectedIndex(null);\n }, []);\n\n const handleNext = React.useCallback(() => {\n setSelectedIndex((prev) => (prev === null ? null : (prev + 1) % images.length));\n }, [images.length]);\n\n const handlePrev = React.useCallback(() => {\n setSelectedIndex((prev) => (prev === null ? null : (prev - 1 + images.length) % images.length));\n }, [images.length]);\n\n React.useEffect(() => {\n if (selectedIndex === null) return;\n\n const originalOverflow = document.body.style.overflow;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n handleClose();\n } else if (e.key === \"ArrowRight\") {\n handleNext();\n } else if (e.key === \"ArrowLeft\") {\n handlePrev();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = originalOverflow;\n };\n }, [selectedIndex, handleClose, handleNext, handlePrev]);\n\n const activeImage = selectedIndex !== null ? images[selectedIndex] : null;\n\n return (\n <>\n <div className={cn(\"grid gap-3 w-full\", columnClass, className)}>\n {visibleImages.map((img, idx) => {\n const isLastOverlay = hasMaxVisible && idx === maxVisible - 1;\n const thumbSrc = img.thumbnailSrc || img.src;\n const defaultAlt = img.alt || `Thumbnail ${idx + 1}`;\n const buttonAriaLabel = isLastOverlay ? `View all ${images.length} images` : defaultAlt;\n\n return (\n <button\n key={idx}\n type=\"button\"\n aria-label={buttonAriaLabel}\n onClick={() => handleThumbnailClick(idx)}\n className={cn(\n \"relative group overflow-hidden rounded-kj-lg bg-muted focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 cursor-pointer transition-all duration-200\",\n aspectClass,\n thumbnailClassName\n )}\n >\n <img\n src={thumbSrc}\n alt={img.alt || `Thumbnail ${idx + 1}`}\n className=\"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n {isLastOverlay && (\n <div className=\"absolute inset-0 bg-black/60 backdrop-blur-[2px] flex items-center justify-center text-white font-bold text-xl group-hover:bg-black/70 transition-colors\">\n +{remainingCount}\n </div>\n )}\n </button>\n );\n })}\n </div>\n\n {selectedIndex !== null && activeImage && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image gallery lightbox\"\n onClick={(e) => e.target === e.currentTarget && handleClose()}\n className={cn(\n \"fixed inset-0 z-[100] bg-black/85 backdrop-blur-md flex flex-col justify-between p-4 sm:p-6 transition-opacity duration-200 animate-in fade-in-0\",\n lightboxClassName\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between w-full text-white z-10\">\n <span className=\"text-sm font-medium text-white/80 select-none\">\n {selectedIndex + 1} of {images.length}\n </span>\n <button\n type=\"button\"\n onClick={handleClose}\n aria-label=\"Close\"\n className=\"p-2 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n {/* Main content with Prev/Image/Next */}\n <div className=\"relative flex-1 flex items-center justify-between gap-4 my-auto min-h-0 w-full\">\n {images.length > 1 && (\n <button\n type=\"button\"\n onClick={handlePrev}\n aria-label=\"Previous image\"\n className=\"p-3 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer z-10 shrink-0\"\n >\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n )}\n\n <div className=\"flex-1 flex flex-col items-center justify-center h-full min-h-0 px-2 select-none\">\n <img\n src={activeImage.src}\n alt={activeImage.alt || `Image ${selectedIndex + 1}`}\n className=\"max-h-[70vh] max-w-full object-contain rounded-kj-md shadow-2xl transition-transform\"\n />\n </div>\n\n {images.length > 1 && (\n <button\n type=\"button\"\n onClick={handleNext}\n aria-label=\"Next image\"\n className=\"p-3 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer z-10 shrink-0\"\n >\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {/* Footer (Title & Caption) */}\n {(activeImage.title || activeImage.caption) && (\n <div className=\"flex flex-col items-center justify-center text-center text-white pb-2 z-10\">\n {activeImage.title && (\n <h3 className=\"text-base font-semibold text-white\">{activeImage.title}</h3>\n )}\n {activeImage.caption && (\n <p className=\"text-xs sm:text-sm text-white/70 max-w-lg mt-0.5\">\n {activeImage.caption}\n </p>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { UseInPostScriptOptions, UseInPostScriptResult } from \"./types\";\n\nconst OFFICIAL_SCRIPT_URL = \"https://geowidget.easypack24.net/js/sdk-for-javascript.js\";\nconst OFFICIAL_CSS_URL = \"https://geowidget.easypack24.net/css/easypack.css\";\n\nlet scriptPromise: Promise<void> | null = null;\n\nexport function useInPostScript(options: UseInPostScriptOptions = {}): UseInPostScriptResult {\n const [isLoaded, setIsLoaded] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return !!(\n window.customElements?.get(\"inpost-geowidget\") ||\n (window as unknown as { easyPack?: unknown }).easyPack\n );\n });\n const [error, setError] = useState<Error | null>(null);\n\n const scriptUrl = options.customScriptUrl || OFFICIAL_SCRIPT_URL;\n const cssUrl = options.customCssUrl || OFFICIAL_CSS_URL;\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n // Check if script/customElement is already defined\n if (\n window.customElements?.get(\"inpost-geowidget\") ||\n (window as unknown as { easyPack?: unknown }).easyPack\n ) {\n return;\n }\n\n // Ensure CSS stylesheet is injected\n let linkTag = document.querySelector(`link[href=\"${cssUrl}\"]`) as HTMLLinkElement | null;\n if (!linkTag) {\n linkTag = document.createElement(\"link\");\n linkTag.rel = \"stylesheet\";\n linkTag.href = cssUrl;\n linkTag.type = \"text/css\";\n document.head.appendChild(linkTag);\n }\n\n if (!scriptPromise) {\n scriptPromise = new Promise((resolve, reject) => {\n let scriptTag = document.querySelector(\n `script[src=\"${scriptUrl}\"]`\n ) as HTMLScriptElement | null;\n if (!scriptTag) {\n scriptTag = document.createElement(\"script\");\n scriptTag.src = scriptUrl;\n scriptTag.async = true;\n document.head.appendChild(scriptTag);\n }\n\n scriptTag.addEventListener(\"load\", () => resolve());\n scriptTag.addEventListener(\"error\", (err) =>\n reject(\n err instanceof Error ? err : new Error(\"Failed to load InPost GeoWidget SDK script\")\n )\n );\n });\n }\n\n scriptPromise\n .then(async () => {\n if (typeof window !== \"undefined\" && window.customElements?.whenDefined) {\n try {\n await Promise.race([\n window.customElements.whenDefined(\"inpost-geowidget\"),\n new Promise((r) => setTimeout(r, 100)),\n ]);\n } catch {\n /* ignore */\n }\n }\n setIsLoaded(true);\n })\n .catch((err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n });\n }, [scriptUrl, cssUrl]);\n\n return { isLoaded, error };\n}\n","\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport type { InPostConfigType, InPostLanguage, InPostPoint } from \"./types\";\nimport { useInPostScript } from \"./use-inpost-script\";\n\n/** Props for the inline InPost GeoWidget map component. */\nexport interface InPostGeowidgetProps {\n /** InPost API Token generated in InPost Manager for your domain. Required for production map. */\n token?: string;\n /** Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'. */\n language?: InPostLanguage;\n /** Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'. */\n config?: InPostConfigType;\n /** Enable sandbox environment. Default false. */\n sandbox?: boolean;\n /** Callback triggered when user selects a parcel locker or pick-up point on the map. */\n onPointSelect?: (point: InPostPoint) => void;\n /** Callback triggered when GeoWidget finishes loading. */\n onReady?: () => void;\n /** Callback triggered on script load error. */\n onError?: (error: Error) => void;\n /** Outer container CSS class name. */\n className?: string;\n /** Inline container styles. */\n style?: React.CSSProperties;\n /** Custom SDK JavaScript URL. */\n customScriptUrl?: string;\n /** Custom SDK CSS URL. */\n customCssUrl?: string;\n}\n\nconst MOCK_POINTS: InPostPoint[] = [\n {\n name: \"WAW01M\",\n address: { line1: \"ul. Towarowa 5\", line2: \"00-838 Warszawa\" },\n address_details: {\n city: \"Warszawa\",\n street: \"Towarowa\",\n building_number: \"5\",\n post_code: \"00-838\",\n },\n location: { latitude: 52.2297, longitude: 21.0122 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Przy stacji benzynowej BP\",\n },\n {\n name: \"KRA02N\",\n address: { line1: \"ul. Floriańska 12\", line2: \"31-021 Kraków\" },\n address_details: {\n city: \"Kraków\",\n street: \"Floriańska\",\n building_number: \"12\",\n post_code: \"31-021\",\n },\n location: { latitude: 50.0647, longitude: 19.945 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Obok wejścia do sklepu\",\n },\n {\n name: \"GDA03P\",\n address: { line1: \"ul. Długa 8\", line2: \"80-827 Gdańsk\" },\n address_details: { city: \"Gdańsk\", street: \"Długa\", building_number: \"8\", post_code: \"80-827\" },\n location: { latitude: 54.352, longitude: 18.6466 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Róg ulicy Długiej i Tkackiej\",\n },\n {\n name: \"POZ04S\",\n address: { line1: \"ul. Półwiejska 42\", line2: \"61-888 Poznań\" },\n address_details: {\n city: \"Poznań\",\n street: \"Półwiejska\",\n building_number: \"42\",\n post_code: \"61-888\",\n },\n location: { latitude: 52.4064, longitude: 16.9252 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Przy centrum handlowym Stary Browar\",\n },\n];\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"inpost-geowidget\": React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement> & {\n token?: string;\n language?: string;\n config?: string;\n sandbox?: string | boolean;\n onpointselect?: string;\n },\n HTMLElement\n >;\n }\n }\n}\n\nexport const InPostGeowidget: React.FC<InPostGeowidgetProps> = ({\n token,\n language = \"pl\",\n config = \"parcelCollect\",\n sandbox = false,\n onPointSelect,\n onReady,\n onError,\n className,\n style,\n customScriptUrl,\n customCssUrl,\n}) => {\n const { isLoaded, error } = useInPostScript({\n sandbox,\n customScriptUrl,\n customCssUrl,\n });\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [selectedMock, setSelectedMock] = useState<InPostPoint | null>(null);\n\n const widgetRef = useRef<HTMLElement | null>(null);\n // eslint-disable-next-line react-hooks/purity\n const callbackNameRef = useRef<string>(`inpost_cb_${Math.random().toString(36).substring(2, 9)}`);\n\n useEffect(() => {\n if (error && onError) {\n onError(error);\n }\n }, [error, onError]);\n\n useEffect(() => {\n if (isLoaded && onReady) {\n onReady();\n }\n }, [isLoaded, onReady]);\n\n useEffect(() => {\n if (!token) return;\n\n const cbName = callbackNameRef.current;\n\n (window as unknown as Record<string, (point: InPostPoint) => void>)[cbName] = (\n point: InPostPoint\n ) => {\n if (onPointSelect) {\n onPointSelect(point);\n }\n };\n\n const el = widgetRef.current;\n const handlePointSelect = (event: Event) => {\n const customEv = event as CustomEvent<InPostPoint>;\n const point = customEv.detail || (customEv as unknown as { point: InPostPoint }).point;\n if (point && onPointSelect) {\n onPointSelect(point);\n }\n };\n\n if (el) {\n el.addEventListener(\"inpostgeowidget\", handlePointSelect);\n el.addEventListener(\"onpointselect\", handlePointSelect);\n }\n document.addEventListener(\"onpointselect\", handlePointSelect);\n\n return () => {\n delete (window as unknown as Record<string, unknown>)[cbName];\n if (el) {\n el.removeEventListener(\"inpostgeowidget\", handlePointSelect);\n el.removeEventListener(\"onpointselect\", handlePointSelect);\n }\n document.removeEventListener(\"onpointselect\", handlePointSelect);\n };\n }, [onPointSelect, isLoaded, token]);\n\n if (error) {\n return (\n <div\n className={`flex flex-col items-center justify-center min-h-[450px] bg-danger/10 border-2 border-danger rounded-xl p-6 text-center ${\n className || \"\"\n }`}\n style={style}\n >\n <p className=\"text-base font-extrabold text-danger mb-1\">Błąd ładowania Geowidget InPost</p>\n <p className=\"text-xs text-muted-foreground font-semibold max-w-sm\">\n Nie udało się pobrać skryptu mapy z serwera InPost. Sprawdź połączenie z siecią.\n </p>\n </div>\n );\n }\n\n // Fallback interactive demo picker when token is not supplied\n if (!token) {\n const filteredPoints = MOCK_POINTS.filter(\n (p) =>\n p.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n p.address.line1.toLowerCase().includes(searchQuery.toLowerCase()) ||\n p.address_details.city.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n return (\n <div\n className={`flex flex-col h-full min-h-[500px] bg-surface border-2 border-border rounded-xl p-4 font-sans text-foreground ${\n className || \"\"\n }`}\n style={style}\n >\n {/* Banner with high-contrast InPost yellow theme */}\n <div className=\"bg-gradient-to-r from-amber-400 via-amber-500 to-yellow-500 text-slate-950 rounded-xl p-4 mb-3.5 shadow-sm flex flex-col gap-1 border border-amber-600/30\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"w-2.5 h-2.5 rounded-full bg-slate-950 animate-pulse\" />\n <span className=\"font-black text-sm tracking-tight uppercase\">InPost Paczkomat®</span>\n </div>\n <span className=\"text-[0.7rem] font-black bg-slate-950 text-amber-400 px-2.5 py-0.5 rounded-md uppercase tracking-wider shadow-sm\">\n Tryb Pokazowy\n </span>\n </div>\n <p className=\"text-xs text-slate-950 font-bold leading-relaxed opacity-95\">\n Wybierz punkt z listy poniżej. Do załadowania produkcyjnej mapy przekaż prop{\" \"}\n <code className=\"bg-slate-950 text-amber-400 px-1.5 py-0.5 rounded font-mono text-[0.72rem] font-black\">\n token=\"TWOJ_TOKEN\"\n </code>\n .\n </p>\n </div>\n\n <div className=\"mb-3.5 relative\">\n <input\n type=\"text\"\n placeholder=\"Szukaj Paczkomatu (np. Warszawa, WAW01M, Towarowa)...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full px-4 py-2.5 text-sm bg-surface border-2 border-border rounded-xl outline-none text-foreground placeholder:text-muted-foreground font-bold focus:border-primary focus:ring-2 focus:ring-primary/20 shadow-sm transition-all\"\n />\n </div>\n\n <div className=\"flex-1 overflow-y-auto space-y-3 pr-1 max-h-[420px]\">\n {filteredPoints.map((p) => {\n const isSelected = selectedMock?.name === p.name;\n return (\n <div\n key={p.name}\n onClick={() => {\n setSelectedMock(p);\n if (onPointSelect) {\n onPointSelect(p);\n }\n }}\n className={`p-4 rounded-xl border-2 transition-all cursor-pointer flex items-center justify-between gap-3 ${\n isSelected\n ? \"bg-primary text-primary-foreground border-primary shadow-md\"\n : \"bg-surface border-border hover:border-primary hover:shadow-md text-foreground\"\n }`}\n >\n <div className=\"flex flex-col gap-1 min-w-0\">\n <div className=\"font-black text-base flex items-center gap-2\">\n <span\n className={\n isSelected\n ? \"text-primary-foreground font-black\"\n : \"text-foreground font-black\"\n }\n >\n Paczkomat® {p.name}\n </span>\n {p.location_description && (\n <span\n className={`text-[0.72rem] px-2.5 py-0.5 rounded-full font-bold ${isSelected ? \"bg-primary-hover text-primary-foreground\" : \"bg-muted text-primary\"}`}\n >\n {p.location_description}\n </span>\n )}\n </div>\n <div\n className={`text-xs font-bold ${isSelected ? \"text-primary-foreground/90\" : \"text-muted-foreground\"}`}\n >\n {p.address.line1}, {p.address.line2}\n </div>\n </div>\n\n <button\n type=\"button\"\n className={`px-4 py-2 rounded-lg text-xs font-black shrink-0 transition-all shadow-sm ${\n isSelected\n ? \"bg-amber-400 text-slate-950 border border-amber-500\"\n : \"bg-primary hover:bg-primary-hover text-primary-foreground\"\n }`}\n >\n {isSelected ? \"Wybrano ✓\" : \"Wybierz\"}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n if (!isLoaded) {\n return (\n <div\n className={`flex items-center justify-center min-h-[450px] bg-surface border-2 border-border rounded-xl p-6 ${\n className || \"\"\n }`}\n style={style}\n >\n <div className=\"flex flex-col items-center gap-3 text-muted-foreground\">\n <div className=\"w-9 h-9 border-4 border-primary border-t-transparent rounded-full animate-spin\" />\n <span className=\"text-sm font-extrabold text-foreground\">\n Ładowanie mapy InPost GeoWidget...\n </span>\n </div>\n </div>\n );\n }\n\n const widgetProps: Record<string, string> = {\n language,\n config: String(config).toLowerCase(),\n // eslint-disable-next-line react-hooks/refs\n onpointselect: callbackNameRef.current,\n };\n\n if (token) {\n widgetProps.token = token;\n }\n\n if (sandbox) {\n widgetProps.sandbox = \"true\";\n }\n\n return (\n <div className={`w-full h-full min-h-[450px] relative ${className || \"\"}`} style={style}>\n {React.createElement(\"inpost-geowidget\", {\n ref: widgetRef,\n ...widgetProps,\n style: { width: \"100%\", height: \"100%\", display: \"block\", minHeight: \"450px\" },\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Button } from \"../button\";\nimport { Modal, ModalTitle } from \"../modal\";\nimport { InPostGeowidget } from \"./inpost-geowidget\";\nimport type { InPostConfigType, InPostLanguage, InPostPoint } from \"./types\";\n\n/** Props for the InPost GeoWidget Modal checkout component. */\nexport interface InPostGeowidgetModalProps {\n /** Currently selected point object or point code string (e.g. 'WAW01M'). */\n value?: InPostPoint | string | null;\n /** Callback triggered when point is selected on the map. */\n onSelect?: (point: InPostPoint) => void;\n /** Trigger button label. Default 'Wybierz Paczkomat®'. */\n triggerText?: string;\n /** Modal header title. Default 'Wybierz punkt odbioru InPost'. */\n modalTitle?: string;\n /** Disable trigger button. Default false. */\n disabled?: boolean;\n /** Controlled open state of the modal. */\n open?: boolean;\n /** Callback when open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Show selected point badge under trigger button. Default true. */\n showSelectedBadge?: boolean;\n /** Outer container CSS class name. */\n className?: string;\n /** Trigger button style variant ('primary', 'secondary', 'outline', 'ghost', 'danger'). Default 'outline'. */\n buttonVariant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n /** Trigger button size ('sm', 'md', 'lg'). Default 'md'. */\n buttonSize?: \"sm\" | \"md\" | \"lg\";\n /** InPost API Token (optional for sandbox). */\n token?: string;\n /** Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'. */\n language?: InPostLanguage;\n /** Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'. */\n config?: InPostConfigType;\n /** Enable sandbox environment. Default false. */\n sandbox?: boolean;\n /** Custom SDK JavaScript URL. */\n customScriptUrl?: string;\n /** Custom SDK CSS URL. */\n customCssUrl?: string;\n}\n\nexport const InPostGeowidgetModal: React.FC<InPostGeowidgetModalProps> = ({\n value,\n onSelect,\n triggerText = \"Wybierz Paczkomat®\",\n modalTitle = \"Wybierz punkt odbioru InPost\",\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n showSelectedBadge = true,\n className = \"\",\n buttonVariant = \"outline\",\n buttonSize = \"md\",\n token,\n language,\n config,\n sandbox,\n customScriptUrl,\n customCssUrl,\n}) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const [selectedPoint, setSelectedPoint] = useState<InPostPoint | null>(\n typeof value === \"object\" && value ? value : null\n );\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenToggle = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n };\n\n const handlePointSelect = (point: InPostPoint) => {\n setSelectedPoint(point);\n if (onSelect) {\n onSelect(point);\n }\n handleOpenToggle(false);\n };\n\n const selectedCode = selectedPoint?.name || (typeof value === \"string\" ? value : null);\n const selectedAddress = selectedPoint\n ? `${selectedPoint.address?.line1 || \"\"}, ${selectedPoint.address?.line2 || \"\"}`\n : null;\n\n const isOutline = buttonVariant === \"outline\";\n\n return (\n <div className={`inline-flex flex-col gap-3 min-w-[280px] ${className}`}>\n <Button\n type=\"button\"\n variant={buttonVariant}\n size={buttonSize}\n disabled={disabled}\n onClick={() => handleOpenToggle(true)}\n className={`group w-full justify-between gap-4 text-left font-bold shadow-sm hover:shadow-md transition-all py-2.5 px-3.5 rounded-xl ${\n isOutline\n ? \"bg-surface hover:bg-muted text-foreground border-2 border-border hover:border-primary\"\n : \"border-2 border-transparent\"\n }`}\n >\n <span className=\"flex items-center gap-2.5 min-w-0\">\n <span className=\"font-black text-[0.7rem] bg-amber-400 text-slate-950 px-2.5 py-1 rounded-md shadow-sm tracking-tight uppercase border border-amber-500/40 shrink-0 group-hover:scale-105 transition-transform\">\n InPost\n </span>\n <span\n className={`truncate font-bold text-sm ${isOutline ? \"text-foreground group-hover:text-primary\" : \"\"}`}\n >\n {selectedCode ? `Paczkomat® ${selectedCode}` : triggerText}\n </span>\n </span>\n <span\n className={`text-xs font-black px-2.5 py-1 rounded-md shrink-0 shadow-sm uppercase tracking-wide transition-all ${\n isOutline\n ? \"bg-primary text-primary-foreground group-hover:bg-primary-hover\"\n : \"bg-amber-400 text-slate-950\"\n }`}\n >\n {selectedCode ? \"Zmień\" : \"Wybierz\"}\n </span>\n </Button>\n\n {showSelectedBadge && selectedCode && (\n <div className=\"text-xs bg-surface text-foreground border-2 border-border p-3.5 rounded-xl flex flex-col gap-1.5 shadow-md\">\n <div className=\"font-bold flex items-center justify-between gap-2\">\n <span className=\"flex items-center gap-2 text-foreground\">\n <span className=\"w-2.5 h-2.5 rounded-full bg-primary shadow-sm animate-pulse\" />\n <span className=\"font-black text-sm text-primary\">Paczkomat® {selectedCode}</span>\n </span>\n <span className=\"text-[0.65rem] bg-amber-400 text-slate-950 font-black px-2 py-0.5 rounded uppercase tracking-wider\">\n Wybrany\n </span>\n </div>\n {selectedAddress && (\n <div className=\"text-muted-foreground text-[0.78rem] font-medium pl-4 border-l-2 border-border\">\n {selectedAddress}\n </div>\n )}\n </div>\n )}\n\n <Modal open={isOpen} onClose={() => handleOpenToggle(false)} width={850}>\n <div className=\"flex items-center gap-3 pb-3.5 border-b border-border\">\n <span className=\"font-black text-xs bg-amber-400 text-slate-950 px-2.5 py-1 rounded-md shadow-sm tracking-tight uppercase border border-amber-500/40 shrink-0\">\n InPost\n </span>\n <ModalTitle className=\"m-0 text-xl font-black text-primary tracking-tight\">\n {modalTitle}\n </ModalTitle>\n </div>\n\n <div className=\"w-full h-[600px] min-h-[500px] mt-3.5 rounded-xl overflow-hidden\">\n {isOpen && (\n <InPostGeowidget\n token={token}\n language={language}\n config={config}\n sandbox={sandbox}\n customScriptUrl={customScriptUrl}\n customCssUrl={customCssUrl}\n onPointSelect={handlePointSelect}\n />\n )}\n </div>\n </Modal>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/alert.tsx","../src/components/spinner.tsx","../src/components/progress.tsx","../src/components/field.tsx","../src/components/form-field.tsx","../src/components/progress-ring.tsx","../src/components/input.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.tsx","../src/components/toggle-group.tsx","../src/components/card.tsx","../src/components/stat.tsx","../src/components/avatar.tsx","../src/components/tabs.tsx","../src/components/accordion.tsx","../src/components/dropdown-menu.tsx","../src/components/breadcrumb.tsx","../src/components/pagination.tsx","../src/components/bottom-navigation.tsx","../src/components/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx","../src/components/page-header.tsx","../src/components/section-header.tsx","../src/components/empty-state.tsx","../src/components/metric-card.tsx","../src/components/data-table.tsx","../src/components/error-state.tsx","../src/components/skeleton.tsx","../src/components/dashboard-shell.tsx","../src/components/settings-layout.tsx","../src/components/detail-page-layout.tsx","../src/components/table-toolbar.tsx","../src/components/confirm-dialog.tsx","../src/components/drawer.tsx","../src/components/command-palette.tsx","../src/components/sidebar-nav.tsx","../src/components/fab.tsx","../src/components/bottom-sheet.tsx","../src/components/kbd.tsx","../src/components/code-block.tsx","../src/components/separator.tsx","../src/components/popover.tsx","../src/components/combobox.tsx","../src/components/calendar-internals.ts","../src/components/calendar-grid.tsx","../src/components/calendar.tsx","../src/components/date-picker.tsx","../src/components/range-calendar.tsx","../src/components/date-range-picker.tsx","../src/components/dropzone.tsx","../src/components/file-upload-internals.ts","../src/components/file-upload.tsx","../src/components/timeline.tsx","../src/components/stepper.tsx","../src/components/app-shell.tsx","../src/components/rating/rating.tsx","../src/components/rating/rating-field.tsx","../src/components/rating/rating-summary.tsx","../src/components/pricing-card.tsx","../src/components/blog-card.tsx","../src/components/project-card.tsx","../src/components/inbox-popover.tsx","../src/components/color-picker.tsx","../src/components/image-gallery.tsx","../src/components/inpost-geowidget/use-inpost-script.ts","../src/components/inpost-geowidget/inpost-geowidget.tsx","../src/components/inpost-geowidget/inpost-geowidget-modal.tsx","../src/components/chart-math.ts","../src/components/chart-primitives.tsx","../src/components/sparkline.tsx","../src/components/line-chart.tsx","../src/components/bar-chart.tsx","../src/components/donut-chart.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx","React2","React3","React4","React5","React6","React7","React8","range","React9","React10","React11","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21","React22","React23","container","React24","React25","React26","Fragment","React27","React28","React29","React30","React31","React32","React33","React34","React35","React36","React37","React38","React39","React40","React41","React42","React43","Combobox","ComboboxField","React44","CalendarGrid","React45","Calendar","React46","DatePicker","DatePickerField","React47","RangeCalendar","displayFormat","React48","DateRangePicker","DateRangePickerField","React49","Dropzone","React50","FileUpload","FileUploadField","React51","sizeClasses","React52","React53","React54","React55","React56","React57","React58","React59","React60","React61","React62","useState","useEffect","useRef","commands","rawBarWidth","barWidth","rawBarHeight","barHeight","React65","React66","minVal","maxVal","React67","React68","React69"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind-aware conflict resolution.\n * `cn(\"px-2\", condition && \"px-4\")` → keeps the last conflicting utility.\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap select-none\",\n \"font-sans font-semibold leading-none\",\n \"border border-transparent rounded-kj-md cursor-pointer\",\n \"transition-[background-color,color,border-color,box-shadow,transform] duration-150\",\n \"active:translate-y-px\",\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-primary-foreground hover:bg-primary-hover\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n outline:\n \"bg-transparent text-foreground border-border hover:bg-muted hover:border-muted-foreground\",\n ghost: \"bg-transparent text-foreground hover:bg-muted\",\n danger: \"bg-danger text-white hover:brightness-95\",\n },\n size: {\n sm: \"h-8 px-3 text-[0.8rem] rounded-kj-sm\",\n md: \"h-10 px-[1.1rem] text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10 p-0\",\n \"icon-sm\": \"h-8 w-8 p-0 rounded-kj-sm\",\n },\n },\n defaultVariants: { variant: \"primary\", size: \"md\" },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Shows a spinner and disables interaction. */\n loading?: boolean;\n /** Icon rendered before the label. */\n leadingIcon?: React.ReactNode;\n /** Icon rendered after the label. */\n trailingIcon?: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n { className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), loading && \"relative\", className)}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <span\n aria-hidden\n className=\"absolute h-[1em] w-[1em] rounded-full border-2 border-current border-t-transparent animate-spin\"\n />\n )}\n <span className={cn(\"contents\", loading && \"invisible\")}>\n {leadingIcon && (\n <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>\n )}\n </span>\n </button>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1.5 px-2.5 py-0.5 text-xs font-semibold leading-snug rounded-full border border-transparent\",\n {\n variants: {\n variant: {\n neutral: \"bg-muted text-muted-foreground\",\n primary: \"bg-primary/15 text-primary-hover dark:text-primary\",\n secondary: \"bg-secondary/15 text-secondary-hover dark:text-secondary\",\n success: \"bg-success-surface text-success\",\n warning: \"bg-warning-surface text-warning\",\n danger: \"bg-danger-surface text-danger\",\n info: \"bg-info-surface text-info\",\n solid: \"bg-primary text-primary-foreground\",\n },\n },\n defaultVariants: { variant: \"neutral\" },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Render a leading status dot. */\n dot?: boolean;\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, dot, children, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props}>\n {dot && <span className=\"h-1.5 w-1.5 rounded-full bg-current\" aria-hidden />}\n {children}\n </span>\n )\n);\nBadge.displayName = \"Badge\";\n\nexport { badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst alertVariants = cva(\"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\", {\n variants: {\n variant: {\n info: \"bg-info-surface border-info/30\",\n success: \"bg-success-surface border-success/30\",\n warning: \"bg-warning-surface border-warning/30\",\n danger: \"bg-danger-surface border-danger/30\",\n },\n },\n defaultVariants: { variant: \"info\" },\n});\n\nconst iconColor = {\n info: \"text-info\",\n success: \"text-success\",\n warning: \"text-warning\",\n danger: \"text-danger\",\n} as const;\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n VariantProps<typeof alertVariants> {\n /** Optional leading icon (e.g. an SVG). Inherits the variant color. */\n icon?: React.ReactNode;\n title?: React.ReactNode;\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"info\", icon, title, children, ...props }, ref) => (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\n {icon && (\n <span\n className={cn(\n \"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\",\n iconColor[variant ?? \"info\"]\n )}\n >\n {icon}\n </span>\n )}\n <div className=\"text-foreground\">\n {title && <p className=\"font-bold m-0 mb-0.5 text-sm\">{title}</p>}\n {children && <p className=\"m-0 opacity-85\">{children}</p>}\n </div>\n </div>\n )\n);\nAlert.displayName = \"Alert\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Diameter in px. Default 24. */\n size?: number;\n}\n\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(\n ({ className, size = 24, style, ...props }, ref) => (\n <span\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n \"inline-block rounded-full border-[2.5px] border-muted border-t-primary animate-spin align-middle\",\n className\n )}\n style={{ width: size, height: size, ...style }}\n {...props}\n />\n )\n);\nSpinner.displayName = \"Spinner\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 0–100. */\n value?: number;\n tone?: \"primary\" | \"secondary\";\n /** Extra classes applied to the inner bar span — use for animation, transform-origin, etc. */\n barClassName?: string;\n}\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value = 0, tone = \"primary\", barClassName, ...props }, ref) => {\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={props[\"aria-label\"] ?? \"Progress\"}\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\"h-2 w-full overflow-hidden rounded-full bg-muted\", className)}\n {...props}\n >\n <span\n className={cn(\n \"block h-full rounded-full transition-[width] duration-500 ease-out\",\n tone === \"secondary\" ? \"bg-secondary\" : \"bg-primary\",\n barClassName\n )}\n style={{ width: `${pct}%` }}\n />\n </div>\n );\n }\n);\nProgress.displayName = \"Progress\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** Append a red required marker. */\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)}\n {...props}\n >\n {children}\n {required && <span className=\"text-danger\"> *</span>}\n </label>\n )\n);\nLabel.displayName = \"Label\";\n\nexport interface HintProps extends React.HTMLAttributes<HTMLSpanElement> {\n error?: boolean;\n}\n\nexport const Hint = React.forwardRef<HTMLSpanElement, HintProps>(\n ({ className, error, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\"text-[0.76rem]\", error ? \"text-danger\" : \"text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nHint.displayName = \"Hint\";\n\n/** Vertical label + control + hint group. */\nexport const Field = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5\", className)} {...props} />\n )\n);\nField.displayName = \"Field\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Label, Hint } from \"./field\";\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n children: React.ReactNode;\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, label, hint, error, required, children, ...props }, ref) => {\n const id = React.useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n\n const child = React.Children.only(children) as React.ReactElement<{\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean | \"true\" | \"false\";\n required?: boolean;\n }>;\n const clonedChild = React.cloneElement(child, {\n id: child.props.id ?? id,\n \"aria-describedby\":\n cn(hint && hintId, error && errorId, child.props[\"aria-describedby\"]) || undefined,\n \"aria-invalid\": error ? \"true\" : undefined,\n required: child.props.required ?? required,\n });\n\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5 w-full\", className)} {...props}>\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n {clonedChild}\n {hint && !error && <Hint id={hintId}>{hint}</Hint>}\n {error && (\n <Hint id={errorId} error>\n {error}\n </Hint>\n )}\n </div>\n );\n }\n);\nFormField.displayName = \"FormField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { FormField } from \"./form-field\";\n\nexport type ProgressRingSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ProgressRingTone = \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface ProgressRingProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current progress value. Defaults to 0. */\n value?: number;\n /** Minimum progress value. Defaults to 0. */\n min?: number;\n /** Maximum progress value. Defaults to 100. */\n max?: number;\n /** Preset size of the ring. Defaults to \"md\". */\n size?: ProgressRingSize;\n /** Override stroke thickness (in px). */\n strokeWidth?: number;\n /** Color tone of the progress indicator. Defaults to \"primary\". */\n tone?: ProgressRingTone;\n /** Whether to show the percentage text inside the ring center if no children are provided. Defaults to false. */\n showValue?: boolean;\n /** Optional formatter for the center percentage display. */\n formatValue?: (value: number, percentage: number) => React.ReactNode;\n /** Additional CSS class for the background track circle. */\n trackClassName?: string;\n /** Additional CSS class for the progress indicator circle. */\n indicatorClassName?: string;\n /** Custom center content. */\n children?: React.ReactNode;\n}\n\nconst sizeDimensions: Record<ProgressRingSize, number> = {\n sm: 36,\n md: 64,\n lg: 96,\n xl: 128,\n};\n\nconst defaultStrokeWidths: Record<ProgressRingSize, number> = {\n sm: 3.5,\n md: 6,\n lg: 8,\n xl: 10,\n};\n\nconst textSizeClasses: Record<ProgressRingSize, string> = {\n sm: \"text-[0.65rem] font-semibold leading-none\",\n md: \"text-xs font-semibold leading-none\",\n lg: \"text-base font-bold leading-none\",\n xl: \"text-xl font-bold leading-none\",\n};\n\nconst toneClasses: Record<ProgressRingTone, string> = {\n primary: \"text-primary stroke-current\",\n secondary: \"text-secondary stroke-current\",\n success: \"text-success stroke-current\",\n warning: \"text-warning stroke-current\",\n danger: \"text-danger stroke-current\",\n info: \"text-info stroke-current\",\n};\n\nexport const ProgressRing = React.forwardRef<HTMLDivElement, ProgressRingProps>(\n (\n {\n className,\n style,\n value = 0,\n min = 0,\n max = 100,\n size = \"md\",\n strokeWidth,\n tone = \"primary\",\n showValue = false,\n formatValue,\n trackClassName,\n indicatorClassName,\n children,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref\n ) => {\n const range = max > min ? max - min : 100;\n const clampedValue = Math.max(min, Math.min(max, value));\n const percentage = Math.max(0, Math.min(100, ((clampedValue - min) / range) * 100));\n\n const dimension = sizeDimensions[size];\n const strokeWidthVal = strokeWidth ?? defaultStrokeWidths[size];\n const radius = Math.max(0, (dimension - strokeWidthVal) / 2);\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n const computedAriaLabel = ariaLabel ?? (props[\"aria-labelledby\"] ? undefined : \"Progress\");\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={computedAriaLabel}\n aria-valuenow={clampedValue}\n aria-valuemin={min}\n aria-valuemax={max}\n className={cn(\"relative inline-flex items-center justify-center shrink-0\", className)}\n style={{ width: dimension, height: dimension, ...style }}\n {...props}\n >\n <svg\n width={dimension}\n height={dimension}\n viewBox={`0 0 ${dimension} ${dimension}`}\n className=\"-rotate-90 transform\"\n >\n {/* Background track circle */}\n <circle\n cx={dimension / 2}\n cy={dimension / 2}\n r={radius}\n strokeWidth={strokeWidthVal}\n className={cn(\"stroke-muted/30 fill-none\", trackClassName)}\n />\n {/* Progress indicator circle */}\n <circle\n cx={dimension / 2}\n cy={dimension / 2}\n r={radius}\n strokeWidth={strokeWidthVal}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap={percentage === 0 ? \"butt\" : \"round\"}\n className={cn(\n \"fill-none transition-[stroke-dashoffset,opacity] duration-500 ease-in-out\",\n percentage === 0 && \"opacity-0\",\n toneClasses[tone],\n indicatorClassName\n )}\n />\n </svg>\n\n {(children || showValue) && (\n <div\n className={cn(\n \"absolute inset-0 flex flex-col items-center justify-center text-center text-foreground p-1\",\n textSizeClasses[size]\n )}\n >\n {children ??\n (formatValue\n ? formatValue(clampedValue, Math.round(percentage))\n : `${Math.round(percentage)}%`)}\n </div>\n )}\n </div>\n );\n }\n);\nProgressRing.displayName = \"ProgressRing\";\n\nexport interface ProgressRingFieldProps extends ProgressRingProps {\n /** Field label text. */\n label: string;\n /** Helper hint text displayed beneath the control. */\n hint?: string;\n /** Error message displayed beneath the control. */\n error?: string;\n /** Renders a required indicator (*). */\n required?: boolean;\n /** Class name for the outer field wrapper div. */\n fieldClassName?: string;\n}\n\nexport const ProgressRingField = React.forwardRef<HTMLDivElement, ProgressRingFieldProps>(\n ({ label, hint, error, required, fieldClassName, ...ringProps }, ref) => {\n return (\n <FormField\n label={label}\n hint={hint}\n error={error}\n required={required}\n className={fieldClassName}\n >\n <ProgressRing ref={ref} aria-label={ringProps[\"aria-label\"] ?? label} {...ringProps} />\n </FormField>\n );\n }\n);\nProgressRingField.displayName = \"ProgressRingField\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Visual error state (red border + ring). */\n error?: boolean;\n /** Icon shown inside the field, leading edge. */\n leadingIcon?: React.ReactNode;\n}\n\nconst baseField =\n \"w-full font-sans text-sm text-foreground bg-surface border rounded-kj-md px-[0.85rem] \" +\n \"transition-[border-color,box-shadow] duration-150 placeholder:text-muted-foreground \" +\n \"hover:border-control-border-hover focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30 \" +\n \"disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed\";\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, error, leadingIcon, ...props }, ref) => {\n const field = (\n <input\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n baseField,\n \"py-[calc(0.6rem*var(--kj-density,1))]\",\n error ? \"border-danger focus:border-danger focus:ring-danger/25\" : \"border-input\",\n leadingIcon && \"pl-[2.3rem]\",\n className\n )}\n {...props}\n />\n );\n if (!leadingIcon) return field;\n return (\n <span className=\"relative flex items-center\">\n <span className=\"absolute left-[0.8rem] text-muted-foreground [&_svg]:h-[1.05rem] [&_svg]:w-[1.05rem] pointer-events-none\">\n {leadingIcon}\n </span>\n {field}\n </span>\n );\n }\n);\nInput.displayName = \"Input\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => (\n <textarea\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n baseField,\n \"py-[calc(0.6rem*var(--kj-density,1))] min-h-[84px] leading-relaxed resize-y\",\n error ? \"border-danger focus:border-danger focus:ring-danger/25\" : \"border-input\",\n className\n )}\n {...props}\n />\n )\n);\nTextarea.displayName = \"Textarea\";\n\nexport interface TextFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Input>, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n ({ label, hint, error, required, className, ...props }, ref) => {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Input ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nTextField.displayName = \"TextField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean;\n}\n\nconst chevron =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\";\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, error, style, children, ...props }, ref) => (\n <select\n ref={ref}\n aria-invalid={error || undefined}\n className={cn(\n \"w-full appearance-none cursor-pointer font-sans text-sm text-foreground bg-surface\",\n \"border rounded-kj-md py-[calc(0.6rem*var(--kj-density,1))] pl-[0.85rem] pr-9\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n \"disabled:bg-muted disabled:text-muted-foreground disabled:cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n className\n )}\n style={{\n backgroundImage: `url(\"${chevron}\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"right 0.75rem center\",\n backgroundSize: \"1rem\",\n ...style,\n }}\n {...props}\n >\n {children}\n </select>\n )\n);\nSelect.displayName = \"Select\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface SelectFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Select>, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const SelectField = React.forwardRef<HTMLSelectElement, SelectFieldProps>(\n ({ label, hint, error, required, className, children, ...props }, ref) => {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Select ref={ref} error={!!error} {...props}>\n {children}\n </Select>\n </FormField>\n );\n }\n);\nSelectField.displayName = \"SelectField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input ref={ref} id={inputId} type=\"checkbox\" className=\"peer sr-only\" {...props} />\n <span className=\"grid place-items-center h-[1.15rem] w-[1.15rem] shrink-0 rounded-[0.4rem] border-[1.5px] border-input bg-surface transition-all duration-150 peer-checked:bg-primary peer-checked:border-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 peer-checked:[&_svg]:opacity-100 peer-checked:[&_svg]:scale-100\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n {label}\n </label>\n );\n }\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ className, label, id, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input ref={ref} id={inputId} type=\"radio\" className=\"peer sr-only\" {...props} />\n <span className=\"grid place-items-center h-[1.15rem] w-[1.15rem] shrink-0 rounded-full border-[1.5px] border-input bg-surface transition-all duration-150 peer-checked:bg-primary peer-checked:border-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 peer-checked:[&>span]:opacity-100 peer-checked:[&>span]:scale-100\">\n <span className=\"h-2 w-2 rounded-full bg-primary-foreground opacity-0 scale-[0.4] transition-all duration-150\" />\n </span>\n {label}\n </label>\n );\n }\n);\nRadio.displayName = \"Radio\";\n\nimport { Hint } from \"./field\";\n\nexport interface CheckboxFieldProps extends React.ComponentPropsWithoutRef<typeof Checkbox> {\n label: React.ReactNode;\n hint?: string;\n error?: string;\n}\n\nexport const CheckboxField = React.forwardRef<HTMLInputElement, CheckboxFieldProps>(\n ({ label, hint, error, className, ...props }, ref) => {\n const id = React.useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n return (\n <div className={cn(\"flex flex-col gap-1 w-full\", className)}>\n <Checkbox\n ref={ref}\n id={id}\n label={label}\n aria-describedby={cn(hint && hintId, error && errorId) || undefined}\n aria-invalid={error ? \"true\" : undefined}\n {...props}\n />\n {hint && !error && (\n <Hint id={hintId} className=\"pl-[1.8rem]\">\n {hint}\n </Hint>\n )}\n {error && (\n <Hint id={errorId} error className=\"pl-[1.8rem]\">\n {error}\n </Hint>\n )}\n </div>\n );\n }\n);\nCheckboxField.displayName = \"CheckboxField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, label, id, checked, defaultChecked, onChange, ...props }, ref) => {\n const autoId = React.useId();\n const inputId = id ?? autoId;\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = React.useState(Boolean(defaultChecked));\n const isChecked = isControlled ? Boolean(checked) : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e);\n };\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\",\n className\n )}\n >\n <input\n ref={ref}\n id={inputId}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={isChecked}\n checked={isControlled ? checked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n onChange={handleChange}\n className=\"peer sr-only\"\n {...props}\n />\n <span className=\"relative h-[1.45rem] w-[2.6rem] shrink-0 rounded-full bg-input transition-colors duration-200 peer-checked:bg-primary peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/35 after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-[calc(1.45rem-4px)] after:w-[calc(1.45rem-4px)] after:rounded-full after:bg-white after:shadow-kj-sm after:transition-transform after:duration-200 peer-checked:after:translate-x-[1.15rem]\" />\n {label}\n </label>\n );\n }\n);\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type SliderProps = React.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Range slider styled with the kit's primary token. Thumb styling lives in a\n * scoped <style> tag because pseudo-elements (::-webkit-slider-thumb) can't be\n * expressed as Tailwind utilities.\n */\nexport const Slider = React.forwardRef<HTMLInputElement, SliderProps>(\n ({ className, style, value, defaultValue, min = 0, max = 100, onChange, ...props }, ref) => {\n const [localValue, setLocalValue] = React.useState<number>(Number(defaultValue ?? value ?? 50));\n const isControlled = value !== undefined;\n const currentVal = isControlled ? Number(value) : localValue;\n\n const numMin = Number(min);\n const numMax = Number(max);\n const percentage = Math.min(\n 100,\n Math.max(0, ((currentVal - numMin) / (numMax - numMin)) * 100)\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setLocalValue(Number(e.target.value));\n }\n onChange?.(e);\n };\n\n return (\n <input\n ref={ref}\n type=\"range\"\n value={value}\n defaultValue={defaultValue}\n min={min}\n max={max}\n onChange={handleChange}\n style={{\n background: `linear-gradient(to right, var(--kj-primary) ${percentage}%, var(--kj-border, rgba(120, 120, 128, 0.2)) ${percentage}%)`,\n ...style,\n }}\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full appearance-none cursor-pointer accent-primary\",\n className\n )}\n {...props}\n />\n );\n }\n);\nSlider.displayName = \"Slider\";\n\n/** Inject once near the app root (or rely on the package stylesheet). */\nexport const sliderThumbCSS = `\n.kj-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:9999px;background:var(--kj-primary);border:3px solid var(--kj-surface);box-shadow:var(--kj-shadow-sm);cursor:pointer}\n.kj-slider::-moz-range-thumb{width:18px;height:18px;border-radius:9999px;background:var(--kj-primary);border:3px solid var(--kj-surface);box-shadow:var(--kj-shadow-sm);cursor:pointer}\n`;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SegmentedOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface SegmentedProps<T extends string> {\n options: SegmentedOption<T>[];\n value: T;\n onChange: (value: T) => void;\n className?: string;\n \"aria-label\"?: string;\n}\n\n/** Segmented control / single-select toggle group. Controlled. */\nexport function Segmented<T extends string>({\n options,\n value,\n onChange,\n className,\n ...props\n}: SegmentedProps<T>) {\n return (\n <div\n role=\"tablist\"\n className={cn(\"inline-flex gap-0.5 p-[3px] rounded-kj-md bg-muted\", className)}\n {...props}\n >\n {options.map((opt) => {\n const active = opt.value === value;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onChange(opt.value)}\n className={cn(\n \"px-3.5 py-1.5 text-[0.82rem] font-semibold rounded-[calc(var(--kj-radius-md)-3px)] cursor-pointer transition-all duration-150\",\n active\n ? \"bg-surface text-foreground shadow-kj-xs\"\n : \"bg-transparent text-muted-foreground hover:text-foreground\"\n )}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ToggleGroupOption<T extends string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface ToggleGroupProps<T extends string> {\n options: ToggleGroupOption<T>[];\n value: T[];\n onChange: (value: T[]) => void;\n disabled?: boolean;\n className?: string;\n \"aria-label\": string;\n}\n\n/** Multi-select toggle row. Always controlled — each button's pressed state is independent. */\nexport function ToggleGroup<T extends string>({\n options,\n value,\n onChange,\n disabled,\n className,\n ...props\n}: ToggleGroupProps<T>) {\n const toggle = (optionValue: T) => {\n if (disabled) return;\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onChange(next);\n };\n\n return (\n <div\n role=\"group\"\n className={cn(\"inline-flex gap-0.5 p-[3px] rounded-kj-md bg-muted\", className)}\n {...props}\n >\n {options.map((opt) => {\n const active = value.includes(opt.value);\n return (\n <button\n key={opt.value}\n type=\"button\"\n aria-pressed={active}\n disabled={disabled}\n onClick={() => toggle(opt.value)}\n className={cn(\n \"px-3.5 py-1.5 text-[0.82rem] font-semibold rounded-[calc(var(--kj-radius-md)-3px)] cursor-pointer transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50\",\n active\n ? \"bg-surface text-foreground shadow-kj-xs\"\n : \"bg-transparent text-muted-foreground hover:text-foreground\"\n )}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends Omit<React.AllHTMLAttributes<HTMLElement>, \"as\"> {\n as?: React.ElementType;\n /** Drop the border + heavier shadow for a floating look. */\n elevated?: boolean;\n /** Adds hover lift effect — translate-y + shadow. For keyboard accessibility pair with `as=\"a\"` or `as=\"button\"`. */\n interactive?: boolean;\n}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(\n ({ as: Tag = \"div\", className, elevated, interactive, ...props }, ref) => (\n <Tag\n ref={ref}\n className={cn(\n \"bg-card text-card-foreground rounded-kj-xl overflow-hidden border\",\n elevated ? \"border-transparent shadow-kj-lg\" : \"border-border shadow-kj-sm\",\n interactive &&\n \"cursor-pointer transition-all duration-300 hover:-translate-y-1 hover:shadow-kj-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n )\n);\nCard.displayName = \"Card\";\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[1.35rem] flex flex-col gap-1\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, children, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props}>\n {children}\n </h3>\n));\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\n/** Body region with default padding. */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-[1.35rem] pb-[1.35rem]\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\",\n className\n )}\n {...props}\n />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport interface StatProps extends React.HTMLAttributes<HTMLDivElement> {\n label: React.ReactNode;\n value: React.ReactNode;\n /** e.g. \"+12.3% mdm\" */\n delta?: React.ReactNode;\n trend?: \"up\" | \"down\";\n}\n\nexport const Stat = React.forwardRef<HTMLDivElement, StatProps>(\n ({ className, label, value, delta, trend, ...props }, ref) => (\n <Card ref={ref} className={cn(\"p-[1.35rem] flex flex-col gap-2\", className)} {...props}>\n <span className=\"text-[0.78rem] font-semibold uppercase tracking-[0.05em] text-muted-foreground\">\n {label}\n </span>\n <span className=\"text-[2rem] font-bold tracking-[-0.03em] tabular-nums leading-none\">\n {value}\n </span>\n {delta && (\n <span\n className={cn(\n \"inline-flex items-center gap-1 text-[0.8rem] font-semibold\",\n trend === \"down\" ? \"text-danger\" : \"text-success\"\n )}\n >\n {trend === \"down\" ? \"▼\" : \"▲\"} {delta}\n </span>\n )}\n </Card>\n )\n);\nStat.displayName = \"Stat\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst avatarVariants = cva(\n \"grid place-items-center shrink-0 rounded-full font-semibold border-2 border-surface\",\n {\n variants: {\n size: {\n sm: \"h-7 w-7 text-[0.7rem]\",\n md: \"h-9 w-9 text-[0.8rem]\",\n lg: \"h-12 w-12 text-base\",\n },\n tone: {\n secondary: \"bg-secondary text-secondary-foreground\",\n primary: \"bg-primary text-primary-foreground\",\n info: \"bg-info text-white\",\n muted: \"bg-muted text-muted-foreground\",\n },\n },\n defaultVariants: { size: \"md\", tone: \"secondary\" },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n /** Image URL; falls back to initials/children when absent. */\n src?: string;\n alt?: string;\n /** Show an online status dot. */\n status?: boolean;\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, tone, src, alt, status, children, ...props }, ref) => {\n const node = (\n <span\n ref={ref}\n className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)}\n {...props}\n >\n {src ? <img src={src} alt={alt} className=\"h-full w-full object-cover\" /> : children}\n </span>\n );\n if (!status) return node;\n return (\n <span className=\"relative inline-flex\">\n {node}\n <span className=\"absolute -right-px -bottom-px h-[0.7rem] w-[0.7rem] rounded-full bg-success border-2 border-surface\" />\n </span>\n );\n }\n);\nAvatar.displayName = \"Avatar\";\n\n/** Overlapping cluster of avatars. */\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex [&>*:not(:first-child)]:-ml-2.5\", className)} {...props} />\n )\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface TabsCtx {\n value: string;\n setValue: (v: string) => void;\n /** Instance-unique prefix so multiple Tabs on one page never share DOM ids. */\n uid: string;\n}\nconst TabsContext = React.createContext<TabsCtx | null>(null);\nfunction useTabs() {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error(\"Tabs.* must be used within <Tabs>\");\n return ctx;\n}\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Controlled active value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\n const uid = React.useId();\n const current = value ?? internal;\n const setValue = React.useCallback(\n (v: string) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange]\n );\n return (\n <TabsContext.Provider value={{ value: current, setValue, uid }}>\n <div className={className} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, onKeyDown, ...props }, ref) => {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = e.currentTarget;\n const tabs = Array.from(container.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]'));\n if (tabs.length === 0) return;\n\n const activeIndex = tabs.findIndex((tab) => tab.getAttribute(\"aria-selected\") === \"true\");\n let newIndex = activeIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n newIndex = (activeIndex + 1) % tabs.length;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n newIndex = (activeIndex - 1 + tabs.length) % tabs.length;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"Home\") {\n e.preventDefault();\n newIndex = 0;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n } else if (e.key === \"End\") {\n e.preventDefault();\n newIndex = tabs.length - 1;\n tabs[newIndex].focus();\n tabs[newIndex].click();\n }\n\n onKeyDown?.(e);\n };\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex gap-1 border-b border-border overflow-x-auto whitespace-nowrap [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n );\n }\n);\nTabsList.displayName = \"TabsList\";\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, value, children, ...props }, ref) => {\n const { value: current, setValue, uid } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={`tabs-trigger-${uid}-${value}`}\n aria-controls={`tabs-panel-${uid}-${value}`}\n aria-selected={active}\n tabIndex={active ? 0 : -1}\n onClick={() => setValue(value)}\n className={cn(\n \"relative px-[0.9rem] py-2.5 text-sm font-semibold cursor-pointer transition-colors duration-150 outline-none shrink-0 whitespace-nowrap\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:rounded-sm\",\n \"after:content-[''] after:absolute after:left-[0.9rem] after:right-[0.9rem] after:-bottom-px after:h-0.5 after:rounded-sm after:transition-colors\",\n active\n ? \"text-foreground after:bg-primary\"\n : \"text-muted-foreground hover:text-foreground after:bg-transparent\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nTabsTrigger.displayName = \"TabsTrigger\";\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, value, ...props }, ref) => {\n const { value: current, uid } = useTabs();\n const active = current === value;\n if (!active) return null;\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n id={`tabs-panel-${uid}-${value}`}\n aria-labelledby={`tabs-trigger-${uid}-${value}`}\n tabIndex={0}\n className={cn(\"pt-5 text-[0.9rem] text-muted-foreground outline-none\", className)}\n {...props}\n />\n );\n }\n);\nTabsContent.displayName = \"TabsContent\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface AccordionCtx {\n open: string[];\n toggle: (v: string) => void;\n}\nconst AccordionContext = React.createContext<AccordionCtx | null>(null);\n\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \"single\" closes others when one opens. */\n type?: \"single\" | \"multiple\";\n defaultValue?: string[];\n}\n\nexport function Accordion({\n type = \"single\",\n defaultValue = [],\n className,\n children,\n ...props\n}: AccordionProps) {\n const [open, setOpen] = React.useState<string[]>(defaultValue);\n const toggle = React.useCallback(\n (v: string) => {\n setOpen((prev) => {\n const isOpen = prev.includes(v);\n if (type === \"single\") return isOpen ? [] : [v];\n return isOpen ? prev.filter((x) => x !== v) : [...prev, v];\n });\n },\n [type]\n );\n return (\n <AccordionContext.Provider value={{ open, toggle }}>\n <div\n className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)}\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nconst ItemContext = React.createContext<string>(\"\");\n\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ className, value, ...props }, ref) => (\n <ItemContext.Provider value={value}>\n <div\n ref={ref}\n className={cn(\"border-t border-border first:border-t-0\", className)}\n {...props}\n />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, children, ...props }, ref) => {\n const ctx = React.useContext(AccordionContext)!;\n const value = React.useContext(ItemContext);\n const isOpen = ctx.open.includes(value);\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={isOpen}\n onClick={() => ctx.toggle(value)}\n className={cn(\n \"w-full flex justify-between items-center gap-4 text-left px-[1.2rem] py-4 bg-card text-foreground text-[0.9rem] font-semibold cursor-pointer hover:bg-muted transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n <svg\n className={cn(\n \"shrink-0 text-muted-foreground transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n});\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n const ctx = React.useContext(AccordionContext)!;\n const value = React.useContext(ItemContext);\n const isOpen = ctx.open.includes(value);\n return (\n <div\n ref={ref}\n className={cn(\n \"grid transition-[grid-template-rows] duration-200 ease-out\",\n isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\"\n )}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div\n className={cn(\"px-[1.2rem] pt-3 pb-4 text-[0.85rem] text-muted-foreground\", className)}\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\nAccordionContent.displayName = \"AccordionContent\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface MenuCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n}\nconst MenuContext = React.createContext<MenuCtx | null>(null);\n\nexport function DropdownMenu({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = React.useState(false);\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && setOpen(false);\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open]);\n\n return (\n <MenuContext.Provider value={{ open, setOpen }}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </MenuContext.Provider>\n );\n}\n\nexport const DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { asChild?: boolean }\n>(({ onClick, asChild, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\n if (asChild) {\n const child = React.Children.only(props.children) as React.ReactElement<\n React.ComponentPropsWithRef<\"button\">\n >;\n return React.cloneElement(child, {\n ref,\n ...props,\n ...child.props,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n child.props.onClick?.(e);\n },\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": ctx.open,\n });\n }\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={ctx.open}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n {...props}\n />\n );\n});\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: \"start\" | \"end\";\n}\n\nexport function DropdownMenuContent({\n className,\n align = \"start\",\n children,\n ...props\n}: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!ctx.open) return;\n const container = ref.current;\n if (container) {\n const items = Array.from(\n container.querySelectorAll<HTMLButtonElement | HTMLAnchorElement>('[role=\"menuitem\"]')\n );\n if (items.length > 0) {\n setTimeout(() => items[0].focus(), 50);\n }\n }\n }, [ctx.open]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = ref.current;\n if (!container) return;\n\n const items = Array.from(container.querySelectorAll<HTMLElement>('[role=\"menuitem\"]'));\n if (items.length === 0) return;\n\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % items.length;\n items[nextIndex].focus();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + items.length) % items.length;\n items[prevIndex].focus();\n } else if (e.key === \"Tab\" || e.key === \"Escape\") {\n ctx.setOpen(false);\n }\n };\n\n if (!ctx.open) return null;\n return (\n <div\n ref={ref}\n role=\"menu\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n className={cn(\n \"absolute top-[calc(100%+6px)] z-40 min-w-[200px] p-1.5 rounded-kj-md bg-surface border border-border shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n align === \"end\" ? \"right-0\" : \"left-0\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport interface DropdownMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n danger?: boolean;\n icon?: React.ReactNode;\n}\n\nexport const DropdownMenuItem = React.forwardRef<HTMLButtonElement, DropdownMenuItemProps>(\n ({ className, danger, icon, children, onClick, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n onClick={(e) => {\n onClick?.(e);\n ctx.setOpen(false);\n }}\n className={cn(\n \"w-full flex items-center gap-2.5 text-left px-2.5 py-2 rounded-kj-sm text-[0.85rem] cursor-pointer transition-colors\",\n \"[&_svg]:h-4 [&_svg]:w-4\",\n danger ? \"text-danger hover:bg-danger-surface\" : \"text-foreground hover:bg-muted\",\n className\n )}\n {...props}\n >\n {icon}\n {children}\n </button>\n );\n }\n);\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\nexport function DropdownMenuSeparator({ className }: { className?: string }) {\n return <div className={cn(\"h-px bg-border my-1.5\", className)} role=\"separator\" />;\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, children, ...props }, ref) => (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)}\n {...props}\n >\n {children}\n </nav>\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport interface BreadcrumbItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Marks the trailing current page (non-link, emphasized). */\n current?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef<HTMLAnchorElement, BreadcrumbItemProps>(\n ({ className, current, children, ...props }, ref) => {\n if (current) {\n return (\n <span aria-current=\"page\" className={cn(\"text-foreground font-semibold\", className)}>\n {children}\n </span>\n );\n }\n return (\n <a\n ref={ref}\n className={cn(\n \"text-inherit no-underline hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return (\n <span aria-hidden className=\"text-muted-foreground/70\">\n /\n </span>\n );\n}\n","import { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport interface PaginationProps {\n page: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n /** How many numbered buttons to show around the edges. Default 5. */\n siblingCount?: number;\n className?: string;\n}\n\nfunction range(start: number, end: number) {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n}\n\n/** Builds a compact page list with ellipses, e.g. [1,2,3,'…',9]. */\nfunction paginate(page: number, pageCount: number): (number | \"…\")[] {\n if (pageCount <= 7) return range(1, pageCount);\n const left = Math.max(2, page - 1);\n const right = Math.min(pageCount - 1, page + 1);\n const items: (number | \"…\")[] = [1];\n if (left > 2) items.push(\"…\");\n items.push(...range(left, right));\n if (right < pageCount - 1) items.push(\"…\");\n items.push(pageCount);\n return items;\n}\n\nconst Chevron = ({ dir }: { dir: \"left\" | \"right\" }) => (\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points={dir === \"left\" ? \"15 18 9 12 15 6\" : \"9 18 15 12 9 6\"} />\n </svg>\n);\n\nexport function Pagination({ page, pageCount, onPageChange, className }: PaginationProps) {\n const items = paginate(page, pageCount);\n return (\n <nav aria-label=\"Paginacja\" className={cn(\"flex items-center gap-1\", className)}>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Previous\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n >\n <Chevron dir=\"left\" />\n </Button>\n {items.map((it, i) =>\n it === \"…\" ? (\n <span key={`e${i}`} className=\"px-1 text-muted-foreground select-none\">\n …\n </span>\n ) : (\n <Button\n key={it}\n variant={it === page ? \"primary\" : \"ghost\"}\n size=\"icon-sm\"\n aria-current={it === page ? \"page\" : undefined}\n onClick={() => onPageChange(it)}\n >\n {it}\n </Button>\n )\n )}\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Next\"\n disabled={page >= pageCount}\n onClick={() => onPageChange(page + 1)}\n >\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface BottomNavigationItem {\n id: string;\n label: string;\n href?: string;\n onClick?: () => void;\n icon: React.ReactNode;\n active?: boolean;\n badge?: React.ReactNode;\n}\n\nexport interface BottomNavigationProps extends React.HTMLAttributes<HTMLElement> {\n items: BottomNavigationItem[];\n /** Mode for displaying labels:\n * - 'always': Always show labels for all items.\n * - 'active': Only show label for the active item, hiding others.\n * - 'never': Hide all labels (only show icons).\n */\n showLabels?: \"always\" | \"active\" | \"never\";\n /** If true, uses fixed positioning at the bottom of the viewport with backdrop-blur. */\n fixed?: boolean;\n}\n\nexport const BottomNavigation = React.forwardRef<HTMLElement, BottomNavigationProps>(\n ({ className, items, showLabels = \"always\", fixed = true, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n className={cn(\n \"bg-surface/90 border-t border-border flex items-center justify-around px-4 pt-2 pb-[calc(0.75rem+env(safe-area-inset-bottom,0))] shadow-kj-lg\",\n fixed ? \"fixed bottom-0 left-0 right-0 z-40 backdrop-blur-md\" : \"relative w-full\",\n className\n )}\n {...props}\n >\n {items.map((item) => {\n const isActive = item.active;\n const showLabel = showLabels !== \"never\" && (showLabels === \"always\" || isActive);\n\n const content = (\n <span className=\"flex flex-col items-center justify-center gap-1 w-full relative\">\n <span\n className={cn(\n \"relative flex items-center justify-center p-1 rounded-full transition-all duration-200\",\n isActive\n ? \"text-primary scale-110\"\n : \"text-muted-foreground group-hover:text-foreground group-active:scale-95\"\n )}\n >\n {item.icon}\n {item.badge !== undefined && item.badge !== null && (\n <span className=\"absolute -top-1 -right-1.5 min-w-[16px] h-[16px] px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold flex items-center justify-center ring-2 ring-surface\">\n {item.badge}\n </span>\n )}\n </span>\n\n <span\n className={cn(\n \"text-[10px] font-semibold tracking-wide transition-all duration-200 select-none\",\n showLabel\n ? \"opacity-100 scale-100 h-auto\"\n : \"opacity-0 scale-75 h-0 overflow-hidden\",\n isActive\n ? \"text-primary font-bold\"\n : \"text-muted-foreground group-hover:text-foreground\"\n )}\n >\n {item.label}\n </span>\n\n {/* Subtle active indicator dot */}\n {isActive && (\n <span className=\"absolute -bottom-1.5 w-1 h-1 rounded-full bg-primary animate-fade-in\" />\n )}\n </span>\n );\n\n const itemClass =\n \"group flex-1 flex flex-col items-center justify-center py-1 cursor-pointer transition-all duration-150 relative focus:outline-none\";\n\n if (item.href) {\n return (\n <a\n key={item.id}\n href={item.href}\n className={itemClass}\n aria-current={isActive ? \"page\" : undefined}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={item.onClick}\n className={itemClass}\n aria-pressed={isActive}\n >\n {content}\n </button>\n );\n })}\n </nav>\n );\n }\n);\n\nBottomNavigation.displayName = \"BottomNavigation\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\n/** Rounded, bordered wrapper around a <Table>. */\nexport const TableWrap = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-full overflow-x-auto border border-border rounded-kj-lg\",\n className\n )}\n {...props}\n />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<\n HTMLTableElement,\n React.TableHTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n));\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n));\nTableRow.displayName = \"TableRow\";\n\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Right-align with tabular numerals. */\n numeric?: boolean;\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, numeric, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"px-4 py-3 bg-muted border-b border-border text-[0.72rem] font-semibold uppercase tracking-[0.05em] text-muted-foreground\",\n numeric ? \"text-right\" : \"text-left\",\n className\n )}\n {...props}\n />\n )\n);\nTableHead.displayName = \"TableHead\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, numeric, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"px-4 py-3 border-b border-border [tr:last-child_&]:border-b-0\",\n numeric && \"text-right tabular-nums\",\n className\n )}\n {...props}\n />\n )\n);\nTableCell.displayName = \"TableCell\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\n/** CSS-only hover/focus tooltip positioned above the trigger. */\nexport function Tooltip({ content, children, className }: TooltipProps) {\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n <span className={cn(\"relative inline-flex group\", className)} tabIndex={0}>\n {children}\n <span\n role=\"tooltip\"\n className={cn(\n \"pointer-events-none absolute bottom-[calc(100%+8px)] left-1/2 -translate-x-1/2 translate-y-1 whitespace-nowrap\",\n \"rounded-kj-sm bg-foreground text-background text-xs font-medium px-2.5 py-1.5 shadow-kj-md\",\n \"opacity-0 transition-all duration-150 group-hover:opacity-100 group-hover:translate-y-0 group-focus-visible:opacity-100 group-focus-visible:translate-y-0\",\n \"after:content-[''] after:absolute after:top-full after:left-1/2 after:-translate-x-1/2 after:border-[5px] after:border-transparent after:border-t-foreground\"\n )}\n >\n {content}\n </span>\n </span>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n /** Max width of the panel. Default 440px. */\n width?: number;\n className?: string;\n showClose?: boolean;\n}\n\nconst ModalContext = React.createContext<{ titleId: string; descId: string } | null>(null);\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. Includes focus trap and restore. */\nexport function Modal({\n open,\n onClose,\n children,\n width = 440,\n className,\n showClose = true,\n}: ModalProps) {\n const titleId = React.useId();\n const descId = React.useId();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n\n React.useEffect(() => {\n if (!open) {\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n return;\n }\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n // Delay slightly for transition to complete\n setTimeout(() => focusables[0].focus(), 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, onClose]);\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] grid place-items-center p-6 backdrop-blur-[3px] transition-opacity duration-200\",\n \"bg-[color-mix(in_oklch,#09090b_55%,transparent)]\",\n open ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n >\n <ModalContext.Provider value={{ titleId, descId }}>\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n tabIndex={-1}\n style={{ maxWidth: width }}\n className={cn(\n \"relative w-full p-7 rounded-kj-2xl bg-surface text-foreground border border-border shadow-kj-lg transition-transform duration-200 outline-none\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"absolute top-4 right-4 p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n {children}\n </div>\n </ModalContext.Provider>\n </div>\n );\n}\n\nexport function ModalTitle({\n className,\n id,\n children,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement>) {\n const ctx = React.useContext(ModalContext);\n return (\n <h3\n id={id ?? ctx?.titleId}\n className={cn(\n \"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em] text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\nexport function ModalDescription({\n className,\n id,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n const ctx = React.useContext(ModalContext);\n return (\n <p\n id={id ?? ctx?.descId}\n className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function ModalActions({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex gap-2.5 justify-end mt-6\", className)} {...props} />;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type ToastTone = \"default\" | \"success\" | \"danger\";\nexport interface ToastOptions {\n message: React.ReactNode;\n tone?: ToastTone;\n /** Auto-dismiss after ms. Default 3200. Pass 0 to keep open. */\n duration?: number;\n}\ninterface ToastItem extends Required<Omit<ToastOptions, \"duration\">> {\n id: number;\n duration: number;\n leaving?: boolean;\n}\n\ninterface ToastCtx {\n toast: (opts: ToastOptions) => void;\n}\nconst ToastContext = React.createContext<ToastCtx | null>(null);\n\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nconst icons: Record<ToastTone, React.ReactNode> = {\n default: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-primary\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n success: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-success\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n ),\n danger: (\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-danger\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n ),\n};\n\nconst toneBorder: Record<ToastTone, string> = {\n default: \"border-l-primary\",\n success: \"border-l-success\",\n danger: \"border-l-danger\",\n};\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [items, setItems] = React.useState<ToastItem[]>([]);\n const idRef = React.useRef(0);\n\n const remove = React.useCallback((id: number) => {\n setItems((prev) => prev.map((t) => (t.id === id ? { ...t, leaving: true } : t)));\n setTimeout(() => setItems((prev) => prev.filter((t) => t.id !== id)), 250);\n }, []);\n\n const toast = React.useCallback(\n ({ message, tone = \"default\", duration = 3200 }: ToastOptions) => {\n const id = ++idRef.current;\n setItems((prev) => [...prev, { id, message, tone, duration }]);\n if (duration > 0) setTimeout(() => remove(id), duration);\n },\n [remove]\n );\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n <div className=\"fixed bottom-6 right-6 z-[200] flex flex-col gap-2.5\">\n {items.map((t) => (\n <div\n key={t.id}\n role=\"status\"\n className={cn(\n \"flex items-center justify-between gap-3 min-w-[280px] px-4 py-3\",\n \"bg-surface border border-border border-l-[3px] rounded-kj-md shadow-kj-lg text-[0.85rem] font-medium\",\n toneBorder[t.tone],\n t.leaving\n ? \"animate-[kjtoastout_.25s_ease_forwards]\"\n : \"animate-[kjtoastin_.25s_ease]\"\n )}\n >\n <div className=\"flex items-center gap-2.5\">\n <span className=\"grid place-items-center\">{icons[t.tone]}</span>\n <span>{t.message}</span>\n </div>\n <button\n type=\"button\"\n aria-label=\"Dismiss notification\"\n onClick={() => remove(t.id)}\n className=\"ml-auto text-muted-foreground hover:text-foreground p-1 -mr-1 rounded-kj-sm transition-colors cursor-pointer\"\n >\n <svg\n width={14}\n height={14}\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 >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport interface PageHeaderProps {\n eyebrow?: string;\n title: string;\n description?: string;\n actions?: React.ReactNode;\n}\n\nexport const PageHeader = React.forwardRef<HTMLElement, PageHeaderProps>(\n ({ eyebrow, title, description, actions }, ref) => (\n <header ref={ref} className=\"py-12 md:py-16\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-end md:justify-between\">\n <div className=\"space-y-3 max-w-2xl\">\n {eyebrow && (\n <p className=\"font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary\">\n {eyebrow}\n </p>\n )}\n <h1 className=\"font-sans text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl\">\n {title}\n </h1>\n {description && (\n <p className=\"text-base leading-relaxed text-muted-foreground sm:text-lg\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex flex-wrap gap-3\">{actions}</div>}\n </div>\n </header>\n )\n);\nPageHeader.displayName = \"PageHeader\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type SectionHeaderAlign = \"left\" | \"center\";\nexport type SectionHeaderHeadingLevel = \"h2\" | \"h3\" | \"h4\";\n\nexport interface SectionHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n kicker?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n align?: SectionHeaderAlign;\n headingLevel?: SectionHeaderHeadingLevel;\n divider?: boolean;\n}\n\nexport type SectionHeaderKickerProps = React.HTMLAttributes<HTMLParagraphElement>;\nexport interface SectionHeaderTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n as?: SectionHeaderHeadingLevel;\n}\nexport type SectionHeaderDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;\nexport type SectionHeaderActionsProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SectionHeaderKicker = React.forwardRef<HTMLParagraphElement, SectionHeaderKickerProps>(\n ({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <p\n ref={ref}\n className={cn(\n \"font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary\",\n className\n )}\n {...props}\n >\n {children}\n </p>\n );\n }\n);\nSectionHeaderKicker.displayName = \"SectionHeaderKicker\";\n\nconst SectionHeaderTitle = React.forwardRef<HTMLHeadingElement, SectionHeaderTitleProps>(\n ({ className, as: Component = \"h2\", children, ...props }, ref) => {\n if (!children) return null;\n return (\n <Component\n ref={ref}\n className={cn(\"text-2xl font-bold tracking-tight text-foreground sm:text-3xl\", className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\nSectionHeaderTitle.displayName = \"SectionHeaderTitle\";\n\nconst SectionHeaderDescription = React.forwardRef<\n HTMLParagraphElement,\n SectionHeaderDescriptionProps\n>(({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <p\n ref={ref}\n className={cn(\"text-base leading-relaxed text-muted-foreground max-w-2xl\", className)}\n {...props}\n >\n {children}\n </p>\n );\n});\nSectionHeaderDescription.displayName = \"SectionHeaderDescription\";\n\nconst SectionHeaderActions = React.forwardRef<HTMLDivElement, SectionHeaderActionsProps>(\n ({ className, children, ...props }, ref) => {\n if (!children) return null;\n return (\n <div ref={ref} className={cn(\"flex flex-wrap items-center gap-3\", className)} {...props}>\n {children}\n </div>\n );\n }\n);\nSectionHeaderActions.displayName = \"SectionHeaderActions\";\n\nexport const SectionHeader = React.forwardRef<HTMLDivElement, SectionHeaderProps>(\n (\n {\n kicker,\n title,\n description,\n actions,\n align = \"left\",\n headingLevel = \"h2\",\n divider = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isCentered = align === \"center\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"space-y-4\",\n isCentered\n ? \"text-center items-center mx-auto max-w-3xl\"\n : \"md:flex md:items-end md:justify-between md:space-y-0\",\n divider && \"border-b border-border pb-6\",\n className\n )}\n {...props}\n >\n {children ? (\n children\n ) : (\n <>\n <div className={cn(\"space-y-2\", isCentered && \"flex flex-col items-center\")}>\n {kicker && <SectionHeaderKicker>{kicker}</SectionHeaderKicker>}\n {title && <SectionHeaderTitle as={headingLevel}>{title}</SectionHeaderTitle>}\n {description && <SectionHeaderDescription>{description}</SectionHeaderDescription>}\n </div>\n {actions && (\n <SectionHeaderActions className={cn(isCentered && \"justify-center mt-4\")}>\n {actions}\n </SectionHeaderActions>\n )}\n </>\n )}\n </div>\n );\n }\n) as React.ForwardRefExoticComponent<SectionHeaderProps & React.RefAttributes<HTMLDivElement>> & {\n Kicker: typeof SectionHeaderKicker;\n Title: typeof SectionHeaderTitle;\n Description: typeof SectionHeaderDescription;\n Actions: typeof SectionHeaderActions;\n};\n\nSectionHeader.displayName = \"SectionHeader\";\nSectionHeader.Kicker = SectionHeaderKicker;\nSectionHeader.Title = SectionHeaderTitle;\nSectionHeader.Description = SectionHeaderDescription;\nSectionHeader.Actions = SectionHeaderActions;\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center p-8 border border-dashed border-border rounded-kj-lg bg-muted/20 min-h-[300px]\",\n className\n )}\n {...props}\n >\n {icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground mb-4 [&_svg]:h-6 [&_svg]:w-6\">\n {icon}\n </div>\n )}\n <h3 className=\"text-base font-bold text-foreground mb-1\">{title}</h3>\n {description && (\n <p className=\"text-sm text-muted-foreground max-w-sm mb-6 leading-relaxed\">{description}</p>\n )}\n {action && <div className=\"flex items-center gap-3\">{action}</div>}\n </div>\n )\n);\nEmptyState.displayName = \"EmptyState\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string;\n value: string | number;\n trend?: string;\n trendDirection?: \"up\" | \"down\" | \"neutral\";\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n (\n { className, title, value, trend, trendDirection = \"neutral\", description, icon, ...props },\n ref\n ) => {\n const trendColor = {\n up: \"text-success bg-success-surface border-success/20\",\n down: \"text-danger bg-danger-surface border-danger/20\",\n neutral: \"text-muted-foreground bg-muted border-border/20\",\n }[trendDirection];\n\n return (\n <Card ref={ref} className={cn(\"p-6\", className)} {...props}>\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-xs font-mono font-semibold uppercase tracking-[0.1em] text-muted-foreground\">\n {title}\n </span>\n {icon && (\n <span className=\"text-muted-foreground shrink-0 [&_svg]:h-4 [&_svg]:w-4\">{icon}</span>\n )}\n </div>\n <div className=\"flex items-baseline gap-2.5 mb-1.5\">\n <span className=\"text-3xl font-bold tracking-tight text-foreground\">{value}</span>\n {trend && (\n <span\n className={cn(\"text-[0.75rem] font-bold px-2 py-0.5 rounded-full border\", trendColor)}\n >\n {trend}\n </span>\n )}\n </div>\n {description && <p className=\"text-xs text-muted-foreground\">{description}</p>}\n </Card>\n );\n }\n);\nMetricCard.displayName = \"MetricCard\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Table, TableWrap, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"./table\";\nimport { Spinner } from \"./spinner\";\nimport { Alert } from \"./alert\";\nimport { EmptyState } from \"./empty-state\";\n\nexport interface DataTableColumn<T> {\n header: React.ReactNode;\n accessor: (row: T) => React.ReactNode;\n className?: string;\n align?: \"left\" | \"center\" | \"right\";\n sortable?: boolean;\n sortKey?: string;\n}\n\nexport interface DataTableProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n columns: DataTableColumn<T>[];\n data: T[];\n loading?: boolean;\n error?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n emptyAction?: React.ReactNode;\n\n // Production-grade features\n getRowKey?: (row: T, index: number) => React.Key;\n onRowClick?: (row: T) => void;\n toolbar?: React.ReactNode;\n pagination?: React.ReactNode;\n selectedRows?: Set<React.Key>;\n onSelectionChange?: (selectedKeys: Set<React.Key>) => void;\n\n // Sorting props\n sortBy?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSort?: (sortKey: string, direction: \"asc\" | \"desc\") => void;\n}\n\nexport function DataTable<T>({\n className,\n columns,\n data,\n loading = false,\n error,\n emptyTitle = \"No data available\",\n emptyDescription = \"There are no records to display at this time.\",\n emptyAction,\n getRowKey,\n onRowClick,\n toolbar,\n pagination,\n selectedRows,\n onSelectionChange,\n sortBy,\n sortDirection,\n onSort,\n ...props\n}: DataTableProps<T>) {\n const getRowId = React.useCallback(\n (row: T, index: number) => (getRowKey ? getRowKey(row, index) : index),\n [getRowKey]\n );\n\n const isSelectionActive = selectedRows !== undefined && onSelectionChange !== undefined;\n\n const allSelected = React.useMemo(() => {\n if (!isSelectionActive || data.length === 0) return false;\n return data.every((row, idx) => selectedRows.has(getRowId(row, idx)));\n }, [isSelectionActive, data, selectedRows, getRowId]);\n\n const someSelected = React.useMemo(() => {\n if (!isSelectionActive || data.length === 0) return false;\n const selectedCount = data.filter((row, idx) => selectedRows.has(getRowId(row, idx))).length;\n return selectedCount > 0 && selectedCount < data.length;\n }, [isSelectionActive, data, selectedRows, getRowId]);\n\n const headerCheckboxRef = React.useRef<HTMLInputElement>(null);\n React.useEffect(() => {\n if (headerCheckboxRef.current) {\n headerCheckboxRef.current.indeterminate = someSelected;\n }\n }, [someSelected]);\n\n const handleSelectAll = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!onSelectionChange) return;\n const checked = e.target.checked;\n const next = new Set<React.Key>(selectedRows);\n data.forEach((row, idx) => {\n const id = getRowId(row, idx);\n if (checked) {\n next.add(id);\n } else {\n next.delete(id);\n }\n });\n onSelectionChange(next);\n };\n\n const handleSelectRow = (row: T, idx: number, checked: boolean) => {\n if (!onSelectionChange || !selectedRows) return;\n const id = getRowId(row, idx);\n const next = new Set<React.Key>(selectedRows);\n if (checked) {\n next.add(id);\n } else {\n next.delete(id);\n }\n onSelectionChange(next);\n };\n\n return (\n <div className={cn(\"flex flex-col gap-4 w-full\", className)}>\n {/* Toolbar Slot */}\n {toolbar && <div className=\"w-full min-w-0\">{toolbar}</div>}\n\n <TableWrap\n className=\"relative overflow-x-auto overflow-y-hidden [scroll-behavior:smooth] [-webkit-overflow-scrolling:touch]\"\n {...props}\n >\n <Table>\n <TableHeader>\n <TableRow>\n {/* Row selection checkbox in header */}\n {isSelectionActive && (\n <TableHead className=\"w-12 px-4 text-center\">\n <div className=\"inline-flex items-center justify-center\">\n <input\n type=\"checkbox\"\n ref={headerCheckboxRef}\n checked={allSelected}\n onChange={handleSelectAll}\n aria-label=\"Select all rows\"\n className=\"h-4 w-4 rounded border-input text-primary focus:ring-ring\"\n />\n </div>\n </TableHead>\n )}\n {columns.map((col, idx) => {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n }[col.align || \"left\"];\n const isSortable = col.sortable && onSort && col.sortKey;\n const isSortedActive = sortBy && col.sortKey === sortBy;\n const ariaSort = isSortable\n ? isSortedActive\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n : undefined;\n\n return (\n <TableHead\n key={idx}\n className={cn(\n alignClass,\n isSortable && \"p-0 hover:bg-muted/30 transition-colors\",\n col.className\n )}\n aria-sort={ariaSort}\n >\n {isSortable ? (\n <button\n type=\"button\"\n onClick={() => {\n if (!col.sortKey) return;\n const nextDirection =\n isSortedActive && sortDirection === \"asc\" ? \"desc\" : \"asc\";\n onSort(col.sortKey, nextDirection);\n }}\n className={cn(\n \"w-full px-4 py-3 flex items-center gap-1.5 font-semibold text-[0.72rem] uppercase tracking-[0.05em] text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 transition-colors cursor-pointer\",\n {\n \"justify-start text-left\": col.align === \"left\" || !col.align,\n \"justify-center text-center\": col.align === \"center\",\n \"justify-end text-right\": col.align === \"right\",\n }\n )}\n >\n <span>{col.header}</span>\n <span className=\"text-[10px] text-muted-foreground shrink-0 select-none\">\n {isSortedActive ? (sortDirection === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\n </span>\n </button>\n ) : (\n <div\n className={cn(\n \"inline-flex items-center gap-1.5\",\n alignClass === \"text-right\" && \"justify-end w-full\"\n )}\n >\n {col.header}\n </div>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading && data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (isSelectionActive ? 1 : 0)}\n className=\"h-64 text-center\"\n >\n <div className=\"flex flex-col items-center justify-center gap-3\">\n <Spinner size={32} />\n <span className=\"text-sm text-muted-foreground\">Loading dataset...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : error ? (\n <TableRow>\n <TableCell colSpan={columns.length + (isSelectionActive ? 1 : 0)} className=\"p-8\">\n <Alert variant=\"danger\" title=\"Error loading data\">\n {error}\n </Alert>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length + (isSelectionActive ? 1 : 0)} className=\"p-0\">\n <EmptyState\n title={emptyTitle}\n description={emptyDescription}\n action={emptyAction}\n className=\"border-none bg-transparent rounded-none py-16\"\n />\n </TableCell>\n </TableRow>\n ) : (\n data.map((row, rowIdx) => {\n const rowKey = getRowId(row, rowIdx);\n const isSelected = isSelectionActive && selectedRows.has(rowKey);\n return (\n <TableRow\n key={rowKey}\n onClick={() => onRowClick && onRowClick(row)}\n className={cn(\n onRowClick && \"cursor-pointer hover:bg-muted/40 transition-colors\",\n isSelected && \"bg-primary/5 hover:bg-primary/10\"\n )}\n >\n {isSelectionActive && (\n <TableCell\n className=\"w-12 px-4 text-center\"\n onClick={(e) => {\n // Stop propagation to prevent triggering onRowClick\n e.stopPropagation();\n }}\n >\n <div className=\"inline-flex items-center justify-center\">\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => handleSelectRow(row, rowIdx, e.target.checked)}\n aria-label={`Select row ${rowIdx + 1}`}\n className=\"h-4 w-4 rounded border-input text-primary focus:ring-ring\"\n />\n </div>\n </TableCell>\n )}\n {columns.map((col, colIdx) => {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n }[col.align || \"left\"];\n return (\n <TableCell key={colIdx} className={cn(alignClass, col.className)}>\n {col.accessor(row)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n {loading && data.length > 0 && (\n <div className=\"absolute inset-0 bg-background/50 backdrop-blur-[1px] grid place-items-center z-10 transition-opacity duration-150\">\n <Spinner size={36} />\n </div>\n )}\n </TableWrap>\n\n {/* Pagination Slot */}\n {pagination && <div className=\"flex items-center justify-end w-full\">{pagination}</div>}\n </div>\n );\n}\nDataTable.displayName = \"DataTable\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string;\n message: string;\n onRetry?: () => void;\n retryLabel?: string;\n}\n\nexport const ErrorState = React.forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n className,\n title = \"Wystąpił błąd\",\n message,\n onRetry,\n retryLabel = \"Spróbuj ponownie\",\n ...props\n },\n ref\n ) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center p-8 border border-danger/25 rounded-kj-lg bg-danger-surface/20 min-h-[300px]\",\n className\n )}\n {...props}\n >\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-danger-surface border border-danger/30 text-danger mb-4\">\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n viewBox=\"0 0 24 24\"\n className=\"h-6 w-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\"\n />\n </svg>\n </div>\n <h3 className=\"text-base font-bold text-foreground mb-1\">{title}</h3>\n <p className=\"text-sm text-muted-foreground max-w-sm mb-6 leading-relaxed\">{message}</p>\n {onRetry && (\n <Button size=\"sm\" variant=\"danger\" onClick={onRetry}>\n {retryLabel}\n </Button>\n )}\n </div>\n )\n);\nErrorState.displayName = \"ErrorState\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"circular\" | \"rectangular\";\n animation?: \"shimmer\" | \"pulse\" | \"none\";\n width?: string | number;\n height?: string | number;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n { className, variant = \"rectangular\", animation = \"shimmer\", width, height, style, ...props },\n ref\n ) => (\n <div\n ref={ref}\n className={cn(\n \"bg-muted-foreground/15 dark:bg-muted-foreground/20\",\n animation === \"pulse\" && \"animate-pulse\",\n animation === \"shimmer\" &&\n \"relative overflow-hidden after:absolute after:inset-0 after:-translate-x-full after:animate-[kjshimmer_2s_ease-in-out_infinite_alternate] after:bg-gradient-to-r after:from-transparent after:via-foreground/10 after:to-transparent\",\n variant === \"text\" && \"h-3 w-4/5 rounded-sm my-1.5\",\n variant === \"circular\" && \"rounded-full\",\n variant === \"rectangular\" && \"rounded-kj-md\",\n className\n )}\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n />\n )\n);\nSkeleton.displayName = \"Skeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DashboardShellProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebar?: React.ReactNode;\n topbar?: React.ReactNode;\n children: React.ReactNode;\n sidebarWidth?: string;\n contentWidth?: \"default\" | \"wide\" | \"full\";\n stickyTopbar?: boolean;\n mobileSidebar?: React.ReactNode;\n}\n\nexport const DashboardShell = React.forwardRef<HTMLDivElement, DashboardShellProps>(\n (\n {\n className,\n sidebar,\n topbar,\n children,\n sidebarWidth = \"md:w-64\",\n contentWidth = \"default\",\n stickyTopbar = true,\n mobileSidebar,\n ...props\n },\n ref\n ) => {\n const [mobileOpen, setMobileOpen] = React.useState(false);\n const contentWidthClass = {\n default: \"max-w-7xl w-full mx-auto\",\n wide: \"max-w-screen-2xl w-full mx-auto\",\n full: \"max-w-none w-full\",\n }[contentWidth];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-screen bg-canvas text-foreground flex flex-col md:flex-row\",\n className\n )}\n {...props}\n >\n {/* Sidebar (sticky desk, scrollable inside) */}\n {sidebar && (\n <aside\n className={cn(\n \"border-r border-border bg-surface shrink-0 z-20\",\n mobileSidebar ? \"hidden md:flex\" : \"w-full md:flex\",\n sidebarWidth\n )}\n >\n <div\n className={cn(\n \"sticky top-0 w-full flex flex-col\",\n mobileSidebar ? \"h-screen\" : \"h-auto md:h-screen\"\n )}\n >\n {sidebar}\n </div>\n </aside>\n )}\n\n {/* Mobile Navigation Drawer */}\n {mobileSidebar && mobileOpen && (\n <div\n onClick={() => setMobileOpen(false)}\n className=\"fixed inset-0 z-50 md:hidden bg-[color-mix(in_oklch,#09090b_45%,transparent)] backdrop-blur-[2px] transition-opacity duration-300\"\n >\n <aside\n onClick={(e) => e.stopPropagation()}\n className=\"w-72 h-full bg-surface border-r border-border flex flex-col shadow-kj-lg\"\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border\">\n <span className=\"text-xs font-bold uppercase tracking-wider text-muted-foreground\">\n Navigation\n </span>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n className=\"p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"flex-1 overflow-y-auto\">{mobileSidebar}</div>\n </aside>\n </div>\n )}\n\n {/* Main Content Area */}\n <div className=\"flex-1 flex flex-col min-w-0\">\n {/* Top Header Navigation */}\n {topbar && (\n <header\n className={cn(\n \"h-14 border-b border-border bg-surface flex items-center px-6 z-10 shrink-0 gap-4\",\n stickyTopbar && \"sticky top-0\"\n )}\n >\n {mobileSidebar && (\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n className=\"md:hidden p-1.5 -ml-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Open navigation\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n )}\n {topbar}\n </header>\n )}\n\n {/* Inner page container */}\n <main className={cn(\"flex-1 p-6 md:p-8\", contentWidthClass)}>{children}</main>\n </div>\n </div>\n );\n }\n);\nDashboardShell.displayName = \"DashboardShell\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SettingsLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebar: React.ReactNode;\n children: React.ReactNode;\n title?: string;\n description?: string;\n}\n\nexport const SettingsLayout = React.forwardRef<HTMLDivElement, SettingsLayoutProps>(\n ({ className, sidebar, children, title, description, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-6 w-full\", className)} {...props}>\n {/* Header */}\n {(title || description) && (\n <div className=\"border-b border-border pb-4\">\n {title && (\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">{title}</h1>\n )}\n {description && <p className=\"text-sm text-muted-foreground mt-1\">{description}</p>}\n </div>\n )}\n\n {/* Layout */}\n <div className=\"flex flex-col lg:flex-row gap-8\">\n {/* Sidebar Tabs / Navigation */}\n <aside className=\"lg:w-1/4 shrink-0\">\n <nav className=\"flex flex-row lg:flex-col gap-1 overflow-x-auto lg:overflow-x-visible pb-2 lg:pb-0\">\n {sidebar}\n </nav>\n </aside>\n\n {/* Content */}\n <div className=\"flex-1 max-w-3xl\">{children}</div>\n </div>\n </div>\n );\n }\n);\nSettingsLayout.displayName = \"SettingsLayout\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Button, buttonVariants } from \"./button\";\n\nexport interface DetailPageLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string;\n description?: string;\n backHref?: string;\n backLabel?: string;\n onBackClick?: () => void;\n actions?: React.ReactNode;\n aside?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const DetailPageLayout = React.forwardRef<HTMLDivElement, DetailPageLayoutProps>(\n (\n {\n className,\n title,\n description,\n backHref,\n backLabel = \"Back\",\n onBackClick,\n actions,\n aside,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn(\"space-y-6 w-full\", className)} {...props}>\n {/* Header/Top Area */}\n <div className=\"flex flex-col gap-3\">\n {(backHref || onBackClick) && (\n <div>\n {backHref ? (\n <a\n href={backHref}\n className={cn(\n buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n \"-ml-3 h-8 text-muted-foreground hover:text-foreground inline-flex items-center gap-1.5\"\n )}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 19.5 8.25 12l7.5-7.5\"\n />\n </svg>\n {backLabel}\n </a>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 text-muted-foreground hover:text-foreground\"\n onClick={onBackClick}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4 mr-1.5\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 19.5 8.25 12l7.5-7.5\"\n />\n </svg>\n {backLabel}\n </Button>\n )}\n </div>\n )}\n\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-4\">\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">{title}</h1>\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\n </div>\n </div>\n\n {/* Content Body Grid */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-8 items-start\">\n <div className={cn(\"space-y-6\", aside ? \"lg:col-span-2\" : \"lg:col-span-3\")}>\n {children}\n </div>\n {aside && (\n <aside className=\"space-y-6 lg:col-span-1 bg-surface border border-border rounded-kj-xl p-6 shadow-kj-xs\">\n {aside}\n </aside>\n )}\n </div>\n </div>\n );\n }\n);\nDetailPageLayout.displayName = \"DetailPageLayout\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Input } from \"./input\";\n\nexport interface TableToolbarProps extends React.HTMLAttributes<HTMLDivElement> {\n searchQuery?: string;\n onSearchChange?: (query: string) => void;\n searchPlaceholder?: string;\n actions?: React.ReactNode;\n filters?: React.ReactNode;\n}\n\nexport const TableToolbar = React.forwardRef<HTMLDivElement, TableToolbarProps>(\n (\n {\n className,\n searchQuery,\n onSearchChange,\n searchPlaceholder = \"Search...\",\n actions,\n filters,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col sm:flex-row flex-wrap items-stretch sm:items-center justify-between gap-3 w-full pb-1\",\n className\n )}\n {...props}\n >\n <div className=\"flex flex-1 flex-col sm:flex-row sm:flex-wrap items-stretch sm:items-center gap-2 min-w-0 max-w-xl\">\n {onSearchChange && (\n <Input\n type=\"search\"\n placeholder={searchPlaceholder}\n value={searchQuery}\n onChange={(e) => onSearchChange(e.target.value)}\n className=\"w-full sm:w-64 max-w-full\"\n leadingIcon={\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-4 w-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"\n />\n </svg>\n }\n />\n )}\n {filters && <div className=\"flex flex-wrap items-center gap-2 min-w-0\">{filters}</div>}\n </div>\n {actions && (\n <div className=\"flex flex-wrap items-center gap-2 shrink-0 justify-end sm:ml-auto\">\n {actions}\n </div>\n )}\n </div>\n );\n }\n);\nTableToolbar.displayName = \"TableToolbar\";\n","import { Modal, ModalTitle, ModalDescription, ModalActions } from \"./modal\";\nimport { Button } from \"./button\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title: string;\n description: string;\n confirmLabel?: string;\n cancelLabel?: string;\n tone?: \"danger\" | \"primary\" | \"success\";\n loading?: boolean;\n}\n\nexport function ConfirmDialog({\n open,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n tone = \"primary\",\n loading = false,\n}: ConfirmDialogProps) {\n const toneButtonVariant = {\n danger: \"danger\" as const,\n primary: \"primary\" as const,\n success: \"secondary\" as const, // standard secondary in our system is teal (success-aligned)\n }[tone];\n\n return (\n <Modal open={open} onClose={onClose} width={400} showClose={!loading}>\n <ModalTitle>{title}</ModalTitle>\n <ModalDescription>{description}</ModalDescription>\n <ModalActions>\n <Button variant=\"outline\" onClick={onClose} disabled={loading}>\n {cancelLabel}\n </Button>\n <Button variant={toneButtonVariant} onClick={onConfirm} loading={loading}>\n {confirmLabel}\n </Button>\n </ModalActions>\n </Modal>\n );\n}\nConfirmDialog.displayName = \"ConfirmDialog\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n title?: string;\n description?: string;\n width?: string;\n side?: \"right\" | \"left\";\n}\n\nexport function Drawer({\n open,\n onClose,\n children,\n title,\n description,\n width = \"max-w-md\",\n side = \"right\",\n}: DrawerProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n\n React.useEffect(() => {\n if (!open) {\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n return;\n }\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n setTimeout(() => focusables[0].focus(), 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, onClose]);\n\n const sideClasses = {\n right: cn(\"right-0 h-full border-l\", open ? \"translate-x-0\" : \"translate-x-full\"),\n left: cn(\"left-0 h-full border-r\", open ? \"translate-x-0\" : \"-translate-x-full\"),\n }[side];\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] transition-opacity duration-300 backdrop-blur-[2px]\",\n \"bg-[color-mix(in_oklch,#09090b_45%,transparent)]\",\n open ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n >\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={!title ? \"Drawer\" : undefined}\n aria-labelledby={title ? \"drawer-title\" : undefined}\n aria-describedby={description ? \"drawer-description\" : undefined}\n tabIndex={-1}\n className={cn(\n \"fixed top-0 bottom-0 bg-surface border-border flex flex-col w-full shadow-kj-lg transition-transform duration-300 ease-spring outline-none\",\n width,\n sideClasses\n )}\n >\n {/* Header */}\n {(title || description) && (\n <div className=\"flex items-center justify-between p-6 border-b border-border\">\n <div className=\"space-y-1\">\n {title && (\n <h2 id=\"drawer-title\" className=\"text-lg font-bold tracking-tight text-foreground\">\n {title}\n </h2>\n )}\n {description && (\n <p id=\"drawer-description\" className=\"text-xs text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n </div>\n </div>\n );\n}\nDrawer.displayName = \"Drawer\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CommandPaletteItem {\n id: string;\n title: string;\n subtitle?: string;\n category?: string;\n shortcut?: string[];\n action: () => void;\n icon?: React.ReactNode;\n}\n\nexport interface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n items: CommandPaletteItem[];\n placeholder?: string;\n}\n\nexport function CommandPalette({\n open,\n onClose,\n items,\n placeholder = \"Type a command or search...\",\n}: CommandPaletteProps) {\n const [search, setSearch] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n // Reset state on open/close\n React.useEffect(() => {\n if (open) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSearch(\"\");\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setActiveIndex(0);\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n }, [open]);\n\n // Filter items\n const filteredItems = React.useMemo(() => {\n if (!search) return items;\n const cleanSearch = search.toLowerCase();\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(cleanSearch) ||\n item.subtitle?.toLowerCase().includes(cleanSearch) ||\n item.category?.toLowerCase().includes(cleanSearch)\n );\n }, [search, items]);\n\n // Reset active index when filter changes\n React.useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setActiveIndex(0);\n }, [filteredItems]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n if (!open) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((prev) =>\n filteredItems.length === 0 ? 0 : (prev + 1) % filteredItems.length\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((prev) =>\n filteredItems.length === 0 ? 0 : (prev - 1 + filteredItems.length) % filteredItems.length\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (filteredItems[activeIndex]) {\n filteredItems[activeIndex].action();\n onClose();\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, filteredItems, activeIndex, onClose]);\n\n // Scroll active item into view\n React.useEffect(() => {\n if (listRef.current) {\n const activeEl = listRef.current.querySelector('[aria-selected=\"true\"]') as HTMLElement;\n if (activeEl) {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }\n }, [activeIndex]);\n\n if (!open) return null;\n\n // Group filtered items by category\n const groups: { [key: string]: typeof filteredItems } = {};\n filteredItems.forEach((item) => {\n const cat = item.category || \"General\";\n if (!groups[cat]) groups[cat] = [];\n groups[cat].push(item);\n });\n\n // Flat list index calculation for grouping\n let absoluteItemIndex = 0;\n\n return (\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className=\"fixed inset-0 z-[100] grid place-items-start justify-center p-6 md:p-24 backdrop-blur-[3px] bg-[color-mix(in_oklch,#09090b_60%,transparent)]\"\n >\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Command palette\"\n className=\"w-[95vw] max-w-lg bg-surface border border-border rounded-kj-xl shadow-kj-lg flex flex-col overflow-hidden max-h-[500px]\"\n >\n {/* Search Input */}\n <div className=\"p-4 border-b border-border flex items-center gap-2\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"h-5 w-5 text-muted-foreground shrink-0 ml-1\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"\n />\n </svg>\n <input\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-autocomplete=\"list\"\n aria-controls=\"command-palette-listbox\"\n aria-activedescendant={filteredItems.length > 0 ? `cmd-item-${activeIndex}` : undefined}\n placeholder={placeholder}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 font-sans text-[0.95rem] bg-transparent text-foreground placeholder:text-muted-foreground outline-none border-none focus:ring-0\"\n autoFocus\n />\n </div>\n\n {/* Results List */}\n <div className=\"flex-1 overflow-y-auto p-2 min-h-[150px]\">\n {filteredItems.length === 0 ? (\n <div className=\"py-12 text-center text-sm text-muted-foreground\">\n No results found for \"{search}\"\n </div>\n ) : (\n <div\n ref={listRef}\n id=\"command-palette-listbox\"\n role=\"listbox\"\n aria-label=\"Commands\"\n className=\"space-y-4\"\n >\n {Object.entries(groups).map(([cat, itemsInCat]) => (\n <div\n key={cat}\n role=\"group\"\n aria-labelledby={`cmd-cat-${cat}`}\n className=\"space-y-1\"\n >\n <div\n id={`cmd-cat-${cat}`}\n className=\"px-3 py-1 text-[0.65rem] font-bold uppercase tracking-wider text-muted-foreground\"\n >\n {cat}\n </div>\n {itemsInCat.map((item) => {\n const currentIdx = absoluteItemIndex++;\n const isActive = currentIdx === activeIndex;\n return (\n <div\n key={item.id}\n id={`cmd-item-${currentIdx}`}\n role=\"option\"\n aria-selected={isActive}\n onClick={() => {\n item.action();\n onClose();\n }}\n className={cn(\n \"flex items-center justify-between gap-3 px-3 py-2.5 rounded-kj-md cursor-pointer select-none transition-colors\",\n isActive\n ? \"bg-primary/10 text-foreground\"\n : \"text-muted-foreground hover:bg-muted hover:text-foreground\"\n )}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n {item.icon && (\n <span className=\"text-muted-foreground [&_svg]:h-[1.1rem] [&_svg]:w-[1.1rem]\">\n {item.icon}\n </span>\n )}\n <div className=\"min-w-0 flex flex-col\">\n <span\n className={cn(\n \"text-[0.85rem] font-semibold\",\n isActive ? \"text-primary\" : \"text-foreground\"\n )}\n >\n {item.title}\n </span>\n {item.subtitle && (\n <span className=\"text-[0.75rem] text-muted-foreground truncate\">\n {item.subtitle}\n </span>\n )}\n </div>\n </div>\n {item.shortcut && (\n <div className=\"flex items-center gap-1\">\n {item.shortcut.map((sc, scIdx) => (\n <kbd\n key={scIdx}\n className=\"px-1.5 py-0.5 rounded border border-border bg-subtle text-[10px] font-mono leading-none shadow-kj-xs text-muted-foreground\"\n >\n {sc}\n </kbd>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Footer info */}\n <div className=\"px-4 py-2.5 border-t border-border bg-subtle flex items-center justify-between text-[11px] text-muted-foreground font-medium\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex items-center gap-1\">\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">↑↓</kbd> Navigate\n </span>\n <span className=\"flex items-center gap-1\">\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">Enter</kbd>{\" \"}\n Select\n </span>\n </div>\n <div>\n <kbd className=\"font-mono text-[9px] px-1 border rounded bg-surface\">Esc</kbd> Close\n </div>\n </div>\n </div>\n </div>\n );\n}\nCommandPalette.displayName = \"CommandPalette\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface SidebarNavItem {\n id: string;\n label: string;\n href?: string;\n onClick?: () => void;\n active?: boolean;\n icon?: React.ReactNode;\n badge?: React.ReactNode;\n}\n\nexport interface SidebarNavGroup {\n title?: string;\n items: SidebarNavItem[];\n}\n\nexport interface SidebarNavProps extends React.HTMLAttributes<HTMLDivElement> {\n groups: SidebarNavGroup[];\n currentHref?: string;\n}\n\nexport function SidebarNav({ className, groups, currentHref, ...props }: SidebarNavProps) {\n return (\n <div className={cn(\"space-y-6 py-4 px-3 w-full\", className)} {...props}>\n {groups.map((group, groupIdx) => (\n <div key={groupIdx} className=\"space-y-1.5\">\n {group.title && (\n <h4 className=\"px-3 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/85\">\n {group.title}\n </h4>\n )}\n <div className=\"space-y-0.5\">\n {group.items.map((item) => {\n const isActive =\n item.active || (item.href && currentHref && currentHref === item.href);\n const content = (\n <>\n <span className=\"flex items-center gap-2.5 min-w-0\">\n {item.icon && (\n <span\n className={cn(\n \"[&_svg]:h-[1.1rem] [&_svg]:w-[1.1rem] shrink-0\",\n isActive\n ? \"text-primary\"\n : \"text-muted-foreground group-hover:text-foreground\"\n )}\n >\n {item.icon}\n </span>\n )}\n <span className=\"truncate\">{item.label}</span>\n </span>\n {item.badge && (\n <span className=\"shrink-0 flex items-center justify-center\">{item.badge}</span>\n )}\n </>\n );\n\n const itemClass = cn(\n \"group flex items-center justify-between gap-3 px-3 py-2 rounded-kj-md text-[0.85rem] font-semibold select-none cursor-pointer transition-all duration-150\",\n isActive\n ? \"bg-primary/10 text-primary border-l-2 border-primary rounded-l-none pl-2.5\"\n : \"text-muted-foreground hover:bg-muted hover:text-foreground border-l-2 border-transparent\"\n );\n\n if (item.href) {\n return (\n <a key={item.id} href={item.href} className={itemClass}>\n {content}\n </a>\n );\n }\n\n return (\n <button key={item.id} type=\"button\" onClick={item.onClick} className={itemClass}>\n {content}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\nSidebarNav.displayName = \"SidebarNav\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst fabVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap select-none\",\n \"font-sans font-semibold leading-none\",\n \"border border-transparent rounded-full cursor-pointer shadow-lg\",\n \"transition-[background-color,color,border-color,box-shadow,transform] duration-150\",\n \"active:translate-y-px active:shadow-md\",\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-primary-foreground hover:bg-primary-hover\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n outline:\n \"bg-transparent text-foreground border-border hover:bg-muted hover:border-muted-foreground\",\n danger: \"bg-danger text-white hover:brightness-95\",\n },\n size: {\n sm: \"h-10 w-10 p-0 text-sm\",\n md: \"h-14 w-14 p-0 text-base\",\n lg: \"h-16 w-16 p-0 text-lg\",\n },\n position: {\n \"bottom-right\": \"fixed bottom-6 right-6 z-50\",\n \"bottom-left\": \"fixed bottom-6 left-6 z-50\",\n \"bottom-center\": \"fixed bottom-6 left-1/2 -translate-x-1/2 z-50\",\n none: \"relative\",\n },\n },\n defaultVariants: { variant: \"primary\", size: \"md\", position: \"bottom-right\" },\n }\n);\n\nexport interface FabProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof fabVariants> {\n /** Icon rendered inside the button. */\n icon: React.ReactNode;\n\n /** Text label for accessibility (aria-label). */\n label: string;\n\n /** If true, the FAB will only be visible on mobile screens (< 768px). */\n mobileOnly?: boolean;\n\n /** Shows a spinner and disables interaction. */\n loading?: boolean;\n}\n\nexport const Fab = React.forwardRef<HTMLButtonElement, FabProps>(\n (\n { className, variant, size, position, mobileOnly, icon, label, loading, disabled, ...props },\n ref\n ) => {\n return (\n <button\n ref={ref}\n className={cn(\n fabVariants({ variant, size, position }),\n mobileOnly && \"md:hidden\",\n className\n )}\n {...props}\n disabled={disabled || loading}\n aria-label={label}\n aria-busy={loading || undefined}\n >\n {loading ? (\n <span\n aria-hidden\n className=\"h-[1.2em] w-[1.2em] rounded-full border-2 border-current border-t-transparent animate-spin\"\n />\n ) : (\n <span className=\"[&_svg]:h-[1.35em] [&_svg]:w-[1.35em] flex items-center justify-center\">\n {icon}\n </span>\n )}\n </button>\n );\n }\n);\nFab.displayName = \"Fab\";\n\nexport { fabVariants };\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface BottomSheetProps {\n open: boolean;\n onClose: () => void;\n children: React.ReactNode;\n maxWidth?: \"max-w-sm\" | \"max-w-md\" | \"max-w-lg\" | \"max-w-xl\" | \"max-w-2xl\";\n className?: string;\n showClose?: boolean;\n}\n\nconst BottomSheetContext = React.createContext<{ titleId: string; descId: string } | null>(null);\n\nexport function BottomSheet({\n open,\n onClose,\n children,\n maxWidth = \"max-w-lg\",\n className,\n showClose = true,\n}: BottomSheetProps) {\n const titleId = React.useId();\n const descId = React.useId();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const lastActiveElement = React.useRef<HTMLElement | null>(null);\n const [mounted, setMounted] = React.useState(open);\n\n React.useEffect(() => {\n if (open) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setMounted(true);\n } else {\n const timer = setTimeout(() => setMounted(false), 200);\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open) return;\n\n lastActiveElement.current = document.activeElement as HTMLElement;\n\n const container = containerRef.current;\n if (container) {\n const focusables = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusables.length > 0) {\n focusables[0].focus();\n setTimeout(() => {\n if (container.contains(document.activeElement)) return;\n focusables[0].focus();\n }, 50);\n } else {\n container.focus();\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n return;\n }\n\n if (e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (!container.contains(document.activeElement)) {\n e.preventDefault();\n if (e.shiftKey) {\n last.focus();\n } else {\n first.focus();\n }\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === container) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n if (lastActiveElement.current) {\n lastActiveElement.current.focus();\n lastActiveElement.current = null;\n }\n };\n }, [open, onClose]);\n\n if (!open && !mounted) return null;\n\n return (\n <BottomSheetContext.Provider value={{ titleId, descId }}>\n {/* Backdrop overlay */}\n <div\n onClick={(e) => e.target === e.currentTarget && onClose()}\n className={cn(\n \"fixed inset-0 z-[100] grid items-end sm:place-items-center p-0 sm:p-6 backdrop-blur-[3px] transition-all duration-200\",\n \"bg-[color-mix(in_oklch,#09090b_55%,transparent)]\",\n open\n ? \"opacity-100 pointer-events-auto visible\"\n : \"opacity-0 pointer-events-none invisible\"\n )}\n >\n {/* Panel wrapper */}\n <div\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descId}\n tabIndex={-1}\n className={cn(\n \"relative w-full bg-surface border-t sm:border border-border shadow-kj-lg transition-all duration-200 outline-none\",\n \"rounded-t-kj-2xl sm:rounded-kj-2xl flex flex-col max-h-[85vh] sm:max-h-[90vh]\",\n // Mobile sliding & Desktop scale/opacity transitions\n open\n ? \"translate-y-0 sm:scale-100 sm:opacity-100\"\n : \"translate-y-full sm:scale-95 sm:opacity-0\",\n // Mobile styling vs Desktop styling\n \"bottom-0 sm:bottom-auto\",\n maxWidth,\n className\n )}\n >\n {/* Mobile Drag Handle */}\n <div className=\"flex justify-center py-2 sm:hidden cursor-grab\">\n <div className=\"w-12 h-1.5 rounded-full bg-muted-foreground/20\" />\n </div>\n\n {/* Close button (rendered on top right for desktop modal look) */}\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"absolute top-4 right-4 p-1.5 rounded-kj-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer z-10\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n\n {children}\n </div>\n </div>\n </BottomSheetContext.Provider>\n );\n}\n\nexport function BottomSheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"p-6 flex flex-col gap-1.5 border-b border-border\", className)} {...props} />\n );\n}\n\nexport function BottomSheetTitle({\n className,\n id,\n children,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement>) {\n const ctx = React.useContext(BottomSheetContext);\n return (\n <h2\n id={id ?? ctx?.titleId}\n className={cn(\"m-0 text-[1.15rem] font-bold tracking-[-0.01em]\", className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function BottomSheetDescription({\n className,\n id,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n const ctx = React.useContext(BottomSheetContext);\n return (\n <p\n id={id ?? ctx?.descId}\n className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function BottomSheetContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"p-6 overflow-y-auto flex-1\", className)} {...props} />;\n}\n\nexport function BottomSheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"p-6 border-t border-border flex gap-2.5 justify-end mt-auto\", className)}\n {...props}\n />\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/cn\";\n\nconst kbdVariants = cva(\n \"inline-flex items-center justify-center font-mono font-medium text-muted-foreground bg-muted border border-border border-b-2 rounded-kj-sm select-none\",\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 px-1 text-[0.68rem]\",\n md: \"h-6 min-w-6 px-1.5 text-[0.78rem]\",\n },\n },\n defaultVariants: { size: \"sm\" },\n }\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof kbdVariants> {\n /** Render one <kbd> chip per key (separated by a small gap); children are ignored. */\n keys?: string[];\n}\n\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, keys, children, ...props }, ref) => {\n if (keys && keys.length > 0) {\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n >\n {keys.map((k, i) => (\n <kbd key={i} className={kbdVariants({ size })}>\n {k}\n </kbd>\n ))}\n </span>\n );\n }\n return (\n <kbd ref={ref} className={cn(kbdVariants({ size }), className)} {...props}>\n {children}\n </kbd>\n );\n }\n);\nKbd.displayName = \"Kbd\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The snippet text to display. */\n code: string;\n /** Language label shown in the header when no filename is set (e.g. \"tsx\"). */\n language?: string;\n /** Optional filename label shown in the header; takes precedence over language. */\n filename?: string;\n /** Show the copy-to-clipboard button. */\n copyable?: boolean;\n /** Max height in pixels; content scrolls vertically beyond it. */\n maxHeight?: number;\n}\n\nexport const CodeBlock = React.forwardRef<HTMLDivElement, CodeBlockProps>(\n ({ className, code, language, filename, copyable = true, maxHeight, ...props }, ref) => {\n const [copied, setCopied] = React.useState(false);\n const canCopy = copyable && typeof navigator !== \"undefined\" && !!navigator.clipboard;\n\n const onCopy = () => {\n navigator.clipboard.writeText(code).then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1500);\n },\n () => {\n /* clipboard rejected — keep \"Copy\" label */\n }\n );\n };\n\n const label = filename ?? language;\n\n return (\n <div\n ref={ref}\n className={cn(\"rounded-kj-md border border-border bg-muted/50 overflow-hidden\", className)}\n {...props}\n >\n {(label || canCopy) && (\n <div className=\"flex items-center justify-between gap-2 px-3.5 py-2 border-b border-border\">\n <span className=\"text-[0.72rem] font-mono text-muted-foreground\">{label}</span>\n {canCopy && (\n <button\n type=\"button\"\n onClick={onCopy}\n className=\"text-[0.72rem] font-medium text-muted-foreground hover:text-foreground transition-colors cursor-pointer bg-transparent border-0 p-0\"\n >\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n )}\n </div>\n )}\n <pre\n className=\"m-0 px-3.5 py-3 overflow-x-auto text-[0.8rem] leading-relaxed font-mono text-foreground\"\n style={maxHeight ? { maxHeight, overflowY: \"auto\" } : undefined}\n >\n <code>{code}</code>\n </pre>\n </div>\n );\n }\n);\nCodeBlock.displayName = \"CodeBlock\";\n","import { cn } from \"../lib/cn\";\n\nexport interface SeparatorProps {\n orientation?: \"horizontal\" | \"vertical\";\n /** Purely visual by default (role=\"none\", hidden from a11y tree). Set false for a semantically meaningful divider. */\n decorative?: boolean;\n className?: string;\n}\n\n/** Thin layout divider. Decorative by default; pass decorative={false} for a semantic role=\"separator\". */\nexport function Separator({\n orientation = \"horizontal\",\n decorative = true,\n className,\n}: SeparatorProps) {\n const semanticProps = decorative\n ? { role: \"none\" as const, \"aria-hidden\": true as const }\n : { role: \"separator\" as const, \"aria-orientation\": orientation };\n\n return (\n <div\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"w-px h-full\",\n className\n )}\n {...semanticProps}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\ninterface PopoverCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\nconst PopoverContext = React.createContext<PopoverCtx | null>(null);\n\nfunction usePopoverContext(part: string): PopoverCtx {\n const ctx = React.useContext(PopoverContext);\n if (!ctx) throw new Error(`${part} must be used inside <Popover>`);\n return ctx;\n}\n\nexport interface PopoverProps {\n /** Trigger and content elements. */\n children: React.ReactNode;\n /** Additional classes for the positioning wrapper. */\n className?: string;\n /** Controlled open state. Omit for uncontrolled behavior. */\n open?: boolean;\n /** Called whenever the open state should change. */\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Popover({ children, className, open: openProp, onOpenChange }: PopoverProps) {\n const [openState, setOpenState] = React.useState(false);\n const controlled = openProp !== undefined;\n const open = controlled ? openProp : openState;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const ref = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (v: boolean) => {\n if (!controlled) setOpenState(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open, setOpen]);\n\n return (\n <PopoverContext.Provider value={{ open, setOpen, triggerRef }}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </PopoverContext.Provider>\n );\n}\n\nexport const PopoverTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { asChild?: boolean }\n>(({ onClick, asChild, ...props }, ref) => {\n const ctx = usePopoverContext(\"PopoverTrigger\");\n const setRefs = (node: HTMLButtonElement | null) => {\n // eslint-disable-next-line react-hooks/immutability\n ctx.triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n if (asChild) {\n const child = React.Children.only(props.children) as React.ReactElement<\n React.ComponentPropsWithRef<\"button\">\n >;\n return React.cloneElement(child, {\n ref: setRefs,\n ...props,\n ...child.props,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n child.props.onClick?.(e);\n },\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": ctx.open,\n });\n }\n return (\n <button\n /* eslint-disable-next-line react-hooks/immutability */\n ref={setRefs}\n {...props}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n />\n );\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nconst sideAlignClasses: Record<string, string> = {\n \"bottom-start\": \"top-[calc(100%+6px)] left-0\",\n \"bottom-center\": \"top-[calc(100%+6px)] left-1/2 -translate-x-1/2\",\n \"bottom-end\": \"top-[calc(100%+6px)] right-0\",\n \"top-start\": \"bottom-[calc(100%+6px)] left-0\",\n \"top-center\": \"bottom-[calc(100%+6px)] left-1/2 -translate-x-1/2\",\n \"top-end\": \"bottom-[calc(100%+6px)] right-0\",\n \"left-start\": \"right-[calc(100%+6px)] top-0\",\n \"left-center\": \"right-[calc(100%+6px)] top-1/2 -translate-y-1/2\",\n \"left-end\": \"right-[calc(100%+6px)] bottom-0\",\n \"right-start\": \"left-[calc(100%+6px)] top-0\",\n \"right-center\": \"left-[calc(100%+6px)] top-1/2 -translate-y-1/2\",\n \"right-end\": \"left-[calc(100%+6px)] bottom-0\",\n};\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which side of the trigger the panel opens on. */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Alignment along the chosen side. */\n align?: \"start\" | \"center\" | \"end\";\n}\n\nexport function PopoverContent({\n className,\n side = \"bottom\",\n align = \"center\",\n children,\n ...props\n}: PopoverContentProps) {\n const ctx = usePopoverContext(\"PopoverContent\");\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ctx.open) ref.current?.focus();\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n return (\n <div\n ref={ref}\n role=\"dialog\"\n tabIndex={-1}\n className={cn(\n \"absolute z-40 min-w-[200px] p-4 rounded-kj-md bg-surface border border-border shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n sideAlignClasses[`${side}-${align}`],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface ComboboxBaseProps {\n options: ComboboxOption[];\n /** Trigger text when nothing is selected. Default \"Select…\". */\n placeholder?: string;\n /** Search input placeholder inside the popup. Default \"Search…\". */\n searchPlaceholder?: string;\n /** Shown when the filter matches no options. Default \"No results\". */\n emptyMessage?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nexport type ComboboxProps =\n | (ComboboxBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n })\n | (ComboboxBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n });\n\n// Internal selection is always an array; single mode holds at most one entry.\nfunction toArray(v: string | string[] | undefined): string[] {\n if (v == null) return [];\n return Array.isArray(v) ? v : [v];\n}\n\nexport const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(\n function Combobox(props, ref) {\n const {\n options,\n placeholder = \"Select…\",\n searchPlaceholder = \"Search…\",\n emptyMessage = \"No results\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n } = props;\n const multiple = props.multiple ?? false;\n\n const reactId = React.useId();\n const baseId = id ?? reactId;\n const listId = `${baseId}-listbox`;\n const optionId = (i: number) => `${baseId}-opt-${i}`;\n\n const controlled = props.value !== undefined;\n const [internal, setInternal] = React.useState<string[]>(() => toArray(props.defaultValue));\n const selected = controlled ? toArray(props.value) : internal;\n\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const filtered = React.useMemo(() => {\n const q = search.trim().toLowerCase();\n return q ? options.filter((o) => o.label.toLowerCase().includes(q)) : options;\n }, [search, options]);\n\n const firstEnabled = React.useCallback(() => {\n const i = filtered.findIndex((o) => !o.disabled);\n return i === -1 ? 0 : i;\n }, [filtered]);\n\n const labelFor = (v: string) => options.find((o) => o.value === v)?.label ?? v;\n\n const emit = (next: string[]) => {\n if (!controlled) setInternal(next);\n if (props.multiple) {\n props.onChange?.(next);\n } else {\n props.onChange?.(next[0] ?? \"\");\n }\n };\n\n const closePopup = React.useCallback(() => {\n setOpen(false);\n setSearch(\"\");\n }, []);\n\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleSelect = (opt: ComboboxOption) => {\n if (opt.disabled) return;\n if (multiple) {\n const next = selected.includes(opt.value)\n ? selected.filter((v) => v !== opt.value)\n : [...selected, opt.value];\n emit(next);\n inputRef.current?.focus();\n } else {\n emit([opt.value]);\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const removeValue = (value: string) => {\n emit(selected.filter((v) => v !== value));\n };\n\n // Reset the active option to the first enabled row on open / filter change.\n React.useEffect(() => {\n if (open) setActiveIndex(firstEnabled());\n }, [open, firstEnabled]);\n\n // Autofocus the search input when the popup opens.\n React.useEffect(() => {\n if (open) inputRef.current?.focus();\n }, [open]);\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n // Keep the active option scrolled into view.\n React.useEffect(() => {\n const el = listRef.current?.querySelector('[data-active=\"true\"]') as HTMLElement | null;\n el?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex]);\n\n const moveActive = (dir: 1 | -1) => {\n if (filtered.length === 0) return;\n setActiveIndex((prev) => {\n let i = prev;\n for (let step = 0; step < filtered.length; step++) {\n i = (i + dir + filtered.length) % filtered.length;\n if (!filtered[i]?.disabled) return i;\n }\n return prev;\n });\n };\n\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n setActiveIndex(firstEnabled());\n break;\n case \"End\":\n e.preventDefault();\n for (let i = filtered.length - 1; i >= 0; i--) {\n if (!filtered[i].disabled) {\n setActiveIndex(i);\n break;\n }\n }\n break;\n case \"Enter\":\n e.preventDefault();\n if (filtered[activeIndex]) handleSelect(filtered[activeIndex]);\n break;\n case \"Escape\":\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n break;\n case \"Backspace\":\n if (multiple && search === \"\" && selected.length > 0) {\n removeValue(selected[selected.length - 1]);\n }\n break;\n }\n };\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n }\n };\n\n const showPlaceholder = multiple ? selected.length === 0 : !selected[0];\n\n return (\n <div ref={containerRef} className={cn(\"relative w-full\", className)}>\n <div\n className={cn(\n \"relative flex w-full items-center gap-1.5 flex-wrap border rounded-kj-md bg-surface\",\n \"pl-[0.85rem] pr-9 py-[calc(0.45rem*var(--kj-density,1))] min-h-[calc(2.5rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus-within:outline-none focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/30\",\n disabled && \"bg-muted cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\"\n )}\n >\n {multiple &&\n selected.map((value) => (\n <span\n key={value}\n className=\"inline-flex items-center gap-1 rounded-kj-sm bg-primary/10 text-primary text-xs font-medium pl-2 pr-1 py-0.5\"\n >\n {labelFor(value)}\n <button\n type=\"button\"\n aria-label={`Remove ${labelFor(value)}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n removeValue(value);\n }}\n className=\"rounded-full p-0.5 leading-none hover:bg-primary/20\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-3 w-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </button>\n </span>\n ))}\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open && filtered.length > 0 ? listId : undefined}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"flex-1 min-w-[60px] text-left bg-transparent border-none outline-none cursor-pointer text-sm disabled:cursor-not-allowed\",\n showPlaceholder && \"text-muted-foreground\"\n )}\n >\n {multiple\n ? selected.length === 0\n ? placeholder\n : \"\"\n : (selected[0] ? labelFor(selected[0]) : \"\") || placeholder}\n </button>\n {name &&\n multiple &&\n selected.map((v) => <input key={v} type=\"hidden\" name={name} value={v} />)}\n {name && !multiple && <input type=\"hidden\" name={name} value={selected[0] ?? \"\"} />}\n <span className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </div>\n\n {open && (\n <div className=\"absolute z-40 top-[calc(100%+6px)] left-0 w-full min-w-[12rem] bg-surface border border-border rounded-kj-md shadow-kj-lg overflow-hidden animate-[kjpop_.12s_ease]\">\n <div className=\"p-2 border-b border-border\">\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={open}\n aria-controls={filtered.length > 0 ? listId : undefined}\n aria-activedescendant={filtered[activeIndex] ? optionId(activeIndex) : undefined}\n aria-label={searchPlaceholder}\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onKeyDown={onInputKeyDown}\n className=\"w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none px-2 py-1\"\n />\n </div>\n {filtered.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">{emptyMessage}</div>\n ) : (\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={placeholder}\n className=\"max-h-60 overflow-y-auto p-1\"\n >\n {filtered.map((opt, i) => {\n const isSelected = selected.includes(opt.value);\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n id={optionId(i)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={isActive || undefined}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n onClick={() => handleSelect(opt)}\n className={cn(\n \"flex items-center justify-between gap-2 px-3 py-2 rounded-kj-sm text-sm cursor-pointer select-none\",\n opt.disabled && \"text-muted-foreground opacity-50 cursor-not-allowed\",\n !opt.disabled && isActive && \"bg-primary/10 text-primary\",\n !opt.disabled && !isActive && \"text-foreground hover:bg-muted\"\n )}\n >\n <span>{opt.label}</span>\n {isSelected && (\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-primary shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m5 12 5 5L20 7\" />\n </svg>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\nCombobox.displayName = \"Combobox\";\n\n// Distributive omit preserves the discriminated union (plain Omit<Union, K>\n// collapses it to the shared keys and drops the `multiple` narrowing).\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\nexport type ComboboxFieldProps = DistributiveOmit<ComboboxProps, \"error\"> & {\n label: string;\n hint?: string;\n error?: string;\n required?: boolean;\n};\n\nimport { FormField } from \"./form-field\";\n\nexport const ComboboxField = React.forwardRef<HTMLButtonElement, ComboboxFieldProps>(\n function ComboboxField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <Combobox ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nComboboxField.displayName = \"ComboboxField\";\n","export function startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function addDays(d: Date, n: number): Date {\n const r = new Date(d);\n r.setDate(r.getDate() + n);\n return r;\n}\n\nexport function addMonths(d: Date, n: number): Date {\n const r = new Date(d);\n r.setMonth(r.getMonth() + n);\n return r;\n}\n\n// setMonth/setFullYear roll over into the next month when the target month is\n// shorter than the current day-of-month (e.g. Jan 31 + 1 month -> Mar 3, not\n// Feb 28). Clamp the day to the target month's actual length to avoid that.\nfunction clampToMonth(year: number, month: number, day: number): Date {\n const daysInTarget = new Date(year, month + 1, 0).getDate();\n return new Date(year, month, Math.min(day, daysInTarget));\n}\n\nexport function addMonthsClamped(d: Date, n: number): Date {\n return clampToMonth(d.getFullYear(), d.getMonth() + n, d.getDate());\n}\n\nexport function addYearsClamped(d: Date, n: number): Date {\n return clampToMonth(d.getFullYear() + n, d.getMonth(), d.getDate());\n}\n\nexport function startOfMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1);\n}\n\nexport function startOfWeek(d: Date): Date {\n const r = startOfDay(d);\n r.setDate(r.getDate() - r.getDay());\n return r;\n}\n\nexport function buildGridDays(viewMonth: Date): Date[] {\n const gridStart = startOfWeek(startOfMonth(viewMonth));\n return Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n}\n\nexport function dateKey(d: Date): string {\n return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n}\n\n// Local YYYY-MM-DD, not Date#toISOString() — that converts to UTC first and\n// can shift the calendar date across a timezone boundary.\nexport function toISODateString(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${day}`;\n}\n\nexport const monthLabelFormat = new Intl.DateTimeFormat(undefined, {\n month: \"long\",\n year: \"numeric\",\n});\nexport const fullDateFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"full\" });\nconst weekdayShortFormat = new Intl.DateTimeFormat(undefined, { weekday: \"short\" });\nconst weekdayLongFormat = new Intl.DateTimeFormat(undefined, { weekday: \"long\" });\n\nexport const weekdayLabels = Array.from({ length: 7 }, (_, i) => {\n const d = addDays(startOfWeek(new Date()), i);\n return { key: i, short: weekdayShortFormat.format(d), long: weekdayLongFormat.format(d) };\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport {\n startOfDay,\n isSameDay,\n addDays,\n startOfWeek,\n buildGridDays,\n dateKey,\n addMonthsClamped,\n addYearsClamped,\n fullDateFormat,\n monthLabelFormat,\n weekdayLabels,\n} from \"./calendar-internals\";\n\nexport interface CalendarCellState {\n selected?: boolean;\n rangeStart?: boolean;\n rangeEnd?: boolean;\n inRange?: boolean;\n today?: boolean;\n}\n\nexport interface CalendarGridProps {\n viewMonth: Date;\n isDayDisabled: (d: Date) => boolean;\n cellState: (d: Date) => CalendarCellState;\n onSelectDay: (d: Date) => void;\n /** Fired on hover and on keyboard focus-move within this grid (not on click). */\n onFocusDay?: (d: Date) => void;\n /** Seeds the roving-tabindex focus once, on mount. Not re-synced on later prop changes (matches Calendar's existing behavior). */\n initialFocusDate: Date;\n className?: string;\n}\n\nexport const CalendarGrid = React.forwardRef<HTMLDivElement, CalendarGridProps>(\n function CalendarGrid(\n { viewMonth, isDayDisabled, cellState, onSelectDay, onFocusDay, initialFocusDate, className },\n ref\n ) {\n const gridDays = React.useMemo(() => buildGridDays(viewMonth), [viewMonth]);\n const inViewMonth = (d: Date) =>\n d.getMonth() === viewMonth.getMonth() && d.getFullYear() === viewMonth.getFullYear();\n\n const [focusedDate, setFocusedDate] = React.useState<Date>(() => startOfDay(initialFocusDate));\n const pendingFocusRef = React.useRef(false);\n const gridRef = React.useRef<HTMLDivElement>(null);\n\n const rovingTarget =\n inViewMonth(focusedDate) && !isDayDisabled(focusedDate)\n ? focusedDate\n : (gridDays.find((d) => inViewMonth(d) && !isDayDisabled(d)) ??\n gridDays.find((d) => inViewMonth(d)) ??\n gridDays[0]);\n\n const moveFocusTo = (next: Date, viaKeyboard: boolean) => {\n pendingFocusRef.current = viaKeyboard;\n setFocusedDate(next);\n onFocusDay?.(next);\n };\n\n React.useEffect(() => {\n if (!pendingFocusRef.current) return;\n pendingFocusRef.current = false;\n const el = gridRef.current?.querySelector(\n `[data-date=\"${dateKey(rovingTarget)}\"]`\n ) as HTMLElement | null;\n el?.focus();\n }, [rovingTarget]);\n\n const step = (from: Date, delta: number): Date => {\n let next = addDays(from, delta);\n let guard = 0;\n while (isDayDisabled(next) && guard < 1000) {\n next = addDays(next, delta);\n guard++;\n }\n return isDayDisabled(next) ? from : next;\n };\n\n const selectDay = (d: Date) => {\n if (isDayDisabled(d)) return;\n moveFocusTo(d, false);\n onSelectDay(d);\n };\n\n const onGridKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, 1), true);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, -1), true);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, 7), true);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveFocusTo(step(rovingTarget, -7), true);\n break;\n case \"Home\": {\n e.preventDefault();\n const target = startOfWeek(rovingTarget);\n moveFocusTo(isDayDisabled(target) ? step(target, 1) : target, true);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const target = addDays(startOfWeek(rovingTarget), 6);\n moveFocusTo(isDayDisabled(target) ? step(target, -1) : target, true);\n break;\n }\n case \"PageUp\": {\n e.preventDefault();\n const target = e.shiftKey\n ? addYearsClamped(rovingTarget, -1)\n : addMonthsClamped(rovingTarget, -1);\n moveFocusTo(isDayDisabled(target) ? step(target, -1) : target, true);\n break;\n }\n case \"PageDown\": {\n e.preventDefault();\n const target = e.shiftKey\n ? addYearsClamped(rovingTarget, 1)\n : addMonthsClamped(rovingTarget, 1);\n moveFocusTo(isDayDisabled(target) ? step(target, 1) : target, true);\n break;\n }\n case \"Enter\":\n case \" \":\n e.preventDefault();\n selectDay(rovingTarget);\n break;\n }\n };\n\n return (\n <div ref={ref} className={cn(className)}>\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={monthLabelFormat.format(viewMonth)}\n onKeyDown={onGridKeyDown}\n >\n <div role=\"row\" className=\"grid grid-cols-7\">\n {weekdayLabels.map((w) => (\n <div\n key={w.key}\n role=\"columnheader\"\n aria-label={w.long}\n className=\"h-8 flex items-center justify-center text-xs font-medium text-muted-foreground\"\n >\n {w.short}\n </div>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, week) => (\n <div role=\"row\" key={week} className=\"grid grid-cols-7\">\n {gridDays.slice(week * 7, week * 7 + 7).map((day) => {\n if (!inViewMonth(day)) {\n return (\n <div key={dateKey(day)} role=\"gridcell\" aria-hidden=\"true\" className=\"h-9\" />\n );\n }\n const disabled = isDayDisabled(day);\n const state = cellState(day);\n const isRoving = isSameDay(day, rovingTarget);\n const isEndpoint = !!(state.selected || state.rangeStart || state.rangeEnd);\n return (\n <button\n key={dateKey(day)}\n type=\"button\"\n role=\"gridcell\"\n data-date={dateKey(day)}\n tabIndex={isRoving ? 0 : -1}\n aria-selected={isEndpoint}\n aria-disabled={disabled || undefined}\n aria-label={fullDateFormat.format(day)}\n onMouseEnter={() => onFocusDay?.(day)}\n onClick={() => selectDay(day)}\n className={cn(\n \"h-9 w-9 mx-auto flex items-center justify-center text-sm\",\n state.inRange && !isEndpoint ? \"rounded-none\" : \"rounded-full\",\n \"focus:outline-none focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"text-muted-foreground opacity-40 cursor-not-allowed\",\n !disabled && isEndpoint && \"bg-primary text-primary-foreground\",\n !disabled && state.inRange && !isEndpoint && \"bg-primary/15 text-foreground\",\n !disabled &&\n !isEndpoint &&\n !state.inRange &&\n state.today &&\n \"ring-1 ring-primary text-primary font-medium\",\n !disabled &&\n !isEndpoint &&\n !state.inRange &&\n !state.today &&\n \"text-foreground hover:bg-muted\"\n )}\n >\n {day.getDate()}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\nCalendarGrid.displayName = \"CalendarGrid\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { CalendarGrid, type CalendarCellState } from \"./calendar-grid\";\nimport {\n isSameDay,\n addMonths,\n startOfMonth,\n startOfDay,\n monthLabelFormat,\n} from \"./calendar-internals\";\n\nexport interface CalendarProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n /** Controlled displayed month. Omit for uncontrolled behavior. */\n month?: Date;\n /** Initial displayed month when uncontrolled. Defaults to `value` ?? today. */\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n className?: string;\n}\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(\n {\n value,\n defaultValue,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n className,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(defaultValue);\n const selected = controlled ? value : internalValue;\n\n const monthControlled = month !== undefined;\n const [internalMonth, setInternalMonth] = React.useState<Date>(() =>\n startOfMonth(month ?? defaultMonth ?? selected ?? new Date())\n );\n const viewMonth = monthControlled ? startOfMonth(month as Date) : internalMonth;\n\n const setViewMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (!monthControlled) setInternalMonth(normalized);\n onMonthChange?.(normalized);\n };\n\n const isDayDisabled = React.useCallback(\n (d: Date) => {\n if (min && d < startOfDay(min)) return true;\n if (max && d > startOfDay(max)) return true;\n return disabledDates?.(d) ?? false;\n },\n [min, max, disabledDates]\n );\n\n const commitValue = (d: Date) => {\n if (!controlled) setInternalValue(d);\n onChange?.(d);\n };\n\n const today = new Date();\n const cellState = (d: Date): CalendarCellState => ({\n selected: selected ? isSameDay(d, selected) : false,\n today: isSameDay(d, today),\n });\n\n const inViewMonth = (d: Date) =>\n d.getMonth() === viewMonth.getMonth() && d.getFullYear() === viewMonth.getFullYear();\n\n // CalendarGrid owns roving focus internally and only reports where it moved.\n // When a keyboard move (PageUp/PageDown/Shift+PageUp/PageDown, or Arrow keys\n // near a month boundary) lands outside the currently displayed month, this\n // is what advances the header/grid to follow it — mirrors the pre-refactor\n // Calendar's own `moveFocusTo`, which called `setViewMonth` directly.\n const handleFocusDay = (d: Date) => {\n if (!inViewMonth(d)) setViewMonth(d);\n };\n\n return (\n <div ref={ref} className={cn(\"w-[280px] select-none\", className)}>\n <div className=\"flex items-center justify-between mb-2\">\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n onClick={() => setViewMonth(addMonths(viewMonth, -1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(viewMonth)}\n </span>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n onClick={() => setViewMonth(addMonths(viewMonth, 1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n </div>\n <CalendarGrid\n viewMonth={viewMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={commitValue}\n onFocusDay={handleFocusDay}\n initialFocusDate={selected ?? new Date()}\n />\n </div>\n );\n});\nCalendar.displayName = \"Calendar\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Calendar } from \"./calendar\";\nimport { toISODateString } from \"./calendar-internals\";\n\nexport interface DatePickerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Trigger text when nothing is selected. Default \"Pick a date…\". */\n placeholder?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nconst displayFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" });\n\nexport const DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDates,\n placeholder = \"Pick a date…\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(defaultValue);\n const selected = controlled ? value : internalValue;\n\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const commitValue = (d: Date) => {\n if (!controlled) setInternalValue(d);\n onChange?.(d);\n };\n\n const closePopup = React.useCallback(() => setOpen(false), []);\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleCalendarChange = (d: Date) => {\n commitValue(d);\n closePopup();\n triggerRef.current?.focus();\n };\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n } else if (e.key === \"Escape\" && open) {\n // The panel is a DOM sibling of the trigger, not a descendant, and\n // the Calendar deliberately doesn't auto-focus into the grid on\n // open. So while focus remains on the trigger, a real Escape\n // keydown never bubbles into the panel's onKeyDown handler — it\n // must be handled here instead. Focus is already on the trigger,\n // so no refocus is needed.\n e.preventDefault();\n closePopup();\n }\n };\n\n const onPanelKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative inline-block w-full\", className)}>\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"grid\"\n aria-expanded={open}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"w-full flex items-center justify-between gap-2 border rounded-kj-md bg-surface text-left text-sm\",\n \"pl-[0.85rem] pr-3 py-[calc(0.6rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"bg-muted text-muted-foreground cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n !selected && \"text-muted-foreground\"\n )}\n >\n <span>{selected ? displayFormat.format(selected) : placeholder}</span>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-muted-foreground shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 10h18M8 2v4M16 2v4\" />\n </svg>\n </button>\n {name && (\n <input type=\"hidden\" name={name} value={selected ? toISODateString(selected) : \"\"} />\n )}\n\n {open && (\n <div\n onKeyDown={onPanelKeyDown}\n className=\"absolute z-40 top-[calc(100%+6px)] left-0 bg-surface border border-border rounded-kj-md shadow-kj-lg p-3 animate-[kjpop_.12s_ease]\"\n >\n <Calendar\n value={selected}\n onChange={handleCalendarChange}\n min={min}\n max={max}\n disabledDates={disabledDates}\n />\n </div>\n )}\n </div>\n );\n});\nDatePicker.displayName = \"DatePicker\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface DatePickerFieldProps extends Omit<DatePickerProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const DatePickerField = React.forwardRef<HTMLButtonElement, DatePickerFieldProps>(\n function DatePickerField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <DatePicker ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nDatePickerField.displayName = \"DatePickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { CalendarGrid, type CalendarCellState } from \"./calendar-grid\";\nimport {\n startOfDay,\n isSameDay,\n addMonths,\n startOfMonth,\n monthLabelFormat,\n} from \"./calendar-internals\";\n\nexport interface DateRange {\n start?: Date;\n end?: Date;\n}\n\nexport interface RangeCalendarProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n /** Controlled left-month. The right month is always this + 1 (locked navigation). */\n month?: Date;\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Force rendering 1 month instead of 2 side-by-side. */\n singleMonth?: boolean;\n className?: string;\n}\n\nfunction isBetweenExclusive(d: Date, lo: Date, hi: Date): boolean {\n const t = startOfDay(d).getTime();\n return t > startOfDay(lo).getTime() && t < startOfDay(hi).getTime();\n}\n\nexport const RangeCalendar = React.forwardRef<HTMLDivElement, RangeCalendarProps>(\n function RangeCalendar(\n {\n value,\n defaultValue,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n singleMonth,\n className,\n },\n ref\n ) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<DateRange>(defaultValue ?? {});\n const range = controlled ? (value as DateRange) : internalValue;\n\n const monthControlled = month !== undefined;\n const [internalMonth, setInternalMonth] = React.useState<Date>(() =>\n startOfMonth(month ?? defaultMonth ?? range.start ?? new Date())\n );\n const leftMonth = monthControlled ? startOfMonth(month as Date) : internalMonth;\n const rightMonth = addMonths(leftMonth, 1);\n\n const setViewMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (!monthControlled) setInternalMonth(normalized);\n onMonthChange?.(normalized);\n };\n\n const isDayDisabled = React.useCallback(\n (d: Date) => {\n if (min && d < startOfDay(min)) return true;\n if (max && d > startOfDay(max)) return true;\n return disabledDates?.(d) ?? false;\n },\n [min, max, disabledDates]\n );\n\n // Purely internal — never part of the controlled/uncontrolled `value`. Tracks\n // an in-progress pick (start clicked, end not yet chosen) so onChange fires\n // exactly once, only when a full range completes.\n const [pendingStart, setPendingStart] = React.useState<Date | undefined>(undefined);\n const [hoverDate, setHoverDate] = React.useState<Date | undefined>(undefined);\n\n const commitRange = (next: DateRange) => {\n if (!controlled) setInternalValue(next);\n onChange?.(next);\n };\n\n const handleSelectDay = (d: Date) => {\n const day = startOfDay(d);\n if (pendingStart === undefined) {\n setPendingStart(day);\n setHoverDate(undefined);\n return;\n }\n if (day < startOfDay(pendingStart)) {\n setPendingStart(day);\n setHoverDate(undefined);\n return;\n }\n commitRange({ start: pendingStart, end: day });\n setPendingStart(undefined);\n setHoverDate(undefined);\n };\n\n const today = new Date();\n const previewEnd = pendingStart !== undefined ? hoverDate : undefined;\n\n const cellState = (d: Date): CalendarCellState => {\n const isToday = isSameDay(d, today);\n if (pendingStart !== undefined) {\n if (previewEnd === undefined) {\n return { rangeStart: isSameDay(d, pendingStart), today: isToday };\n }\n if (startOfDay(previewEnd) < startOfDay(pendingStart)) {\n return { rangeStart: isSameDay(d, previewEnd), today: isToday };\n }\n return {\n rangeStart: isSameDay(d, pendingStart),\n rangeEnd: isSameDay(d, previewEnd),\n inRange: isBetweenExclusive(d, pendingStart, previewEnd),\n today: isToday,\n };\n }\n if (range.start && range.end) {\n return {\n rangeStart: isSameDay(d, range.start),\n rangeEnd: isSameDay(d, range.end),\n inRange: isBetweenExclusive(d, range.start, range.end),\n today: isToday,\n };\n }\n return { rangeStart: range.start ? isSameDay(d, range.start) : false, today: isToday };\n };\n\n const inLockedRange = (d: Date) =>\n (d.getMonth() === leftMonth.getMonth() && d.getFullYear() === leftMonth.getFullYear()) ||\n (d.getMonth() === rightMonth.getMonth() && d.getFullYear() === rightMonth.getFullYear());\n\n // Each CalendarGrid owns its own roving focus internally and only reports\n // where it moved via onFocusDay. That single callback serves two purposes\n // here: (1) drives the hover/keyboard-focus range preview (setHoverDate),\n // and (2) — mirroring Calendar's own onFocusDay wiring — advances the\n // locked month pair when a keyboard move (PageUp/PageDown, Shift+PageUp/\n // PageDown, or an Arrow key) lands outside both currently visible months.\n const handleFocusDay = (d: Date) => {\n if (pendingStart !== undefined) setHoverDate(d);\n if (!inLockedRange(d)) setViewMonth(d);\n };\n\n const navButton = (direction: \"prev\" | \"next\") => (\n <button\n type=\"button\"\n aria-label={direction === \"prev\" ? \"Previous month\" : \"Next month\"}\n onClick={() => setViewMonth(addMonths(leftMonth, direction === \"prev\" ? -1 : 1))}\n className=\"p-1.5 rounded-kj-sm text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {direction === \"prev\" ? <path d=\"m15 18-6-6 6-6\" /> : <path d=\"m9 18 6-6-6-6\" />}\n </svg>\n </button>\n );\n\n const showSingleMonth = singleMonth;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col sm:flex-row gap-4 sm:gap-6 select-none max-w-full overflow-hidden\",\n className\n )}\n >\n <div className=\"w-full sm:w-[280px]\">\n <div className=\"flex items-center justify-between mb-2\">\n {navButton(\"prev\")}\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(leftMonth)}\n </span>\n <span className={showSingleMonth ? \"\" : \"sm:hidden\"}>{navButton(\"next\")}</span>\n </div>\n <CalendarGrid\n viewMonth={leftMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={handleSelectDay}\n onFocusDay={handleFocusDay}\n initialFocusDate={pendingStart ?? range.start ?? new Date()}\n />\n </div>\n {!showSingleMonth && (\n <div className=\"hidden sm:block w-[280px]\">\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"w-[26px]\" aria-hidden=\"true\" />\n <span className=\"text-sm font-medium text-foreground\">\n {monthLabelFormat.format(rightMonth)}\n </span>\n {navButton(\"next\")}\n </div>\n <CalendarGrid\n viewMonth={rightMonth}\n isDayDisabled={isDayDisabled}\n cellState={cellState}\n onSelectDay={handleSelectDay}\n onFocusDay={handleFocusDay}\n initialFocusDate={pendingStart ?? range.start ?? new Date()}\n />\n </div>\n )}\n </div>\n );\n }\n);\nRangeCalendar.displayName = \"RangeCalendar\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { RangeCalendar, type DateRange } from \"./range-calendar\";\nimport { toISODateString } from \"./calendar-internals\";\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onChange?: (range: DateRange) => void;\n min?: Date;\n max?: Date;\n disabledDates?: (date: Date) => boolean;\n /** Trigger text when nothing is selected. Default \"Pick a date range…\". */\n placeholder?: string;\n disabled?: boolean;\n /** Visual error state (red border + aria-invalid on the trigger). */\n error?: boolean;\n /** Marks the trigger aria-required (buttons have no native `required` attribute). */\n required?: boolean;\n className?: string;\n id?: string;\n name?: string;\n \"aria-describedby\"?: string;\n}\n\nconst displayFormat = new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" });\n\nfunction formatRangeLabel(range: DateRange): string | undefined {\n if (!range.start || !range.end) return undefined;\n return `${displayFormat.format(range.start)} – ${displayFormat.format(range.end)}`;\n}\n\nexport const DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n function DateRangePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDates,\n placeholder = \"Pick a date range…\",\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n name,\n \"aria-describedby\": describedBy,\n },\n ref\n ) {\n const controlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<DateRange>(defaultValue ?? {});\n const selected = controlled ? value : internalValue;\n\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const setTriggerRef = (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n };\n\n const commitValue = (r: DateRange) => {\n if (!controlled) setInternalValue(r);\n onChange?.(r);\n };\n\n const closePopup = React.useCallback(() => setOpen(false), []);\n const openPopup = () => {\n if (!disabled) setOpen(true);\n };\n\n const handleRangeChange = (r: DateRange) => {\n commitValue(r);\n closePopup();\n triggerRef.current?.focus();\n };\n\n // Outside-click dismissal.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) closePopup();\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, closePopup]);\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPopup();\n } else if (e.key === \"Escape\" && open) {\n // The panel is a DOM sibling of the trigger, not a descendant, and\n // RangeCalendar deliberately doesn't auto-focus into a grid on open.\n // So a real Escape keydown while focus is on the trigger never\n // bubbles into the panel's onKeyDown handler — it must be handled\n // here instead. Refocus the trigger explicitly rather than assuming\n // it already has focus.\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const onPanelKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n closePopup();\n triggerRef.current?.focus();\n }\n };\n\n const label = formatRangeLabel(selected);\n\n return (\n <div ref={containerRef} className={cn(\"relative inline-block w-full\", className)}>\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={describedBy}\n onClick={() => (open ? closePopup() : openPopup())}\n onKeyDown={onTriggerKeyDown}\n className={cn(\n \"w-full flex items-center justify-between gap-2 border rounded-kj-md bg-surface text-left text-sm\",\n \"pl-[0.85rem] pr-3 py-[calc(0.6rem*var(--kj-density,1))]\",\n \"transition-[border-color,box-shadow] duration-150\",\n \"focus:outline-none focus:border-ring focus:ring-[3px] focus:ring-ring/30\",\n disabled && \"bg-muted text-muted-foreground cursor-not-allowed\",\n error ? \"border-danger\" : \"border-input\",\n !label && \"text-muted-foreground\"\n )}\n >\n <span>{label ?? placeholder}</span>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4 text-muted-foreground shrink-0\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 10h18M8 2v4M16 2v4\" />\n </svg>\n </button>\n {name && (\n <>\n <input\n type=\"hidden\"\n name={`${name}Start`}\n value={selected.start ? toISODateString(selected.start) : \"\"}\n />\n <input\n type=\"hidden\"\n name={`${name}End`}\n value={selected.end ? toISODateString(selected.end) : \"\"}\n />\n </>\n )}\n\n {open && (\n <div\n onKeyDown={onPanelKeyDown}\n className=\"absolute z-40 top-[calc(100%+6px)] left-0 sm:left-auto right-0 sm:right-auto max-w-[calc(100vw-2rem)] bg-surface border border-border rounded-kj-md shadow-kj-lg p-3 animate-[kjpop_.12s_ease]\"\n >\n <RangeCalendar\n value={selected}\n onChange={handleRangeChange}\n min={min}\n max={max}\n disabledDates={disabledDates}\n />\n </div>\n )}\n </div>\n );\n }\n);\nDateRangePicker.displayName = \"DateRangePicker\";\n\nimport { FormField } from \"./form-field\";\n\nexport interface DateRangePickerFieldProps extends Omit<DateRangePickerProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const DateRangePickerField = React.forwardRef<HTMLButtonElement, DateRangePickerFieldProps>(\n function DateRangePickerField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <DateRangePicker ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nDateRangePickerField.displayName = \"DateRangePickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface DropzoneProps {\n onFiles: (files: File[]) => void;\n /** Native picker filter hint. Real enforcement lives in FileUpload's validation. */\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n className?: string;\n /** Overrides the default drop-region content. */\n children?: React.ReactNode;\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean | \"true\" | \"false\";\n \"aria-required\"?: boolean;\n}\n\nexport const Dropzone = React.forwardRef<HTMLButtonElement, DropzoneProps>(function Dropzone(\n {\n onFiles,\n accept,\n multiple = true,\n disabled = false,\n className,\n children,\n id,\n \"aria-describedby\": describedBy,\n \"aria-invalid\": ariaInvalid,\n \"aria-required\": ariaRequired,\n },\n ref\n) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [dragActive, setDragActive] = React.useState(false);\n // dragenter/dragleave fire as the pointer crosses child elements; count\n // them so the highlight only clears when the pointer truly leaves.\n const dragCounter = React.useRef(0);\n const invalid = ariaInvalid === true || ariaInvalid === \"true\";\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files ? Array.from(e.target.files) : [];\n if (files.length > 0) onFiles(files);\n // Reset so re-selecting the same file fires change again.\n e.target.value = \"\";\n };\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault();\n if (disabled) return;\n dragCounter.current += 1;\n setDragActive(true);\n };\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n };\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n if (disabled) return;\n dragCounter.current -= 1;\n if (dragCounter.current <= 0) {\n dragCounter.current = 0;\n setDragActive(false);\n }\n };\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n dragCounter.current = 0;\n setDragActive(false);\n if (disabled) return;\n const files = e.dataTransfer?.files ? Array.from(e.dataTransfer.files) : [];\n if (files.length > 0) onFiles(files);\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <button\n ref={ref}\n type=\"button\"\n id={id}\n disabled={disabled}\n aria-describedby={describedBy}\n aria-invalid={ariaInvalid}\n aria-required={ariaRequired}\n data-drag-active={dragActive || undefined}\n onClick={openPicker}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"w-full flex flex-col items-center justify-center gap-2 rounded-kj-md border-2 border-dashed px-6 py-8 text-center text-sm transition-colors\",\n \"focus:outline-none focus:ring-[3px] focus:ring-ring/30\",\n disabled\n ? \"border-input bg-muted text-muted-foreground cursor-not-allowed\"\n : dragActive\n ? \"border-primary bg-primary/5 text-foreground cursor-pointer\"\n : invalid\n ? \"border-danger bg-surface text-muted-foreground hover:text-foreground cursor-pointer\"\n : \"border-input bg-surface text-muted-foreground hover:border-primary hover:text-foreground cursor-pointer\"\n )}\n >\n {children ?? (\n <>\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-7 w-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 16V4M7 9l5-5 5 5\" />\n <path d=\"M20 16v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3\" />\n </svg>\n <span>\n <span className=\"font-medium text-foreground\">Drag and drop files here</span>, or\n click to browse\n </span>\n </>\n )}\n </button>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleInputChange}\n className=\"sr-only\"\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n </div>\n );\n});\nDropzone.displayName = \"Dropzone\";\n","export type UploadStatus = \"pending\" | \"uploading\" | \"success\" | \"error\";\n\nexport interface UploadItem {\n id: string;\n file: File;\n /** Defaults to \"pending\" when unset. Drives the row's rendering. */\n status?: UploadStatus;\n /** 0–100. Shown as a Progress bar when status === \"uploading\". */\n progress?: number;\n /** Shown (danger tone) when status === \"error\". */\n error?: string;\n}\n\nexport interface FileRejection {\n file: File;\n reason: \"type\" | \"size\" | \"count\";\n}\n\nconst KB = 1024;\n\nexport function formatBytes(bytes: number): string {\n if (bytes < KB) return `${bytes} B`;\n const units = [\"KB\", \"MB\", \"GB\", \"TB\"];\n let value = bytes / KB;\n let unitIndex = 0;\n while (value >= KB && unitIndex < units.length - 1) {\n value /= KB;\n unitIndex++;\n }\n return `${value.toFixed(1)} ${units[unitIndex]}`;\n}\n\nexport function matchesAccept(file: File, accept?: string): boolean {\n if (!accept || accept.trim() === \"\") return true;\n const tokens = accept\n .split(\",\")\n .map((t) => t.trim())\n .filter(Boolean);\n if (tokens.length === 0) return true;\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n return tokens.some((token) => {\n const t = token.toLowerCase();\n if (t.startsWith(\".\")) return fileName.endsWith(t);\n if (t.endsWith(\"/*\")) return fileType.startsWith(t.slice(0, -1)); // \"image/*\" -> \"image/\"\n return fileType === t;\n });\n}\n\nlet idCounter = 0;\nexport function generateId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n idCounter += 1;\n return `file-${Date.now().toString(36)}-${idCounter}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nexport interface ValidateOptions {\n accept?: string;\n maxSize?: number;\n maxFiles?: number;\n existingCount?: number;\n multiple?: boolean;\n}\n\nexport function validateFiles(\n files: File[],\n { accept, maxSize, maxFiles, existingCount = 0, multiple = true }: ValidateOptions\n): { accepted: File[]; rejected: FileRejection[] } {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n // Single mode replaces the list, so existing count doesn't consume capacity.\n const effectiveExisting = multiple ? existingCount : 0;\n\n for (const file of files) {\n if (!matchesAccept(file, accept)) {\n rejected.push({ file, reason: \"type\" });\n continue;\n }\n if (maxSize != null && file.size > maxSize) {\n rejected.push({ file, reason: \"size\" });\n continue;\n }\n if (!multiple) {\n // Single mode: first type/size-valid file wins; the rest overflow.\n if (accepted.length === 0) accepted.push(file);\n else rejected.push({ file, reason: \"count\" });\n continue;\n }\n const capacity = maxFiles != null ? maxFiles - effectiveExisting - accepted.length : Infinity;\n if (capacity <= 0) {\n rejected.push({ file, reason: \"count\" });\n continue;\n }\n accepted.push(file);\n }\n\n return { accepted, rejected };\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Dropzone } from \"./dropzone\";\nimport { Progress } from \"./progress\";\nimport { FormField } from \"./form-field\";\nimport {\n formatBytes,\n generateId,\n validateFiles,\n type UploadItem,\n type UploadStatus,\n type FileRejection,\n} from \"./file-upload-internals\";\n\nexport type { UploadItem, UploadStatus, FileRejection };\n\nexport interface FileUploadProps {\n value?: UploadItem[];\n defaultValue?: UploadItem[];\n onChange?: (items: UploadItem[]) => void;\n /** Called with files rejected by validation on a given drop/selection. */\n onReject?: (rejections: FileRejection[]) => void;\n accept?: string;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n disabled?: boolean;\n /** Visual error state (danger border + aria-invalid on the dropzone). */\n error?: boolean;\n /** aria-required on the dropzone. */\n required?: boolean;\n className?: string;\n id?: string;\n \"aria-describedby\"?: string;\n}\n\nfunction FileIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\nexport const FileUpload = React.forwardRef<HTMLButtonElement, FileUploadProps>(function FileUpload(\n {\n value,\n defaultValue,\n onChange,\n onReject,\n accept,\n maxSize,\n maxFiles,\n multiple = true,\n disabled = false,\n error = false,\n required = false,\n className,\n id,\n \"aria-describedby\": describedBy,\n },\n ref\n) {\n const controlled = value !== undefined;\n const [internalItems, setInternalItems] = React.useState<UploadItem[]>(defaultValue ?? []);\n const items = controlled ? (value as UploadItem[]) : internalItems;\n\n const commit = (next: UploadItem[]) => {\n if (!controlled) setInternalItems(next);\n onChange?.(next);\n };\n\n const handleFiles = (files: File[]) => {\n const { accepted, rejected } = validateFiles(files, {\n accept,\n maxSize,\n maxFiles,\n existingCount: items.length,\n multiple,\n });\n if (rejected.length > 0) onReject?.(rejected);\n if (accepted.length === 0) return;\n const newItems: UploadItem[] = accepted.map((file) => ({\n id: generateId(),\n file,\n status: \"pending\",\n }));\n commit(multiple ? [...items, ...newItems] : newItems.slice(0, 1));\n };\n\n const removeItem = (itemId: string) => {\n commit(items.filter((it) => it.id !== itemId));\n };\n\n return (\n <div className={cn(\"w-full flex flex-col gap-3\", className)}>\n <Dropzone\n ref={ref}\n onFiles={handleFiles}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n id={id}\n aria-describedby={describedBy}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n />\n {items.length > 0 && (\n <ul className=\"flex flex-col gap-2\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-center gap-3 rounded-kj-md border border-border bg-surface px-3 py-2\"\n >\n <FileIcon className=\"h-5 w-5 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate text-sm text-foreground\">{item.file.name}</span>\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {formatBytes(item.file.size)}\n </span>\n </div>\n {item.status === \"uploading\" && item.progress != null && (\n <div className=\"mt-1.5 flex items-center gap-2\">\n <Progress value={item.progress} className=\"h-1.5\" />\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {Math.round(item.progress)}%\n </span>\n </div>\n )}\n {item.status === \"success\" && (\n <span className=\"mt-0.5 block text-xs text-success\">Uploaded</span>\n )}\n {item.status === \"error\" && (\n <span className=\"mt-0.5 block text-xs text-danger\">\n {item.error ?? \"Upload failed\"}\n </span>\n )}\n </div>\n {!disabled && (\n <button\n type=\"button\"\n aria-label={`Remove ${item.file.name}`}\n onClick={() => removeItem(item.id)}\n className=\"shrink-0 rounded-kj-sm p-1 text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n});\nFileUpload.displayName = \"FileUpload\";\n\nexport interface FileUploadFieldProps extends Omit<FileUploadProps, \"error\"> {\n label: string;\n hint?: string;\n error?: string;\n}\n\nexport const FileUploadField = React.forwardRef<HTMLButtonElement, FileUploadFieldProps>(\n function FileUploadField({ label, hint, error, required, className, ...props }, ref) {\n return (\n <FormField label={label} hint={hint} error={error} required={required} className={className}>\n <FileUpload ref={ref} error={!!error} {...props} />\n </FormField>\n );\n }\n);\nFileUploadField.displayName = \"FileUploadField\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport type TimelineAlign = \"left\" | \"right\" | \"alternate\";\nexport type TimelineDotVariant =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"danger\";\nexport type TimelineDotSize = \"sm\" | \"md\" | \"lg\";\n\ninterface TimelineCtx {\n align: TimelineAlign;\n count: number;\n}\nconst TimelineContext = React.createContext<TimelineCtx | null>(null);\n\ninterface TimelineItemCtx {\n isEven: boolean;\n align: TimelineAlign;\n isLast: boolean;\n}\nconst TimelineItemContext = React.createContext<TimelineItemCtx | null>(null);\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: TimelineAlign;\n}\n\nexport const Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n ({ align = \"left\", className, children, ...props }, ref) => {\n const validChildren = React.Children.toArray(children).filter(React.isValidElement);\n const count = validChildren.length;\n\n const childrenWithIndex = validChildren.map((child, index) => {\n return React.cloneElement(child as React.ReactElement<any>, {\n index,\n });\n });\n\n return (\n <TimelineContext.Provider value={{ align, count }}>\n <div\n ref={ref}\n role=\"list\"\n className={cn(\"flex flex-col gap-6 w-full\", className)}\n {...props}\n >\n {childrenWithIndex}\n </div>\n </TimelineContext.Provider>\n );\n }\n);\nTimeline.displayName = \"Timeline\";\n\nexport interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement> {\n index?: number;\n}\n\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n ({ className, index = 0, children, ...props }, ref) => {\n const ctx = React.useContext(TimelineContext);\n if (!ctx) throw new Error(\"TimelineItem must be used within a Timeline\");\n\n const { align, count } = ctx;\n const isEven = index % 2 === 0;\n const isLast = index === count - 1;\n\n // Grid config per alignment\n const gridClass = cn(\n \"grid w-full gap-4 items-start group/timeline-item\",\n align === \"left\" && \"grid-cols-[auto_1fr]\",\n align === \"right\" && \"grid-cols-[1fr_auto] text-right\",\n align === \"alternate\" && \"md:grid-cols-[1fr_auto_1fr] grid-cols-[auto_1fr]\"\n );\n\n return (\n <TimelineItemContext.Provider value={{ isEven, align, isLast }}>\n <div ref={ref} role=\"listitem\" className={cn(gridClass, className)} {...props}>\n {children}\n </div>\n </TimelineItemContext.Provider>\n );\n }\n);\nTimelineItem.displayName = \"TimelineItem\";\n\nexport interface TimelineSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n isEven?: boolean;\n align?: TimelineAlign;\n}\n\nexport const TimelineSeparator = React.forwardRef<HTMLDivElement, TimelineSeparatorProps>(\n ({ className, align: propAlign, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const align = propAlign ?? ctx?.align ?? \"left\";\n\n const separatorClass = cn(\n \"flex flex-col items-center justify-self-center h-full min-h-[40px]\",\n align === \"alternate\" && \"md:col-start-2 col-start-1\",\n align === \"left\" && \"col-start-1\",\n align === \"right\" && \"col-start-2\",\n className\n );\n\n return <div ref={ref} className={separatorClass} {...props} />;\n }\n);\nTimelineSeparator.displayName = \"TimelineSeparator\";\n\nexport interface TimelineConnectorProps extends React.HTMLAttributes<HTMLDivElement> {\n dashed?: boolean;\n}\n\nexport const TimelineConnector = React.forwardRef<HTMLDivElement, TimelineConnectorProps>(\n ({ className, dashed, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const isLast = ctx?.isLast ?? false;\n\n const connectorClass = cn(\n \"grow\",\n isLast && \"hidden\",\n dashed ? \"w-0 border-l border-dashed border-border\" : \"w-0.5 bg-border\",\n className\n );\n\n return <div ref={ref} className={connectorClass} {...props} />;\n }\n);\nTimelineConnector.displayName = \"TimelineConnector\";\n\nexport interface TimelineDotProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: TimelineDotVariant;\n size?: TimelineDotSize;\n}\n\nexport const TimelineDot = React.forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ className, variant = \"default\", size = \"md\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-2.5 h-2.5 rounded-full my-1.5\",\n md: \"w-4 h-4 rounded-full my-1 border-2 bg-background border-border\",\n lg: \"w-8 h-8 rounded-full border flex items-center justify-center bg-background text-[0.8rem]\",\n };\n\n const variantClasses = {\n default: \"border-border text-muted-foreground\",\n primary: \"border-primary bg-primary/5 text-primary\",\n secondary: \"border-secondary bg-secondary/5 text-secondary\",\n success: \"border-success bg-success-surface text-success\",\n warning: \"border-warning bg-warning-surface text-warning\",\n danger: \"border-danger bg-danger-surface text-danger\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"shrink-0 select-none\",\n sizeClasses[size],\n variantClasses[variant],\n className\n )}\n {...props}\n />\n );\n }\n);\nTimelineDot.displayName = \"TimelineDot\";\n\nexport interface TimelineContentProps extends React.HTMLAttributes<HTMLDivElement> {\n isEven?: boolean;\n align?: TimelineAlign;\n}\n\nexport const TimelineContent = React.forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ className, isEven: propIsEven, align: propAlign, ...props }, ref) => {\n const ctx = React.useContext(TimelineItemContext);\n const isEven = propIsEven ?? ctx?.isEven ?? false;\n const align = propAlign ?? ctx?.align ?? \"left\";\n\n const contentClass = cn(\n \"pb-8 flex flex-col gap-1 w-full\",\n align === \"left\" && \"col-start-2 text-left\",\n align === \"right\" && \"col-start-1 text-right\",\n align === \"alternate\" &&\n (isEven\n ? \"md:col-start-3 col-start-2 text-left\"\n : \"md:col-start-1 col-start-2 md:text-right text-left\"),\n className\n );\n\n return <div ref={ref} className={contentClass} {...props} />;\n }\n);\nTimelineContent.displayName = \"TimelineContent\";\n\nexport const TimelineTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, children, ...props }, ref) => (\n <h4\n ref={ref}\n className={cn(\"m-0 text-sm font-semibold tracking-[-0.01em] text-foreground\", className)}\n {...props}\n >\n {children}\n </h4>\n));\nTimelineTitle.displayName = \"TimelineTitle\";\n\nexport const TimelineTime = React.forwardRef<\n HTMLTimeElement,\n React.TimeHTMLAttributes<HTMLTimeElement>\n>(({ className, ...props }, ref) => (\n <time\n ref={ref}\n className={cn(\"text-[0.75rem] text-muted-foreground font-normal\", className)}\n {...props}\n />\n));\nTimelineTime.displayName = \"TimelineTime\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface UseStepperOptions {\n initialStep?: number;\n stepsCount: number;\n}\n\nexport interface UseStepperReturn {\n activeStep: number;\n completedSteps: number[];\n setStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n completeStep: (step: number) => void;\n uncompleteStep: (step: number) => void;\n reset: () => void;\n isFirstStep: boolean;\n isLastStep: boolean;\n}\n\nexport function useStepper({ initialStep = 0, stepsCount }: UseStepperOptions): UseStepperReturn {\n const safeStepsCount = Math.max(1, stepsCount);\n const [activeStep, setActiveStep] = React.useState(initialStep);\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([]);\n\n const setStep = React.useCallback(\n (step: number) => {\n if (step >= 0 && step < safeStepsCount) {\n setActiveStep(step);\n }\n },\n [safeStepsCount]\n );\n\n const nextStep = React.useCallback(() => {\n setActiveStep((prev) => Math.min(prev + 1, safeStepsCount - 1));\n }, [safeStepsCount]);\n\n const prevStep = React.useCallback(() => {\n setActiveStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const completeStep = React.useCallback(\n (step: number) => {\n setCompletedSteps((prev) => {\n if (step < 0 || step >= safeStepsCount) return prev; // ignore out-of-range\n if (prev.includes(step)) return prev;\n return [...prev, step].sort((a, b) => a - b);\n });\n },\n [safeStepsCount]\n );\n\n const uncompleteStep = React.useCallback((step: number) => {\n setCompletedSteps((prev) => prev.filter((s) => s !== step));\n }, []);\n\n const reset = React.useCallback(() => {\n setActiveStep(initialStep);\n setCompletedSteps([]);\n }, [initialStep]);\n\n return {\n activeStep,\n completedSteps,\n setStep,\n nextStep,\n prevStep,\n completeStep,\n uncompleteStep,\n reset,\n isFirstStep: activeStep === 0,\n isLastStep: activeStep === safeStepsCount - 1,\n };\n}\n\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\n\ninterface StepperCtx {\n activeStep: number;\n orientation: StepperOrientation;\n responsive?: boolean;\n linear: boolean;\n setStep: (step: number) => void;\n completedSteps: number[];\n registerStep: (value: number) => void;\n unregisterStep: (value: number) => void;\n steps: number[];\n}\n\nconst StepperContext = React.createContext<StepperCtx | null>(null);\n\ninterface StepperItemCtx {\n value: number;\n disabled: boolean;\n isLast: boolean;\n}\n\nconst StepperItemContext = React.createContext<StepperItemCtx | null>(null);\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n orientation?: StepperOrientation;\n responsive?: boolean;\n linear?: boolean;\n}\n\nexport const Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n responsive = true,\n linear = true,\n children,\n className,\n ...props\n },\n ref\n ) => {\n const [localValue, setLocalValue] = React.useState(defaultValue ?? 0);\n const isControlled = value !== undefined;\n const activeStep = isControlled ? value : localValue;\n\n const [steps, setSteps] = React.useState<number[]>([]);\n const [completedSteps, setCompletedSteps] = React.useState<number[]>([]);\n\n const registerStep = React.useCallback((val: number) => {\n setSteps((prev) => (prev.includes(val) ? prev : [...prev, val].sort((a, b) => a - b)));\n }, []);\n\n const unregisterStep = React.useCallback((val: number) => {\n setSteps((prev) => prev.filter((v) => v !== val));\n }, []);\n\n const setStep = React.useCallback(\n (step: number) => {\n if (!isControlled) {\n setLocalValue(step);\n }\n onValueChange?.(step);\n\n // Auto mark previous steps as completed in linear mode\n if (linear) {\n setCompletedSteps((prev) => {\n const priorSteps = steps.filter((s) => s < step);\n const nextCompleted = Array.from(new Set([...prev, ...priorSteps])).sort(\n (a, b) => a - b\n );\n return nextCompleted;\n });\n }\n },\n [isControlled, onValueChange, linear, steps]\n );\n\n const contextValue = React.useMemo(\n () => ({\n activeStep,\n orientation,\n responsive,\n linear,\n setStep,\n completedSteps,\n registerStep,\n unregisterStep,\n steps,\n }),\n [\n activeStep,\n orientation,\n responsive,\n linear,\n setStep,\n completedSteps,\n registerStep,\n unregisterStep,\n steps,\n ]\n );\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n orientation === \"vertical\" ? \"flex flex-col gap-6\" : \"space-y-6\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n }\n);\nStepper.displayName = \"Stepper\";\n\nexport interface StepperContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number;\n}\n\nexport const StepperContent = React.forwardRef<HTMLDivElement, StepperContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperContent must be used within a Stepper\");\n\n const isActive = ctx.activeStep === value;\n\n if (!isActive) return null;\n\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n tabIndex={0}\n className={cn(\"focus-visible:outline-none w-full\", className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nStepperContent.displayName = \"StepperContent\";\n\nexport type StepperListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const StepperList = React.forwardRef<HTMLDivElement, StepperListProps>(\n ({ className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperList must be used within a Stepper\");\n\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n const orientationClass = isResponsiveHorizontal\n ? \"flex flex-col sm:flex-row items-start sm:items-center justify-between w-full relative gap-4\"\n : ctx.orientation === \"horizontal\"\n ? \"flex items-center justify-between w-full relative gap-4\"\n : \"flex flex-col items-start gap-6 relative w-full\";\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n className={cn(orientationClass, className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nStepperList.displayName = \"StepperList\";\n\nexport interface StepperItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number;\n disabled?: boolean;\n}\n\nexport const StepperItem = React.forwardRef<HTMLDivElement, StepperItemProps>(\n ({ value, disabled = false, className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperItem must be used within a Stepper\");\n\n const { registerStep, unregisterStep } = ctx;\n\n React.useEffect(() => {\n registerStep(value);\n return () => unregisterStep(value);\n }, [value, registerStep, unregisterStep]);\n\n const isLast = ctx.steps[ctx.steps.length - 1] === value;\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n return (\n <StepperItemContext.Provider value={{ value, disabled, isLast }}>\n <div\n ref={ref}\n className={cn(\n \"group relative flex items-center gap-3 z-10\",\n ctx.orientation === \"vertical\"\n ? \"flex items-start w-full\"\n : isResponsiveHorizontal\n ? \"w-full sm:w-auto items-start sm:items-center\"\n : \"\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperItemContext.Provider>\n );\n }\n);\nStepperItem.displayName = \"StepperItem\";\n\nexport type StepperSeparatorProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const StepperSeparator = React.forwardRef<HTMLDivElement, StepperSeparatorProps>(\n ({ className, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n if (!ctx) throw new Error(\"StepperSeparator must be used within a Stepper\");\n\n const isResponsiveHorizontal = ctx.orientation === \"horizontal\" && (ctx.responsive ?? true);\n\n return (\n <div\n ref={ref}\n className={cn(\n isResponsiveHorizontal\n ? \"hidden sm:block flex-1 h-[2px] bg-border transition-all duration-300\"\n : ctx.orientation === \"horizontal\"\n ? \"flex-1 h-[2px] bg-border transition-all duration-300\"\n : \"w-[2px] bg-border absolute left-[17px] top-8 bottom-0 -ml-px z-0\",\n className\n )}\n {...props}\n />\n );\n }\n);\nStepperSeparator.displayName = \"StepperSeparator\";\n\nexport type StepperTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const StepperTrigger = React.forwardRef<HTMLButtonElement, StepperTriggerProps>(\n ({ className, children, onClick, onKeyDown, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperTrigger must be used within a StepperItem inside a Stepper\");\n }\n\n const isCompleted =\n ctx.completedSteps.includes(itemCtx.value) || itemCtx.value < ctx.activeStep;\n const isActive = ctx.activeStep === itemCtx.value;\n\n // In linear mode, user can click completed steps to go back, but not future uncompleted ones\n const isClickable = !ctx.linear || isCompleted || isActive;\n const disabled = itemCtx.disabled || !isClickable;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n ctx.setStep(itemCtx.value);\n onClick?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n\n const triggers = Array.from(\n e.currentTarget.closest('[role=\"tablist\"]')?.querySelectorAll('[role=\"tab\"]') || []\n ) as HTMLElement[];\n\n const currentIndex = triggers.indexOf(e.currentTarget);\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n targetIndex = Math.min(currentIndex + 1, triggers.length - 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n targetIndex = Math.max(currentIndex - 1, 0);\n }\n\n if (targetIndex !== -1 && triggers[targetIndex]) {\n e.preventDefault();\n triggers[targetIndex].focus();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex items-center gap-3 bg-transparent border-0 p-0 text-left cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary rounded-md disabled:cursor-not-allowed disabled:opacity-50\",\n ctx.orientation === \"vertical\" ? \"w-full\" : \"\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nStepperTrigger.displayName = \"StepperTrigger\";\n\nexport type StepperIndicatorProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperIndicator = React.forwardRef<HTMLSpanElement, StepperIndicatorProps>(\n ({ className, children, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperIndicator must be used within a StepperItem inside a Stepper\");\n }\n\n const isCompleted =\n ctx.completedSteps.includes(itemCtx.value) || itemCtx.value < ctx.activeStep;\n const isActive = ctx.activeStep === itemCtx.value;\n\n return (\n <span\n ref={ref}\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-full border text-sm font-semibold transition-all duration-200\",\n isCompleted\n ? \"bg-primary border-primary text-primary-foreground\"\n : isActive\n ? \"border-primary text-primary bg-primary/10 ring-2 ring-primary/20\"\n : \"border-border text-muted-foreground bg-muted/40\",\n className\n )}\n {...props}\n >\n {children ?? (isCompleted ? \"✓\" : itemCtx.value + 1)}\n </span>\n );\n }\n);\nStepperIndicator.displayName = \"StepperIndicator\";\n\nexport type StepperTitleProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperTitle = React.forwardRef<HTMLSpanElement, StepperTitleProps>(\n ({ className, ...props }, ref) => {\n const ctx = React.useContext(StepperContext);\n const itemCtx = React.useContext(StepperItemContext);\n\n if (!ctx || !itemCtx) {\n throw new Error(\"StepperTitle must be used within a StepperItem inside a Stepper\");\n }\n\n const isActive = ctx.activeStep === itemCtx.value;\n\n return (\n <span\n ref={ref}\n className={cn(\n \"text-sm font-medium transition-colors duration-200\",\n isActive ? \"text-foreground font-semibold\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n );\n }\n);\nStepperTitle.displayName = \"StepperTitle\";\n\nexport type StepperDescriptionProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const StepperDescription = React.forwardRef<HTMLSpanElement, StepperDescriptionProps>(\n ({ className, ...props }, ref) => {\n const itemCtx = React.useContext(StepperItemContext);\n if (!itemCtx) throw new Error(\"StepperDescription must be used within a StepperItem\");\n\n return (\n <span\n ref={ref}\n className={cn(\"text-xs text-muted-foreground text-left block\", className)}\n {...props}\n />\n );\n }\n);\nStepperDescription.displayName = \"StepperDescription\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n banner?: React.ReactNode;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n contentWidth?: \"default\" | \"narrow\" | \"wide\" | \"full\";\n headerPosition?: \"sticky\" | \"fixed\" | \"static\";\n headerVariant?: \"glass\" | \"solid\" | \"transparent\";\n paddedContent?: boolean;\n mobileNav?: React.ReactNode;\n bottomNav?: React.ReactNode;\n}\n\nexport interface AppShellBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"primary\" | \"accent\" | \"muted\";\n closable?: boolean;\n onClose?: () => void;\n children: React.ReactNode;\n}\n\nexport interface AppShellHeaderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: \"glass\" | \"solid\" | \"transparent\";\n position?: \"sticky\" | \"fixed\" | \"static\";\n bordered?: boolean;\n children?: React.ReactNode;\n mobileNav?: React.ReactNode;\n}\n\nexport interface AppShellMainProps extends React.HTMLAttributes<HTMLElement> {\n width?: \"default\" | \"narrow\" | \"wide\" | \"full\";\n padded?: boolean;\n children: React.ReactNode;\n}\n\nexport interface AppShellFooterProps extends React.HTMLAttributes<HTMLElement> {\n bordered?: boolean;\n children: React.ReactNode;\n}\n\nexport const AppShellBanner = React.forwardRef<HTMLDivElement, AppShellBannerProps>(\n ({ className, variant = \"primary\", closable, onClose, children, ...props }, ref) => {\n const variantClass = {\n primary: \"bg-primary text-primary-foreground\",\n accent: \"bg-secondary text-secondary-foreground\",\n muted: \"bg-surface border-b border-border text-muted-foreground\",\n }[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"px-4 py-2 text-sm font-medium text-center flex items-center justify-center relative z-30\",\n variantClass,\n className\n )}\n {...props}\n >\n <div className=\"flex-1\">{children}</div>\n {closable && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1 rounded opacity-80 hover:opacity-100 transition-opacity ml-2 cursor-pointer\"\n aria-label=\"Close banner\"\n >\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\nAppShellBanner.displayName = \"AppShellBanner\";\n\nexport const AppShellHeader = React.forwardRef<HTMLElement, AppShellHeaderProps>(\n (\n {\n className,\n variant = \"glass\",\n position = \"sticky\",\n bordered = true,\n children,\n mobileNav,\n ...props\n },\n ref\n ) => {\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && mobileOpen) {\n setMobileOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [mobileOpen]);\n\n React.useEffect(() => {\n if (mobileOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [mobileOpen]);\n\n const positionClass = {\n sticky: \"sticky top-0 z-40\",\n fixed: \"fixed top-0 left-0 right-0 z-40\",\n static: \"relative z-40\",\n }[position];\n\n const variantClass = {\n glass: \"bg-surface/80 backdrop-blur-md text-foreground\",\n solid: \"bg-surface text-foreground\",\n transparent: \"bg-transparent text-foreground\",\n }[variant];\n\n return (\n <>\n <header\n ref={ref}\n className={cn(\n \"w-full transition-colors\",\n positionClass,\n variantClass,\n bordered && \"border-b border-border/60\",\n className\n )}\n {...props}\n >\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between gap-4\">\n {mobileNav && (\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n className=\"md:hidden p-2 -ml-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Open navigation\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n )}\n {children}\n </div>\n </header>\n\n {mobileNav && mobileOpen && (\n <div className=\"fixed inset-0 z-50 md:hidden flex\">\n <div\n aria-hidden=\"true\"\n onClick={() => setMobileOpen(false)}\n className=\"fixed inset-0 bg-overlay backdrop-blur-[2px] transition-opacity duration-300\"\n />\n <aside\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Mobile Navigation\"\n className=\"relative z-10 w-72 h-full bg-surface border-r border-border flex flex-col shadow-kj-lg\"\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border\">\n <span className=\"text-xs font-bold uppercase tracking-wider text-muted-foreground\">\n Navigation\n </span>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n className=\"p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer\"\n aria-label=\"Close navigation\"\n >\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div className=\"flex-1 overflow-y-auto p-4\">{mobileNav}</div>\n </aside>\n </div>\n )}\n </>\n );\n }\n);\nAppShellHeader.displayName = \"AppShellHeader\";\n\nexport const AppShellMain = React.forwardRef<HTMLElement, AppShellMainProps>(\n ({ className, width = \"default\", padded = true, children, ...props }, ref) => {\n const widthClass = {\n default: \"max-w-7xl mx-auto w-full\",\n narrow: \"max-w-5xl mx-auto w-full\",\n wide: \"max-w-screen-2xl mx-auto w-full\",\n full: \"max-w-none w-full\",\n }[width];\n\n return (\n <main\n ref={ref}\n className={cn(\n \"flex-1\",\n padded && \"px-4 sm:px-6 lg:px-8 py-4 sm:py-6 md:py-12\",\n widthClass,\n className\n )}\n {...props}\n >\n {children}\n </main>\n );\n }\n);\nAppShellMain.displayName = \"AppShellMain\";\n\nexport const AppShellFooter = React.forwardRef<HTMLElement, AppShellFooterProps>(\n ({ className, bordered = true, children, ...props }, ref) => {\n return (\n <footer\n ref={ref}\n className={cn(\n \"w-full bg-surface text-foreground py-12 mt-auto\",\n bordered && \"border-t border-border\",\n className\n )}\n {...props}\n >\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">{children}</div>\n </footer>\n );\n }\n);\nAppShellFooter.displayName = \"AppShellFooter\";\n\ntype AppShellComponent = React.ForwardRefExoticComponent<\n AppShellProps & React.RefAttributes<HTMLDivElement>\n> & {\n Banner: typeof AppShellBanner;\n Header: typeof AppShellHeader;\n Main: typeof AppShellMain;\n Footer: typeof AppShellFooter;\n};\n\nexport const AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\n (\n {\n className,\n banner,\n header,\n children,\n footer,\n contentWidth = \"default\",\n headerPosition = \"sticky\",\n headerVariant = \"glass\",\n paddedContent = true,\n mobileNav,\n bottomNav,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-screen bg-canvas text-foreground flex flex-col antialiased\",\n className\n )}\n {...props}\n >\n {banner && <AppShellBanner>{banner}</AppShellBanner>}\n {header && (\n <AppShellHeader variant={headerVariant} position={headerPosition} mobileNav={mobileNav}>\n {header}\n </AppShellHeader>\n )}\n <AppShellMain width={contentWidth} padded={paddedContent}>\n {children}\n </AppShellMain>\n {footer && <AppShellFooter>{footer}</AppShellFooter>}\n {bottomNav && (\n <div className=\"md:hidden sticky bottom-0 z-30 w-full bg-surface border-t border-border\">\n {bottomNav}\n </div>\n )}\n </div>\n );\n }\n) as AppShellComponent;\n\nAppShell.displayName = \"AppShell\";\nAppShell.Banner = AppShellBanner;\nAppShell.Header = AppShellHeader;\nAppShell.Main = AppShellMain;\nAppShell.Footer = AppShellFooter;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type RatingSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type RatingIconType = \"star\" | \"heart\" | \"flame\" | \"shield\" | \"thumb\";\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n size?: RatingSize;\n icon?: RatingIconType | React.ComponentType<{ className?: string }>;\n color?: string;\n emptyColor?: string;\n allowClear?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n hoverPreview?: boolean;\n showValue?: boolean;\n showCount?: boolean;\n count?: number;\n name?: string;\n onChange?: (value: number) => void;\n onHoverChange?: (value: number | null) => void;\n}\n\nconst sizeClasses: Record<RatingSize, { wrapper: string; star: string; text: string }> = {\n sm: { wrapper: \"kj-rating-sm gap-1\", star: \"w-4 h-4\", text: \"text-xs\" },\n md: { wrapper: \"kj-rating-md gap-1.5\", star: \"w-5 h-5\", text: \"text-sm\" },\n lg: { wrapper: \"kj-rating-lg gap-2\", star: \"w-6 h-6\", text: \"text-base\" },\n xl: { wrapper: \"kj-rating-xl gap-2.5\", star: \"w-8 h-8\", text: \"text-lg\" },\n};\n\nconst iconPaths: Record<RatingIconType, string> = {\n star: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\",\n heart:\n \"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\",\n flame:\n \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n shield:\n \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67 0C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n thumb:\n \"M7 10v12M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n};\n\nfunction roundToPrecision(value: number, precision: number): number {\n const inv = 1 / precision;\n return Math.round(value * inv) / inv;\n}\n\nfunction isCssColor(str: string): boolean {\n return str.startsWith(\"#\") || str.startsWith(\"rgb\") || str.startsWith(\"hsl\");\n}\n\nexport const Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n value: controlledValue,\n defaultValue = 0,\n max = 5,\n precision = 1,\n size = \"md\",\n icon = \"star\",\n color = \"#f59e0b\",\n emptyColor = \"#e5e7eb\",\n allowClear = true,\n disabled = false,\n readOnly = false,\n hoverPreview = true,\n showValue = false,\n showCount = false,\n count,\n name,\n onChange,\n onHoverChange,\n className,\n onKeyDown,\n onMouseLeave,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref\n ) => {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = React.useState<number>(\n controlledValue ?? defaultValue\n );\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n const instanceId = React.useId();\n\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(controlledValue);\n }\n }, [isControlled, controlledValue]);\n\n const currentValue = isControlled ? controlledValue : internalValue;\n const displayValue = hoverPreview && hoverValue !== null ? hoverValue : currentValue;\n\n const handleValueChange = (newValue: number) => {\n if (disabled || readOnly) return;\n const clamped = Math.max(0, Math.min(max, roundToPrecision(newValue, precision)));\n if (!isControlled) {\n setInternalValue(clamped);\n }\n onChange?.(clamped);\n };\n\n const getEventValue = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number): number => {\n const target = e.currentTarget;\n const width = target.offsetWidth;\n const nativeEv = e.nativeEvent as any;\n const offsetX = nativeEv?.offsetX ?? nativeEv?.nativeEvent?.offsetX ?? (e as any).offsetX;\n\n if (width > 0 && offsetX !== undefined && offsetX !== null) {\n const ratio = Math.max(0.001, Math.min(1, offsetX / width));\n const stepInStar = Math.ceil(ratio / precision) * precision;\n return Math.min(max, Math.max(precision, starIndex - 1 + stepInStar));\n }\n return starIndex;\n };\n\n const handleStarClick = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number) => {\n if (disabled || readOnly) return;\n const targetValue = getEventValue(e, starIndex);\n let nextValue = targetValue;\n if (allowClear && targetValue === currentValue) {\n nextValue = 0;\n }\n handleValueChange(nextValue);\n };\n\n const handleStarMouseMove = (e: React.MouseEvent<HTMLButtonElement>, starIndex: number) => {\n if (disabled || readOnly) return;\n if (hoverPreview) {\n const hoveredVal = getEventValue(e, starIndex);\n setHoverValue(hoveredVal);\n onHoverChange?.(hoveredVal);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled || readOnly) {\n onKeyDown?.(e);\n return;\n }\n\n let nextVal: number | null = null;\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n nextVal = Math.min(max, currentValue + precision);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n nextVal = Math.max(0, currentValue - precision);\n break;\n case \"Home\":\n nextVal = 0;\n break;\n case \"End\":\n nextVal = max;\n break;\n }\n\n if (nextVal !== null) {\n e.preventDefault();\n handleValueChange(nextVal);\n }\n\n onKeyDown?.(e);\n };\n\n const handleContainerMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {\n if (hoverPreview) {\n setHoverValue(null);\n onHoverChange?.(null);\n }\n onMouseLeave?.(e);\n };\n\n const sizing = sizeClasses[size] || sizeClasses.md;\n\n return (\n <div\n ref={ref}\n role={readOnly ? \"img\" : \"radiogroup\"}\n tabIndex={disabled || readOnly ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-readonly={readOnly || undefined}\n aria-label={ariaLabel || (readOnly ? `Rated ${displayValue} out of ${max}` : \"Rating\")}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleContainerMouseLeave}\n className={cn(\n \"inline-flex items-center select-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md\",\n disabled && \"opacity-50 cursor-not-allowed\",\n readOnly && \"cursor-default\",\n !disabled && !readOnly && \"cursor-pointer\",\n sizing.wrapper,\n className\n )}\n {...props}\n >\n {name && <input type=\"hidden\" name={name} value={currentValue} />}\n\n <div className=\"inline-flex items-center gap-0.5\">\n {Array.from({ length: max }, (_, index) => {\n const starIndex = index + 1;\n const fillFraction = Math.max(0, Math.min(1, displayValue - index));\n const gradientId = `rating-grad-${instanceId}-${index}-${Math.round(\n fillFraction * 100\n )}`;\n\n const CustomIconComponent =\n typeof icon === \"function\" || typeof icon === \"object\"\n ? (icon as React.ComponentType<{ className?: string }>)\n : null;\n const builtInIconType = typeof icon === \"string\" ? icon : \"star\";\n const pathD = iconPaths[builtInIconType] || iconPaths.star;\n\n return (\n <button\n key={index}\n type=\"button\"\n tabIndex={-1}\n data-testid=\"rating-star\"\n role={readOnly ? undefined : \"radio\"}\n aria-checked={readOnly ? undefined : displayValue >= starIndex}\n aria-label={`${starIndex} of ${max} stars`}\n disabled={disabled}\n onClick={(e) => handleStarClick(e, starIndex)}\n onMouseMove={(e) => handleStarMouseMove(e, starIndex)}\n onMouseEnter={(e) => handleStarMouseMove(e, starIndex)}\n className={cn(\n \"p-0.5 focus:outline-none transition-transform active:scale-95 disabled:scale-100\",\n sizing.star\n )}\n >\n {CustomIconComponent ? (\n <CustomIconComponent\n className={cn(\n \"w-full h-full\",\n fillFraction >= 0.5\n ? !isCssColor(color) && color\n : !isCssColor(emptyColor) && emptyColor\n )}\n />\n ) : (\n <svg\n viewBox=\"0 0 24 24\"\n className=\"w-full h-full\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {fillFraction > 0 && fillFraction < 1 && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n {isCssColor(color) ? (\n <stop offset={`${fillFraction * 100}%`} stopColor={color} />\n ) : (\n <stop\n offset={`${fillFraction * 100}%`}\n stopColor=\"currentColor\"\n className={color}\n />\n )}\n {isCssColor(emptyColor) ? (\n <stop offset={`${fillFraction * 100}%`} stopColor={emptyColor} />\n ) : (\n <stop\n offset={`${fillFraction * 100}%`}\n stopColor=\"currentColor\"\n className={emptyColor}\n />\n )}\n </linearGradient>\n </defs>\n )}\n <path\n d={pathD}\n fill={\n fillFraction === 1\n ? isCssColor(color)\n ? color\n : undefined\n : fillFraction === 0\n ? isCssColor(emptyColor)\n ? emptyColor\n : undefined\n : `url(#${gradientId})`\n }\n className={\n fillFraction === 1\n ? !isCssColor(color)\n ? color\n : undefined\n : fillFraction === 0\n ? !isCssColor(emptyColor)\n ? emptyColor\n : undefined\n : undefined\n }\n stroke=\"none\"\n />\n </svg>\n )}\n </button>\n );\n })}\n </div>\n\n {showValue && (\n <span className={cn(\"font-medium text-foreground ml-1.5\", sizing.text)}>\n {displayValue}\n </span>\n )}\n\n {showCount && count !== undefined && (\n <span className={cn(\"text-muted-foreground ml-1\", sizing.text)}>({count})</span>\n )}\n </div>\n );\n }\n);\n\nRating.displayName = \"Rating\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Label, Hint } from \"../field\";\nimport { Rating, type RatingProps } from \"./rating\";\n\nexport interface RatingFieldProps extends RatingProps {\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n errorMessage?: React.ReactNode;\n required?: boolean;\n containerClassName?: string;\n}\n\nexport const RatingField = React.forwardRef<HTMLDivElement, RatingFieldProps>(\n (\n {\n id: customId,\n label,\n helperText,\n errorMessage,\n required,\n className,\n containerClassName,\n \"aria-describedby\": ariaDescribedBy,\n ...ratingProps\n },\n ref\n ) => {\n const generatedId = React.useId();\n const id = customId || generatedId;\n const helperId = helperText ? `${id}-helper` : undefined;\n const errorId = errorMessage ? `${id}-error` : undefined;\n\n const describedBy = [ariaDescribedBy, helperId, errorId].filter(Boolean).join(\" \") || undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", containerClassName)}>\n {label && (\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n )}\n <Rating\n ref={ref}\n id={id}\n className={className}\n aria-describedby={describedBy}\n {...ratingProps}\n />\n {helperText && <Hint id={helperId}>{helperText}</Hint>}\n {errorMessage && (\n <Hint id={errorId} error>\n {errorMessage}\n </Hint>\n )}\n </div>\n );\n }\n);\n\nRatingField.displayName = \"RatingField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Rating, type RatingSize, type RatingIconType } from \"./rating\";\nimport { Progress } from \"../progress\";\n\nexport interface RatingDistributionItem {\n stars: number;\n count: number;\n percentage: number;\n}\n\nexport interface RatingSummaryProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n average: number;\n totalCount: number;\n distribution: RatingDistributionItem[];\n max?: number;\n size?: RatingSize;\n icon?: RatingIconType | React.ComponentType<{ className?: string }>;\n}\n\nexport const RatingSummary = React.forwardRef<HTMLDivElement, RatingSummaryProps>(\n (\n { average, totalCount, distribution, max = 5, size = \"md\", icon = \"star\", className, ...props },\n ref\n ) => {\n const formattedAverage = Number.isInteger(average) ? average.toString() : average.toFixed(1);\n\n const formattedTotalCount = totalCount.toLocaleString();\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col gap-6 sm:flex-row sm:items-center sm:gap-8 p-4 rounded-xl border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n >\n {/* Average Score Summary Section */}\n <div className=\"flex flex-col items-center justify-center p-4 rounded-lg bg-muted/40 text-center min-w-[140px]\">\n <div className=\"text-4xl font-bold tracking-tight text-foreground\">\n {formattedAverage}\n </div>\n <div className=\"my-1.5\">\n <Rating\n value={average}\n max={max}\n size={size}\n icon={icon}\n readOnly\n allowClear={false}\n hoverPreview={false}\n />\n </div>\n <div className=\"text-xs text-muted-foreground\">{formattedTotalCount} total ratings</div>\n </div>\n\n {/* Distribution Breakdown Progress Bars Section */}\n <div className=\"flex-1 flex flex-col gap-2.5\">\n {distribution.map((item) => (\n <div key={item.stars} className=\"flex items-center gap-3 text-sm\">\n <span className=\"w-12 text-right font-medium text-foreground whitespace-nowrap\">\n {item.stars} star\n </span>\n <Progress\n value={item.percentage}\n aria-label={`${item.stars} star ratings: ${item.percentage}%`}\n className=\"h-2.5 flex-1\"\n />\n <span className=\"w-12 text-right text-xs text-muted-foreground font-mono\">\n {item.percentage}%\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nRatingSummary.displayName = \"RatingSummary\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Button, buttonVariants } from \"./button\";\n\nexport type PricingFeatureItem =\n | string\n | {\n text: string;\n included?: boolean;\n tooltip?: string;\n };\n\nexport interface PricingCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n price: string | number;\n period?: string;\n description?: string;\n features?: PricingFeatureItem[];\n variant?: \"default\" | \"featured\" | \"outline\";\n badge?: string;\n popular?: boolean;\n ctaText?: string;\n onCtaClick?: React.MouseEventHandler<HTMLButtonElement>;\n ctaHref?: string;\n cta?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport const PricingCard = React.forwardRef<HTMLDivElement, PricingCardProps>(\n (\n {\n className,\n name,\n price,\n period,\n description,\n features = [],\n variant,\n badge,\n popular = false,\n ctaText = \"Get Started\",\n onCtaClick,\n ctaHref,\n cta,\n disabled = false,\n ...props\n },\n ref\n ) => {\n const resolvedVariant = variant || (popular ? \"featured\" : \"default\");\n const displayBadge = badge || (popular ? \"Most Popular\" : undefined);\n\n const isFeatured = resolvedVariant === \"featured\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"relative flex flex-col p-6 transition-all duration-300\",\n isFeatured\n ? \"border-amber-500/80 shadow-kj-lg ring-1 ring-amber-500/30\"\n : resolvedVariant === \"outline\"\n ? \"border-border/80 bg-transparent shadow-none\"\n : \"border-border shadow-kj-sm\",\n className\n )}\n {...props}\n >\n <div className=\"mb-4 flex items-start justify-between gap-3\">\n <div>\n <h3 className=\"text-xl font-bold tracking-tight text-foreground\">{name}</h3>\n {description && <p className=\"mt-1 text-xs text-muted-foreground\">{description}</p>}\n </div>\n {displayBadge && (\n <span className=\"rounded-full bg-amber-500 px-3 py-0.5 text-[0.7rem] font-bold uppercase tracking-wider text-black shadow-sm shrink-0 mt-0.5\">\n {displayBadge}\n </span>\n )}\n </div>\n\n <div className=\"mb-6 flex items-baseline gap-1\">\n <span className=\"text-3xl font-extrabold tracking-tight text-foreground\">{price}</span>\n {period && <span className=\"text-xs font-medium text-muted-foreground\">{period}</span>}\n </div>\n\n {features.length > 0 && (\n <ul className=\"mb-6 flex flex-1 flex-col gap-2.5 p-0 text-xs list-none\">\n {features.map((feature, idx) => {\n const text = typeof feature === \"string\" ? feature : feature.text;\n const included = typeof feature === \"string\" ? true : (feature.included ?? true);\n\n return (\n <li key={idx} className=\"flex items-center gap-2.5\">\n <span\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[0.65rem] font-bold\",\n included\n ? \"bg-amber-500/15 text-amber-600 dark:text-amber-400\"\n : \"bg-muted text-muted-foreground/60\"\n )}\n >\n {included ? \"✓\" : \"✕\"}\n </span>\n <span\n className={cn(\n included ? \"text-foreground\" : \"text-muted-foreground line-through opacity-70\"\n )}\n >\n {text}\n </span>\n </li>\n );\n })}\n </ul>\n )}\n\n <div className=\"mt-auto pt-2\">\n {cta ? (\n cta\n ) : ctaHref ? (\n /* eslint-disable-next-line jsx-a11y/anchor-is-valid */\n <a\n href={disabled ? undefined : ctaHref}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={cn(\n buttonVariants({ variant: isFeatured ? \"primary\" : \"outline\" }),\n \"w-full justify-center\",\n disabled && \"pointer-events-none opacity-50\"\n )}\n >\n {ctaText}\n </a>\n ) : (\n <Button\n variant={isFeatured ? \"primary\" : \"outline\"}\n className=\"w-full justify-center\"\n onClick={onCtaClick}\n disabled={disabled}\n >\n {ctaText}\n </Button>\n )}\n </div>\n </Card>\n );\n }\n);\nPricingCard.displayName = \"PricingCard\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Badge } from \"./badge\";\nimport { Avatar } from \"./avatar\";\n\nexport interface BlogCardAuthor {\n name: string;\n avatarUrl?: string;\n role?: string;\n}\n\nexport interface BlogCardProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"title\"> {\n title: string;\n description?: string;\n coverUrl?: string;\n coverAlt?: string;\n category?: string;\n readTime?: string;\n publishedAt?: string;\n author?: BlogCardAuthor;\n orientation?: \"vertical\" | \"horizontal\";\n href?: string;\n}\n\nexport const BlogCard = React.forwardRef<HTMLElement, BlogCardProps>(\n (\n {\n className,\n title,\n description,\n coverUrl,\n coverAlt,\n category,\n readTime,\n publishedAt,\n author,\n orientation = \"vertical\",\n href,\n ...props\n },\n ref\n ) => {\n const isHorizontal = orientation === \"horizontal\";\n const isInteractive = Boolean(href || props.onClick);\n\n return (\n <Card\n ref={ref}\n as={href ? \"a\" : \"div\"}\n href={href}\n interactive={isInteractive}\n className={cn(\n \"group flex overflow-hidden transition-all duration-300\",\n isHorizontal ? \"flex-col sm:flex-row\" : \"flex-col\",\n className\n )}\n {...props}\n >\n {coverUrl && (\n <div\n className={cn(\n \"relative overflow-hidden bg-muted shrink-0\",\n isHorizontal ? \"w-full sm:w-2/5 min-h-[160px]\" : \"w-full aspect-[16/9]\"\n )}\n >\n <img\n src={coverUrl}\n alt={coverAlt || title}\n className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n </div>\n )}\n\n <div className=\"flex flex-1 flex-col justify-between p-5\">\n <div>\n <div className=\"mb-2 flex items-center gap-2 text-[0.75rem] text-muted-foreground\">\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n {(readTime || publishedAt) && (\n <span>\n {publishedAt} {publishedAt && readTime && \"•\"} {readTime}\n </span>\n )}\n </div>\n\n <h3 className=\"text-base font-bold tracking-tight text-foreground transition-colors group-hover:text-primary\">\n {title}\n </h3>\n\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground line-clamp-2\">{description}</p>\n )}\n </div>\n\n {author && (\n <div className=\"mt-4 flex items-center gap-2.5 border-t border-border/60 pt-3\">\n <Avatar src={author.avatarUrl} alt={author.name} size=\"sm\">\n {author.name.charAt(0)}\n </Avatar>\n <div className=\"flex flex-col text-xs\">\n <span className=\"font-semibold text-foreground\">{author.name}</span>\n {author.role && (\n <span className=\"text-[0.7rem] text-muted-foreground\">{author.role}</span>\n )}\n </div>\n </div>\n )}\n </div>\n </Card>\n );\n }\n);\nBlogCard.displayName = \"BlogCard\";\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { Badge } from \"./badge\";\n\nexport interface ProjectCardMetric {\n label?: string;\n value: string | number;\n icon?: React.ReactNode;\n}\n\nexport interface ProjectCardStatus {\n label: string;\n variant?: \"success\" | \"warning\" | \"danger\" | \"neutral\" | \"info\";\n}\n\nexport interface ProjectCardProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"title\"> {\n title: string;\n description?: string;\n status?: ProjectCardStatus;\n techStack?: string[];\n metrics?: ProjectCardMetric[];\n updatedAt?: string;\n actions?: React.ReactNode;\n}\n\nexport const ProjectCard = React.forwardRef<HTMLElement, ProjectCardProps>(\n (\n {\n className,\n title,\n description,\n status,\n techStack = [],\n metrics = [],\n updatedAt,\n actions,\n href,\n ...props\n },\n ref\n ) => {\n const isInteractive = Boolean(href || props.onClick);\n\n return (\n <Card\n ref={ref}\n as={href ? \"a\" : \"div\"}\n href={href}\n interactive={isInteractive}\n className={cn(\n \"group flex flex-col justify-between p-5 transition-all duration-300\",\n className\n )}\n {...props}\n >\n <div>\n <div className=\"flex items-start justify-between gap-3\">\n <h3 className=\"text-base font-bold tracking-tight text-foreground transition-colors group-hover:text-primary\">\n {title}\n </h3>\n {status && (\n <Badge variant={status.variant || \"neutral\"} className=\"shrink-0 text-[0.65rem]\">\n {status.label}\n </Badge>\n )}\n </div>\n\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground line-clamp-2\">{description}</p>\n )}\n\n {techStack.length > 0 && (\n <div className=\"mt-3.5 flex flex-wrap gap-1.5\">\n {techStack.map((tech) => (\n <Badge key={tech} variant=\"neutral\" className=\"text-[0.65rem] py-0 px-2 font-mono\">\n {tech}\n </Badge>\n ))}\n </div>\n )}\n </div>\n\n {(metrics.length > 0 || updatedAt || actions) && (\n <div className=\"mt-4 flex items-center justify-between border-t border-border/60 pt-3 text-[0.75rem] text-muted-foreground\">\n <div className=\"flex items-center gap-3\">\n {metrics.map((metric, idx) => (\n <span\n key={metric.label ? `${metric.label}-${idx}` : idx}\n className=\"flex items-center gap-1 font-mono font-medium\"\n >\n {metric.icon && <span className=\"shrink-0\">{metric.icon}</span>}\n <span>{metric.value}</span>\n {metric.label && <span className=\"text-muted-foreground/70\">{metric.label}</span>}\n </span>\n ))}\n {updatedAt && <span>{updatedAt}</span>}\n </div>\n\n {actions && (\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"flex items-center gap-1 shrink-0\"\n >\n {actions}\n </div>\n )}\n </div>\n )}\n </Card>\n );\n }\n);\nProjectCard.displayName = \"ProjectCard\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface NotificationItemData {\n /** Unique stable identifier. */\n id: string;\n /** Primary notification text. */\n title: React.ReactNode;\n /** Optional second line (preview, quote, etc.). */\n body?: React.ReactNode;\n /**\n * Leading visual (28×28 circle).\n * SVG ReactNode → icon mode. If avatarSrc is also provided, avatarSrc wins.\n */\n icon?: React.ReactNode;\n /** Image URL for avatar mode. */\n avatarSrc?: string;\n /** 1–2 character initials for avatar fallback. */\n avatarFallback?: string;\n /** Shown as a relative time string. */\n timestamp: Date | string;\n /** Defaults to false (unread). */\n read?: boolean;\n /**\n * If provided, the row renders as <a href={href}>.\n * Clicking marks the item read and navigates.\n */\n href?: string;\n /** Called after the row is clicked (after mark-read). */\n onClick?: (id: string) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Relative timestamp utility (exported for unit tests)\n// ---------------------------------------------------------------------------\n\nexport function formatRelativeTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n if (isNaN(d.getTime())) return \"\";\n const diffMs = Date.now() - d.getTime();\n const diffMin = Math.floor(diffMs / 60_000);\n const diffH = Math.floor(diffMs / 3_600_000);\n const diffD = Math.floor(diffMs / 86_400_000);\n\n if (diffMin < 1) return \"Just now\";\n if (diffMin < 60) return `${diffMin} min ago`;\n if (diffH < 24) return diffH === 1 ? \"1 hour ago\" : `${diffH} hours ago`;\n // \"Yesterday\" fires from 24h to 47h59m (floor-based). Intentional — matches common app conventions.\n if (diffD === 1) return \"Yesterday\";\n if (diffD < 7) return `${diffD} days ago`;\n return d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" });\n}\n\n// ---------------------------------------------------------------------------\n// useInboxState — optional local-state convenience hook\n// ---------------------------------------------------------------------------\n\nexport interface InboxStateReturn {\n items: NotificationItemData[];\n unreadCount: number;\n markRead: (id: string) => void;\n markAllRead: () => void;\n dismiss: (id: string) => void;\n}\n\n/**\n * Local-state convenience hook for InboxPopover.\n * Intended for demos, Storybook stories, and simple apps.\n *\n * NOTE: `initial` is used only as the seed value for `useState`.\n * Re-rendering the parent with a new `initial` array does NOT reset\n * the hook's state. This is intentional — the hook owns its state\n * independently after mount. To reset from the outside, remount the\n * component using a `key` prop.\n */\nexport function useInboxState(initial: NotificationItemData[]): InboxStateReturn {\n const [items, setItems] = React.useState<NotificationItemData[]>(initial);\n\n const unreadCount = items.filter((i) => !i.read).length;\n\n const markRead = React.useCallback((id: string) => {\n setItems((prev) => prev.map((item) => (item.id === id ? { ...item, read: true } : item)));\n }, []);\n\n const markAllRead = React.useCallback(() => {\n setItems((prev) => prev.map((item) => ({ ...item, read: true })));\n }, []);\n\n const dismiss = React.useCallback((id: string) => {\n setItems((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n return { items, unreadCount, markRead, markAllRead, dismiss };\n}\n\n// ---------------------------------------------------------------------------\n// InboxPopover — context + root\n// ---------------------------------------------------------------------------\n\ninterface InboxCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n}\nconst InboxContext = React.createContext<InboxCtx | null>(null);\n\nfunction useInboxContext(part: string): InboxCtx {\n const ctx = React.useContext(InboxContext);\n if (!ctx) throw new Error(`${part} must be used inside <InboxPopover>`);\n return ctx;\n}\n\nexport interface InboxPopoverProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n}\n\nexport function InboxPopover({\n children,\n className,\n open: openProp,\n onOpenChange,\n}: InboxPopoverProps) {\n const [openState, setOpenState] = React.useState(false);\n const controlled = openProp !== undefined;\n const open = controlled ? openProp : openState;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const ref = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (v: boolean) => {\n if (!controlled) setOpenState(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!open) return;\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDoc);\n document.addEventListener(\"keydown\", onEsc);\n return () => {\n document.removeEventListener(\"mousedown\", onDoc);\n document.removeEventListener(\"keydown\", onEsc);\n };\n }, [open, setOpen]);\n\n const ctxValue = React.useMemo(() => ({ open, setOpen, triggerRef }), [open, setOpen]);\n\n return (\n <InboxContext.Provider value={ctxValue}>\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {children}\n </div>\n </InboxContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InboxTrigger — bell button with unread badge\n// ---------------------------------------------------------------------------\n\nexport interface InboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Badge count. Hidden when 0 or undefined. */\n unreadCount?: number;\n /** Accessible label (default: \"Notifications\"). */\n label?: string;\n}\n\nexport function InboxTrigger({\n unreadCount,\n label = \"Notifications\",\n className,\n onClick,\n ...props\n}: InboxTriggerProps) {\n const ctx = useInboxContext(\"InboxTrigger\");\n const setRef = (node: HTMLButtonElement | null) => {\n // eslint-disable-next-line react-hooks/immutability\n ctx.triggerRef.current = node;\n };\n\n const displayCount =\n unreadCount == null || unreadCount <= 0 ? null : unreadCount > 99 ? \"99+\" : String(unreadCount);\n\n const defaultLabel = displayCount ? `${label} (${displayCount} unread)` : label;\n\n return (\n <button\n ref={setRef}\n type=\"button\"\n aria-label={defaultLabel}\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n className={cn(\n \"relative inline-flex items-center justify-center w-9 h-9 rounded-full\",\n \"bg-surface border border-border text-muted-foreground\",\n \"hover:bg-muted hover:text-foreground transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\",\n className\n )}\n onClick={(e) => {\n ctx.setOpen(!ctx.open);\n onClick?.(e);\n }}\n {...props}\n >\n {/* Bell icon */}\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n\n {/* Unread badge */}\n {displayCount != null && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute -top-0.5 -right-0.5 min-w-[16px] h-4 px-1\",\n \"rounded-full bg-primary text-primary-foreground\",\n \"text-[9px] font-bold leading-4 flex items-center justify-center\"\n )}\n >\n {displayCount}\n </span>\n )}\n </button>\n );\n}\n\n// ---------------------------------------------------------------------------\n// NotificationItem\n// ---------------------------------------------------------------------------\n\nexport interface NotificationItemProps {\n item: NotificationItemData;\n onDismiss?: (id: string) => void;\n className?: string;\n}\n\nexport function NotificationItem({ item, onDismiss, className }: NotificationItemProps) {\n const leadingSlot = item.avatarSrc ? (\n <img\n src={item.avatarSrc}\n alt={item.avatarFallback ?? \"\"}\n className=\"w-7 h-7 rounded-full object-cover flex-shrink-0\"\n />\n ) : item.avatarFallback ? (\n <span className=\"w-7 h-7 rounded-full bg-primary/20 text-primary text-[10px] font-bold flex items-center justify-center flex-shrink-0 select-none\">\n {item.avatarFallback}\n </span>\n ) : item.icon ? (\n <span className=\"w-7 h-7 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0 text-primary\">\n {item.icon}\n </span>\n ) : null;\n\n const textBlock = (\n <div className=\"flex-1 min-w-0\">\n <p\n className={cn(\n \"text-sm leading-snug\",\n item.read ? \"text-muted-foreground\" : \"text-foreground\"\n )}\n >\n {item.title}\n </p>\n {item.body && <p className=\"text-xs text-muted-foreground mt-0.5 truncate\">{item.body}</p>}\n <p className=\"text-xs text-muted-foreground mt-1\">{formatRelativeTime(item.timestamp)}</p>\n </div>\n );\n\n const sharedClass = cn(\n \"group relative flex items-start gap-2.5 px-3.5 py-2.5 w-full text-left\",\n \"border-b border-border last:border-0\",\n !item.read && \"bg-primary/[0.04]\",\n \"hover:bg-muted/50 transition-colors\",\n className\n );\n\n const mainContent = (\n <>\n {leadingSlot}\n {textBlock}\n </>\n );\n\n const mainAction = item.href ? (\n <a\n href={item.href}\n onClick={() => item.onClick?.(item.id)}\n className=\"flex-1 flex items-start gap-2.5 min-w-0 text-left outline-none\"\n >\n {mainContent}\n </a>\n ) : (\n <button\n type=\"button\"\n onClick={() => item.onClick?.(item.id)}\n className=\"flex-1 flex items-start gap-2.5 min-w-0 text-left outline-none\"\n >\n {mainContent}\n </button>\n );\n\n return (\n <div className={sharedClass}>\n {mainAction}\n <div className=\"flex items-start gap-2 flex-shrink-0 mt-0.5\">\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onDismiss?.(item.id);\n }}\n className={cn(\n \"text-muted-foreground hover:text-foreground transition-colors\",\n \"opacity-0 group-hover:opacity-100 focus:opacity-100\",\n \"text-base leading-none p-0.5 rounded\"\n )}\n >\n ×\n </button>\n <span\n aria-label={item.read ? undefined : \"Unread\"}\n aria-hidden={item.read ? true : undefined}\n className={cn(\n \"w-[7px] h-[7px] rounded-full flex-shrink-0 mt-1\",\n item.read ? \"border border-border\" : \"bg-primary\"\n )}\n />\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InboxContent — full panel\n// ---------------------------------------------------------------------------\n\nexport interface InboxContentProps {\n items: NotificationItemData[];\n onMarkAllRead?: () => void;\n onDismiss?: (id: string) => void;\n viewAllHref?: string;\n viewAllLabel?: string;\n emptyState?: React.ReactNode;\n align?: \"auto\" | \"start\" | \"end\";\n width?: number | string;\n maxHeight?: number | string;\n className?: string;\n}\n\nexport function InboxContent({\n items,\n onMarkAllRead,\n onDismiss,\n viewAllHref,\n viewAllLabel = \"View all notifications\",\n emptyState,\n align = \"auto\",\n width = 360,\n maxHeight = 320,\n className,\n}: InboxContentProps) {\n const ctx = useInboxContext(\"InboxContent\");\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ctx.open) ref.current?.focus();\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n\n const allRead = items.length === 0 || items.every((i) => i.read);\n\n const defaultEmptyState = (\n <div className=\"flex flex-col items-center justify-center py-10 px-5 text-center\">\n <span className=\"w-10 h-10 rounded-full bg-muted flex items-center justify-center mb-3 text-muted-foreground\">\n <svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n </span>\n <p className=\"text-sm font-medium text-foreground\">All caught up</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">No new notifications</p>\n </div>\n );\n\n const alignClass = {\n start: \"left-0 top-[calc(100%+6px)]\",\n end: \"right-0 top-[calc(100%+6px)]\",\n auto: \"right-0 sm:right-0 left-auto top-[calc(100%+6px)] max-sm:left-1/2 max-sm:-translate-x-1/2\",\n }[align ?? \"auto\"];\n\n return (\n <div\n ref={ref}\n role=\"dialog\"\n aria-label=\"Notifications\"\n tabIndex={-1}\n style={{ width: typeof width === \"number\" ? `${width}px` : width }}\n className={cn(\n \"absolute z-40 max-w-[calc(100vw-1.5rem)]\",\n \"bg-surface border border-border rounded-kj-md shadow-kj-lg outline-none\",\n \"animate-[kjpop_.12s_ease]\",\n alignClass,\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-3.5 py-2.5 border-b border-border\">\n <span className=\"text-sm font-semibold text-foreground\">Notifications</span>\n <button\n type=\"button\"\n disabled={allRead}\n aria-disabled={allRead}\n onClick={allRead ? undefined : onMarkAllRead}\n className={cn(\n \"text-xs font-medium transition-colors\",\n allRead\n ? \"text-muted-foreground cursor-not-allowed\"\n : \"text-primary hover:text-primary/80\"\n )}\n >\n Mark all read\n </button>\n </div>\n\n {/* List or empty state */}\n {items.length === 0 ? (\n (emptyState ?? defaultEmptyState)\n ) : (\n <div className=\"overflow-y-auto\" style={{ maxHeight }}>\n {items.map((item) => (\n <NotificationItem key={item.id} item={item} onDismiss={onDismiss} />\n ))}\n </div>\n )}\n\n {/* Footer */}\n {items.length > 0 && viewAllHref && (\n <div className=\"border-t border-border px-3.5 py-2.5 text-center\">\n <a\n href={viewAllHref}\n className=\"text-xs font-medium text-primary hover:text-primary/80 transition-colors\"\n >\n {viewAllLabel} →\n </a>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"./popover\";\nimport { Field, Label, Hint } from \"./field\";\n\nexport const DEFAULT_COLOR_SWATCHES = [\n \"#EF4444\", // Red\n \"#F97316\", // Orange\n \"#F59E0B\", // Amber\n \"#10B981\", // Emerald\n \"#14B8A6\", // Teal\n \"#06B6D4\", // Sky\n \"#3B82F6\", // Blue\n \"#6366F1\", // Indigo\n \"#8B5CF6\", // Purple\n \"#EC4899\", // Pink\n \"#64748B\", // Slate\n \"#1E293B\", // Charcoal\n] as const;\n\nexport function isValidHex(hex: string): boolean {\n const trimmed = hex.trim();\n const clean = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n return /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(clean);\n}\n\nexport function normalizeHex(hex: string): string {\n let clean = hex.trim();\n if (!clean.startsWith(\"#\")) clean = `#${clean}`;\n if (/^#[0-9A-Fa-f]{3}$/.test(clean)) {\n clean = `#${clean[1]}${clean[1]}${clean[2]}${clean[2]}${clean[3]}${clean[3]}`;\n }\n return clean.toUpperCase();\n}\n\nexport function hexToHsl(hex: string): { h: number; s: number; l: number } {\n if (!isValidHex(hex)) return { h: 0, s: 0, l: 0 };\n const normalized = normalizeHex(hex);\n const r = parseInt(normalized.slice(1, 3), 16) / 255;\n const g = parseInt(normalized.slice(3, 5), 16) / 255;\n const b = parseInt(normalized.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const normalizedH = ((h % 360) + 360) % 360;\n const sPct = s / 100;\n const lPct = l / 100;\n\n const c = (1 - Math.abs(2 * lPct - 1)) * sPct;\n const x = c * (1 - Math.abs(((normalizedH / 60) % 2) - 1));\n const m = lPct - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n\n if (0 <= normalizedH && normalizedH < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= normalizedH && normalizedH < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= normalizedH && normalizedH < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= normalizedH && normalizedH < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= normalizedH && normalizedH < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= normalizedH && normalizedH < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n const toHex = (n: number) => {\n const hex = Math.round((n + m) * 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();\n}\n\nexport interface ColorPickerSwatchProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n color: string;\n selected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const ColorPickerSwatch = React.forwardRef<HTMLButtonElement, ColorPickerSwatchProps>(\n ({ color, selected = false, size = \"md\", className, style, ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-5 h-5\",\n md: \"w-7 h-7\",\n lg: \"w-9 h-9\",\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n style={{ backgroundColor: color, ...style }}\n className={cn(\n \"relative shrink-0 rounded-full border border-border/50 shadow-sm transition-transform hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary flex items-center justify-center text-white text-xs font-bold\",\n sizeClasses[size],\n selected && \"ring-2 ring-primary ring-offset-2 ring-offset-surface\",\n className\n )}\n {...props}\n >\n {selected && <span aria-hidden=\"true\">✓</span>}\n </button>\n );\n }\n);\nColorPickerSwatch.displayName = \"ColorPickerSwatch\";\n\nexport interface ColorPickerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"value\" | \"defaultValue\"> {\n /** Current hex color value (controlled). */\n value?: string;\n /** Initial hex color value (uncontrolled). Defaults to \"#3B82F6\". */\n defaultValue?: string;\n /** Called when color changes. */\n onChange?: (hex: string) => void;\n /** Array of hex color strings for preset palette. Defaults to DEFAULT_COLOR_SWATCHES. */\n swatches?: readonly string[] | string[];\n /** Whether the picker is disabled. */\n disabled?: boolean;\n /** Whether to show the manual Hex text input inside the popover. Defaults to true. */\n showHexInput?: boolean;\n /** Additional class name for the container. */\n className?: string;\n}\n\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value,\n defaultValue = \"#3B82F6\",\n onChange,\n swatches = DEFAULT_COLOR_SWATCHES,\n disabled = false,\n showHexInput = true,\n className,\n ...props\n },\n ref\n ) => {\n const isControlled = value !== undefined;\n const [localColor, setLocalColor] = React.useState<string>(normalizeHex(defaultValue));\n const color = isControlled ? normalizeHex(value) : localColor;\n\n const [hexInputValue, setHexInputValue] = React.useState<string>(color);\n\n React.useEffect(() => {\n setHexInputValue(color);\n }, [color]);\n\n const handleColorChange = React.useCallback(\n (newHex: string) => {\n const normalized = normalizeHex(newHex);\n if (!isControlled) {\n setLocalColor(normalized);\n }\n onChange?.(normalized);\n },\n [isControlled, onChange]\n );\n\n const hsl = React.useMemo(() => hexToHsl(color), [color]);\n\n const handleHueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const h = Number(e.target.value);\n const s = hsl.s === 0 ? 100 : hsl.s;\n const l = hsl.s === 0 ? 50 : hsl.l;\n const newHex = hslToHex(h, s, l);\n handleColorChange(newHex);\n };\n\n const handleHexSubmit = () => {\n if (isValidHex(hexInputValue)) {\n handleColorChange(hexInputValue);\n } else {\n setHexInputValue(color);\n }\n };\n\n return (\n <div ref={ref} className={cn(\"inline-block\", className)} {...props}>\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-label={`Select color, current ${color}`}\n className={cn(\n \"inline-flex items-center gap-2.5 px-3 py-1.5 rounded-kj-md border border-border bg-surface text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n >\n <span\n style={{ backgroundColor: color }}\n className=\"w-5 h-5 rounded-full border border-border/50 shadow-sm shrink-0\"\n />\n <span className=\"font-mono text-xs uppercase\">{color}</span>\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n className=\"text-muted-foreground ml-auto\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n </PopoverTrigger>\n <PopoverContent side=\"bottom\" align=\"start\" className=\"w-64 p-3.5 space-y-3.5\">\n {/* Header Banner */}\n <div className=\"flex items-center gap-3 p-2 rounded-kj-md bg-muted/40 border border-border\">\n <span\n style={{ backgroundColor: color }}\n className=\"w-8 h-8 rounded-full border border-border/50 shadow-sm shrink-0\"\n />\n <div>\n <p className=\"text-xs text-muted-foreground\">Selected Color</p>\n <p className=\"text-sm font-mono font-bold text-foreground uppercase\">{color}</p>\n </div>\n </div>\n\n {/* Swatches Grid */}\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Preset Swatches</p>\n <div className=\"grid grid-cols-6 gap-2\">\n {swatches.map((swatch) => {\n const normalizedSwatch = normalizeHex(swatch);\n return (\n <ColorPickerSwatch\n key={swatch}\n color={swatch}\n selected={normalizedSwatch === color}\n aria-label={`Select color ${swatch}`}\n onClick={() => handleColorChange(swatch)}\n />\n );\n })}\n </div>\n </div>\n\n {/* Hue Slider */}\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Hue</p>\n <input\n type=\"range\"\n min={0}\n max={360}\n value={hsl.h}\n onChange={handleHueChange}\n aria-label=\"Hue slider\"\n className=\"w-full h-3 rounded-full appearance-none cursor-pointer\"\n style={{\n background:\n \"linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)\",\n }}\n />\n </div>\n\n {/* Manual Hex Input */}\n {showHexInput && (\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-semibold text-muted-foreground\">Hex Code</p>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n aria-label=\"Hex Code\"\n value={hexInputValue}\n onChange={(e) => setHexInputValue(e.target.value)}\n onBlur={handleHexSubmit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleHexSubmit();\n }}\n placeholder=\"#000000\"\n className=\"flex-1 px-2.5 py-1 text-xs font-mono rounded-kj-md border border-border bg-surface text-foreground uppercase focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n />\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n );\n }\n);\nColorPicker.displayName = \"ColorPicker\";\n\nexport interface ColorPickerFieldProps extends ColorPickerProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n}\n\nexport const ColorPickerField = React.forwardRef<HTMLDivElement, ColorPickerFieldProps>(\n ({ label, hint, error, required, ...props }, ref) => {\n return (\n <Field>\n {label && <Label required={required}>{label}</Label>}\n <ColorPicker ref={ref} {...props} />\n {hint && <Hint>{hint}</Hint>}\n {error && <Hint error>{error}</Hint>}\n </Field>\n );\n }\n);\nColorPickerField.displayName = \"ColorPickerField\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\n\nexport interface GalleryImage {\n src: string;\n alt?: string;\n title?: string;\n caption?: string;\n thumbnailSrc?: string;\n}\n\nexport interface ImageGalleryProps {\n images: GalleryImage[];\n columns?: 2 | 3 | 4 | 5;\n aspectRatio?: \"square\" | \"video\" | \"4/3\" | \"auto\" | string;\n maxVisible?: number;\n className?: string;\n thumbnailClassName?: string;\n lightboxClassName?: string;\n onImageClick?: (index: number) => void;\n}\n\nconst COLUMN_CLASSES: Record<number, string> = {\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n};\n\nconst ASPECT_CLASSES: Record<string, string> = {\n square: \"aspect-square\",\n video: \"aspect-video\",\n \"4/3\": \"aspect-[4/3]\",\n auto: \"aspect-auto\",\n};\n\nexport function ImageGallery({\n images = [],\n columns = 3,\n aspectRatio = \"square\",\n maxVisible,\n className,\n thumbnailClassName,\n lightboxClassName,\n onImageClick,\n}: ImageGalleryProps) {\n const [selectedIndex, setSelectedIndex] = React.useState<number | null>(null);\n\n const columnClass = COLUMN_CLASSES[columns] || \"grid-cols-3\";\n const aspectClass =\n ASPECT_CLASSES[aspectRatio] ||\n (aspectRatio.startsWith(\"aspect-\") ? aspectRatio : `aspect-[${aspectRatio}]`);\n\n const hasMaxVisible =\n typeof maxVisible === \"number\" && maxVisible > 0 && images.length > maxVisible;\n const visibleImages = hasMaxVisible ? images.slice(0, maxVisible) : images;\n const remainingCount = hasMaxVisible ? images.length - maxVisible + 1 : 0;\n\n const handleThumbnailClick = (index: number) => {\n setSelectedIndex(index);\n if (onImageClick) {\n onImageClick(index);\n }\n };\n\n const handleClose = React.useCallback(() => {\n setSelectedIndex(null);\n }, []);\n\n const handleNext = React.useCallback(() => {\n setSelectedIndex((prev) => (prev === null ? null : (prev + 1) % images.length));\n }, [images.length]);\n\n const handlePrev = React.useCallback(() => {\n setSelectedIndex((prev) => (prev === null ? null : (prev - 1 + images.length) % images.length));\n }, [images.length]);\n\n React.useEffect(() => {\n if (selectedIndex === null) return;\n\n const originalOverflow = document.body.style.overflow;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n handleClose();\n } else if (e.key === \"ArrowRight\") {\n handleNext();\n } else if (e.key === \"ArrowLeft\") {\n handlePrev();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = originalOverflow;\n };\n }, [selectedIndex, handleClose, handleNext, handlePrev]);\n\n const activeImage = selectedIndex !== null ? images[selectedIndex] : null;\n\n return (\n <>\n <div className={cn(\"grid gap-3 w-full\", columnClass, className)}>\n {visibleImages.map((img, idx) => {\n const isLastOverlay = hasMaxVisible && idx === maxVisible - 1;\n const thumbSrc = img.thumbnailSrc || img.src;\n const defaultAlt = img.alt || `Thumbnail ${idx + 1}`;\n const buttonAriaLabel = isLastOverlay ? `View all ${images.length} images` : defaultAlt;\n\n return (\n <button\n key={idx}\n type=\"button\"\n aria-label={buttonAriaLabel}\n onClick={() => handleThumbnailClick(idx)}\n className={cn(\n \"relative group overflow-hidden rounded-kj-lg bg-muted focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 cursor-pointer transition-all duration-200\",\n aspectClass,\n thumbnailClassName\n )}\n >\n <img\n src={thumbSrc}\n alt={img.alt || `Thumbnail ${idx + 1}`}\n className=\"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n {isLastOverlay && (\n <div className=\"absolute inset-0 bg-black/60 backdrop-blur-[2px] flex items-center justify-center text-white font-bold text-xl group-hover:bg-black/70 transition-colors\">\n +{remainingCount}\n </div>\n )}\n </button>\n );\n })}\n </div>\n\n {selectedIndex !== null && activeImage && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image gallery lightbox\"\n onClick={(e) => e.target === e.currentTarget && handleClose()}\n className={cn(\n \"fixed inset-0 z-[100] bg-black/85 backdrop-blur-md flex flex-col justify-between p-4 sm:p-6 transition-opacity duration-200 animate-in fade-in-0\",\n lightboxClassName\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between w-full text-white z-10\">\n <span className=\"text-sm font-medium text-white/80 select-none\">\n {selectedIndex + 1} of {images.length}\n </span>\n <button\n type=\"button\"\n onClick={handleClose}\n aria-label=\"Close\"\n className=\"p-2 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer\"\n >\n <svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n {/* Main content with Prev/Image/Next */}\n <div className=\"relative flex-1 flex items-center justify-between gap-4 my-auto min-h-0 w-full\">\n {images.length > 1 && (\n <button\n type=\"button\"\n onClick={handlePrev}\n aria-label=\"Previous image\"\n className=\"p-3 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer z-10 shrink-0\"\n >\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n )}\n\n <div className=\"flex-1 flex flex-col items-center justify-center h-full min-h-0 px-2 select-none\">\n <img\n src={activeImage.src}\n alt={activeImage.alt || `Image ${selectedIndex + 1}`}\n className=\"max-h-[70vh] max-w-full object-contain rounded-kj-md shadow-2xl transition-transform\"\n />\n </div>\n\n {images.length > 1 && (\n <button\n type=\"button\"\n onClick={handleNext}\n aria-label=\"Next image\"\n className=\"p-3 rounded-full text-white/80 hover:text-white hover:bg-white/10 transition-colors cursor-pointer z-10 shrink-0\"\n >\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {/* Footer (Title & Caption) */}\n {(activeImage.title || activeImage.caption) && (\n <div className=\"flex flex-col items-center justify-center text-center text-white pb-2 z-10\">\n {activeImage.title && (\n <h3 className=\"text-base font-semibold text-white\">{activeImage.title}</h3>\n )}\n {activeImage.caption && (\n <p className=\"text-xs sm:text-sm text-white/70 max-w-lg mt-0.5\">\n {activeImage.caption}\n </p>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { UseInPostScriptOptions, UseInPostScriptResult } from \"./types\";\n\nconst OFFICIAL_SCRIPT_URL = \"https://geowidget.easypack24.net/js/sdk-for-javascript.js\";\nconst OFFICIAL_CSS_URL = \"https://geowidget.easypack24.net/css/easypack.css\";\n\nlet scriptPromise: Promise<void> | null = null;\n\nexport function useInPostScript(options: UseInPostScriptOptions = {}): UseInPostScriptResult {\n const [isLoaded, setIsLoaded] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return !!(\n window.customElements?.get(\"inpost-geowidget\") ||\n (window as unknown as { easyPack?: unknown }).easyPack\n );\n });\n const [error, setError] = useState<Error | null>(null);\n\n const scriptUrl = options.customScriptUrl || OFFICIAL_SCRIPT_URL;\n const cssUrl = options.customCssUrl || OFFICIAL_CSS_URL;\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n // Check if script/customElement is already defined\n if (\n window.customElements?.get(\"inpost-geowidget\") ||\n (window as unknown as { easyPack?: unknown }).easyPack\n ) {\n return;\n }\n\n // Ensure CSS stylesheet is injected\n let linkTag = document.querySelector(`link[href=\"${cssUrl}\"]`) as HTMLLinkElement | null;\n if (!linkTag) {\n linkTag = document.createElement(\"link\");\n linkTag.rel = \"stylesheet\";\n linkTag.href = cssUrl;\n linkTag.type = \"text/css\";\n document.head.appendChild(linkTag);\n }\n\n if (!scriptPromise) {\n scriptPromise = new Promise((resolve, reject) => {\n let scriptTag = document.querySelector(\n `script[src=\"${scriptUrl}\"]`\n ) as HTMLScriptElement | null;\n if (!scriptTag) {\n scriptTag = document.createElement(\"script\");\n scriptTag.src = scriptUrl;\n scriptTag.async = true;\n document.head.appendChild(scriptTag);\n }\n\n scriptTag.addEventListener(\"load\", () => resolve());\n scriptTag.addEventListener(\"error\", (err) =>\n reject(\n err instanceof Error ? err : new Error(\"Failed to load InPost GeoWidget SDK script\")\n )\n );\n });\n }\n\n scriptPromise\n .then(async () => {\n if (typeof window !== \"undefined\" && window.customElements?.whenDefined) {\n try {\n await Promise.race([\n window.customElements.whenDefined(\"inpost-geowidget\"),\n new Promise((r) => setTimeout(r, 100)),\n ]);\n } catch {\n /* ignore */\n }\n }\n setIsLoaded(true);\n })\n .catch((err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n });\n }, [scriptUrl, cssUrl]);\n\n return { isLoaded, error };\n}\n","\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport type { InPostConfigType, InPostLanguage, InPostPoint } from \"./types\";\nimport { useInPostScript } from \"./use-inpost-script\";\n\n/** Props for the inline InPost GeoWidget map component. */\nexport interface InPostGeowidgetProps {\n /** InPost API Token generated in InPost Manager for your domain. Required for production map. */\n token?: string;\n /** Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'. */\n language?: InPostLanguage;\n /** Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'. */\n config?: InPostConfigType;\n /** Enable sandbox environment. Default false. */\n sandbox?: boolean;\n /** Callback triggered when user selects a parcel locker or pick-up point on the map. */\n onPointSelect?: (point: InPostPoint) => void;\n /** Callback triggered when GeoWidget finishes loading. */\n onReady?: () => void;\n /** Callback triggered on script load error. */\n onError?: (error: Error) => void;\n /** Outer container CSS class name. */\n className?: string;\n /** Inline container styles. */\n style?: React.CSSProperties;\n /** Custom SDK JavaScript URL. */\n customScriptUrl?: string;\n /** Custom SDK CSS URL. */\n customCssUrl?: string;\n}\n\nconst MOCK_POINTS: InPostPoint[] = [\n {\n name: \"WAW01M\",\n address: { line1: \"ul. Towarowa 5\", line2: \"00-838 Warszawa\" },\n address_details: {\n city: \"Warszawa\",\n street: \"Towarowa\",\n building_number: \"5\",\n post_code: \"00-838\",\n },\n location: { latitude: 52.2297, longitude: 21.0122 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Przy stacji benzynowej BP\",\n },\n {\n name: \"KRA02N\",\n address: { line1: \"ul. Floriańska 12\", line2: \"31-021 Kraków\" },\n address_details: {\n city: \"Kraków\",\n street: \"Floriańska\",\n building_number: \"12\",\n post_code: \"31-021\",\n },\n location: { latitude: 50.0647, longitude: 19.945 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Obok wejścia do sklepu\",\n },\n {\n name: \"GDA03P\",\n address: { line1: \"ul. Długa 8\", line2: \"80-827 Gdańsk\" },\n address_details: { city: \"Gdańsk\", street: \"Długa\", building_number: \"8\", post_code: \"80-827\" },\n location: { latitude: 54.352, longitude: 18.6466 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Róg ulicy Długiej i Tkackiej\",\n },\n {\n name: \"POZ04S\",\n address: { line1: \"ul. Półwiejska 42\", line2: \"61-888 Poznań\" },\n address_details: {\n city: \"Poznań\",\n street: \"Półwiejska\",\n building_number: \"42\",\n post_code: \"61-888\",\n },\n location: { latitude: 52.4064, longitude: 16.9252 },\n type: [\"parcel_locker\"],\n status: \"Operating\",\n location_description: \"Przy centrum handlowym Stary Browar\",\n },\n];\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"inpost-geowidget\": React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement> & {\n token?: string;\n language?: string;\n config?: string;\n sandbox?: string | boolean;\n onpointselect?: string;\n },\n HTMLElement\n >;\n }\n }\n}\n\nexport const InPostGeowidget: React.FC<InPostGeowidgetProps> = ({\n token,\n language = \"pl\",\n config = \"parcelCollect\",\n sandbox = false,\n onPointSelect,\n onReady,\n onError,\n className,\n style,\n customScriptUrl,\n customCssUrl,\n}) => {\n const { isLoaded, error } = useInPostScript({\n sandbox,\n customScriptUrl,\n customCssUrl,\n });\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [selectedMock, setSelectedMock] = useState<InPostPoint | null>(null);\n\n const widgetRef = useRef<HTMLElement | null>(null);\n // eslint-disable-next-line react-hooks/purity\n const callbackNameRef = useRef<string>(`inpost_cb_${Math.random().toString(36).substring(2, 9)}`);\n\n useEffect(() => {\n if (error && onError) {\n onError(error);\n }\n }, [error, onError]);\n\n useEffect(() => {\n if (isLoaded && onReady) {\n onReady();\n }\n }, [isLoaded, onReady]);\n\n useEffect(() => {\n if (!token) return;\n\n const cbName = callbackNameRef.current;\n\n (window as unknown as Record<string, (point: InPostPoint) => void>)[cbName] = (\n point: InPostPoint\n ) => {\n if (onPointSelect) {\n onPointSelect(point);\n }\n };\n\n const el = widgetRef.current;\n const handlePointSelect = (event: Event) => {\n const customEv = event as CustomEvent<InPostPoint>;\n const point = customEv.detail || (customEv as unknown as { point: InPostPoint }).point;\n if (point && onPointSelect) {\n onPointSelect(point);\n }\n };\n\n if (el) {\n el.addEventListener(\"inpostgeowidget\", handlePointSelect);\n el.addEventListener(\"onpointselect\", handlePointSelect);\n }\n document.addEventListener(\"onpointselect\", handlePointSelect);\n\n return () => {\n delete (window as unknown as Record<string, unknown>)[cbName];\n if (el) {\n el.removeEventListener(\"inpostgeowidget\", handlePointSelect);\n el.removeEventListener(\"onpointselect\", handlePointSelect);\n }\n document.removeEventListener(\"onpointselect\", handlePointSelect);\n };\n }, [onPointSelect, isLoaded, token]);\n\n if (error) {\n return (\n <div\n className={`flex flex-col items-center justify-center min-h-[450px] bg-danger/10 border-2 border-danger rounded-xl p-6 text-center ${\n className || \"\"\n }`}\n style={style}\n >\n <p className=\"text-base font-extrabold text-danger mb-1\">Błąd ładowania Geowidget InPost</p>\n <p className=\"text-xs text-muted-foreground font-semibold max-w-sm\">\n Nie udało się pobrać skryptu mapy z serwera InPost. Sprawdź połączenie z siecią.\n </p>\n </div>\n );\n }\n\n // Fallback interactive demo picker when token is not supplied\n if (!token) {\n const filteredPoints = MOCK_POINTS.filter(\n (p) =>\n p.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n p.address.line1.toLowerCase().includes(searchQuery.toLowerCase()) ||\n p.address_details.city.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n return (\n <div\n className={`flex flex-col h-full min-h-[500px] bg-surface border-2 border-border rounded-xl p-4 font-sans text-foreground ${\n className || \"\"\n }`}\n style={style}\n >\n {/* Banner with high-contrast InPost yellow theme */}\n <div className=\"bg-gradient-to-r from-amber-400 via-amber-500 to-yellow-500 text-slate-950 rounded-xl p-4 mb-3.5 shadow-sm flex flex-col gap-1 border border-amber-600/30\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"w-2.5 h-2.5 rounded-full bg-slate-950 animate-pulse\" />\n <span className=\"font-black text-sm tracking-tight uppercase\">InPost Paczkomat®</span>\n </div>\n <span className=\"text-[0.7rem] font-black bg-slate-950 text-amber-400 px-2.5 py-0.5 rounded-md uppercase tracking-wider shadow-sm\">\n Tryb Pokazowy\n </span>\n </div>\n <p className=\"text-xs text-slate-950 font-bold leading-relaxed opacity-95\">\n Wybierz punkt z listy poniżej. Do załadowania produkcyjnej mapy przekaż prop{\" \"}\n <code className=\"bg-slate-950 text-amber-400 px-1.5 py-0.5 rounded font-mono text-[0.72rem] font-black\">\n token=\"TWOJ_TOKEN\"\n </code>\n .\n </p>\n </div>\n\n <div className=\"mb-3.5 relative\">\n <input\n type=\"text\"\n placeholder=\"Szukaj Paczkomatu (np. Warszawa, WAW01M, Towarowa)...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full px-4 py-2.5 text-sm bg-surface border-2 border-border rounded-xl outline-none text-foreground placeholder:text-muted-foreground font-bold focus:border-primary focus:ring-2 focus:ring-primary/20 shadow-sm transition-all\"\n />\n </div>\n\n <div className=\"flex-1 overflow-y-auto space-y-3 pr-1 max-h-[420px]\">\n {filteredPoints.map((p) => {\n const isSelected = selectedMock?.name === p.name;\n return (\n <div\n key={p.name}\n onClick={() => {\n setSelectedMock(p);\n if (onPointSelect) {\n onPointSelect(p);\n }\n }}\n className={`p-4 rounded-xl border-2 transition-all cursor-pointer flex items-center justify-between gap-3 ${\n isSelected\n ? \"bg-primary text-primary-foreground border-primary shadow-md\"\n : \"bg-surface border-border hover:border-primary hover:shadow-md text-foreground\"\n }`}\n >\n <div className=\"flex flex-col gap-1 min-w-0\">\n <div className=\"font-black text-base flex items-center gap-2\">\n <span\n className={\n isSelected\n ? \"text-primary-foreground font-black\"\n : \"text-foreground font-black\"\n }\n >\n Paczkomat® {p.name}\n </span>\n {p.location_description && (\n <span\n className={`text-[0.72rem] px-2.5 py-0.5 rounded-full font-bold ${isSelected ? \"bg-primary-hover text-primary-foreground\" : \"bg-muted text-primary\"}`}\n >\n {p.location_description}\n </span>\n )}\n </div>\n <div\n className={`text-xs font-bold ${isSelected ? \"text-primary-foreground/90\" : \"text-muted-foreground\"}`}\n >\n {p.address.line1}, {p.address.line2}\n </div>\n </div>\n\n <button\n type=\"button\"\n className={`px-4 py-2 rounded-lg text-xs font-black shrink-0 transition-all shadow-sm ${\n isSelected\n ? \"bg-amber-400 text-slate-950 border border-amber-500\"\n : \"bg-primary hover:bg-primary-hover text-primary-foreground\"\n }`}\n >\n {isSelected ? \"Wybrano ✓\" : \"Wybierz\"}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n if (!isLoaded) {\n return (\n <div\n className={`flex items-center justify-center min-h-[450px] bg-surface border-2 border-border rounded-xl p-6 ${\n className || \"\"\n }`}\n style={style}\n >\n <div className=\"flex flex-col items-center gap-3 text-muted-foreground\">\n <div className=\"w-9 h-9 border-4 border-primary border-t-transparent rounded-full animate-spin\" />\n <span className=\"text-sm font-extrabold text-foreground\">\n Ładowanie mapy InPost GeoWidget...\n </span>\n </div>\n </div>\n );\n }\n\n const widgetProps: Record<string, string> = {\n language,\n config: String(config).toLowerCase(),\n // eslint-disable-next-line react-hooks/refs\n onpointselect: callbackNameRef.current,\n };\n\n if (token) {\n widgetProps.token = token;\n }\n\n if (sandbox) {\n widgetProps.sandbox = \"true\";\n }\n\n return (\n <div className={`w-full h-full min-h-[450px] relative ${className || \"\"}`} style={style}>\n {React.createElement(\"inpost-geowidget\", {\n ref: widgetRef,\n ...widgetProps,\n style: { width: \"100%\", height: \"100%\", display: \"block\", minHeight: \"450px\" },\n })}\n </div>\n );\n};\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Button } from \"../button\";\nimport { Modal, ModalTitle } from \"../modal\";\nimport { InPostGeowidget } from \"./inpost-geowidget\";\nimport type { InPostConfigType, InPostLanguage, InPostPoint } from \"./types\";\n\n/** Props for the InPost GeoWidget Modal checkout component. */\nexport interface InPostGeowidgetModalProps {\n /** Currently selected point object or point code string (e.g. 'WAW01M'). */\n value?: InPostPoint | string | null;\n /** Callback triggered when point is selected on the map. */\n onSelect?: (point: InPostPoint) => void;\n /** Trigger button label. Default 'Wybierz Paczkomat®'. */\n triggerText?: string;\n /** Modal header title. Default 'Wybierz punkt odbioru InPost'. */\n modalTitle?: string;\n /** Disable trigger button. Default false. */\n disabled?: boolean;\n /** Controlled open state of the modal. */\n open?: boolean;\n /** Callback when open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Show selected point badge under trigger button. Default true. */\n showSelectedBadge?: boolean;\n /** Outer container CSS class name. */\n className?: string;\n /** Trigger button style variant ('primary', 'secondary', 'outline', 'ghost', 'danger'). Default 'outline'. */\n buttonVariant?: \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n /** Trigger button size ('sm', 'md', 'lg'). Default 'md'. */\n buttonSize?: \"sm\" | \"md\" | \"lg\";\n /** InPost API Token (optional for sandbox). */\n token?: string;\n /** Widget language ('pl', 'en', 'uk', 'de', 'it', 'fr'). Default 'pl'. */\n language?: InPostLanguage;\n /** Widget configuration type ('parcelCollect', 'parcelCollectPayment', 'international', 'postBuy'). Default 'parcelCollect'. */\n config?: InPostConfigType;\n /** Enable sandbox environment. Default false. */\n sandbox?: boolean;\n /** Custom SDK JavaScript URL. */\n customScriptUrl?: string;\n /** Custom SDK CSS URL. */\n customCssUrl?: string;\n}\n\nexport const InPostGeowidgetModal: React.FC<InPostGeowidgetModalProps> = ({\n value,\n onSelect,\n triggerText = \"Wybierz Paczkomat®\",\n modalTitle = \"Wybierz punkt odbioru InPost\",\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n showSelectedBadge = true,\n className = \"\",\n buttonVariant = \"outline\",\n buttonSize = \"md\",\n token,\n language,\n config,\n sandbox,\n customScriptUrl,\n customCssUrl,\n}) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const [selectedPoint, setSelectedPoint] = useState<InPostPoint | null>(\n typeof value === \"object\" && value ? value : null\n );\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenToggle = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n };\n\n const handlePointSelect = (point: InPostPoint) => {\n setSelectedPoint(point);\n if (onSelect) {\n onSelect(point);\n }\n handleOpenToggle(false);\n };\n\n const selectedCode = selectedPoint?.name || (typeof value === \"string\" ? value : null);\n const selectedAddress = selectedPoint\n ? `${selectedPoint.address?.line1 || \"\"}, ${selectedPoint.address?.line2 || \"\"}`\n : null;\n\n const isOutline = buttonVariant === \"outline\";\n\n return (\n <div className={`inline-flex flex-col gap-3 min-w-[280px] ${className}`}>\n <Button\n type=\"button\"\n variant={buttonVariant}\n size={buttonSize}\n disabled={disabled}\n onClick={() => handleOpenToggle(true)}\n className={`group w-full justify-between gap-4 text-left font-bold shadow-sm hover:shadow-md transition-all py-2.5 px-3.5 rounded-xl ${\n isOutline\n ? \"bg-surface hover:bg-muted text-foreground border-2 border-border hover:border-primary\"\n : \"border-2 border-transparent\"\n }`}\n >\n <span className=\"flex items-center gap-2.5 min-w-0\">\n <span className=\"font-black text-[0.7rem] bg-amber-400 text-slate-950 px-2.5 py-1 rounded-md shadow-sm tracking-tight uppercase border border-amber-500/40 shrink-0 group-hover:scale-105 transition-transform\">\n InPost\n </span>\n <span\n className={`truncate font-bold text-sm ${isOutline ? \"text-foreground group-hover:text-primary\" : \"\"}`}\n >\n {selectedCode ? `Paczkomat® ${selectedCode}` : triggerText}\n </span>\n </span>\n <span\n className={`text-xs font-black px-2.5 py-1 rounded-md shrink-0 shadow-sm uppercase tracking-wide transition-all ${\n isOutline\n ? \"bg-primary text-primary-foreground group-hover:bg-primary-hover\"\n : \"bg-amber-400 text-slate-950\"\n }`}\n >\n {selectedCode ? \"Zmień\" : \"Wybierz\"}\n </span>\n </Button>\n\n {showSelectedBadge && selectedCode && (\n <div className=\"text-xs bg-surface text-foreground border-2 border-border p-3.5 rounded-xl flex flex-col gap-1.5 shadow-md\">\n <div className=\"font-bold flex items-center justify-between gap-2\">\n <span className=\"flex items-center gap-2 text-foreground\">\n <span className=\"w-2.5 h-2.5 rounded-full bg-primary shadow-sm animate-pulse\" />\n <span className=\"font-black text-sm text-primary\">Paczkomat® {selectedCode}</span>\n </span>\n <span className=\"text-[0.65rem] bg-amber-400 text-slate-950 font-black px-2 py-0.5 rounded uppercase tracking-wider\">\n Wybrany\n </span>\n </div>\n {selectedAddress && (\n <div className=\"text-muted-foreground text-[0.78rem] font-medium pl-4 border-l-2 border-border\">\n {selectedAddress}\n </div>\n )}\n </div>\n )}\n\n <Modal open={isOpen} onClose={() => handleOpenToggle(false)} width={850}>\n <div className=\"flex items-center gap-3 pb-3.5 border-b border-border\">\n <span className=\"font-black text-xs bg-amber-400 text-slate-950 px-2.5 py-1 rounded-md shadow-sm tracking-tight uppercase border border-amber-500/40 shrink-0\">\n InPost\n </span>\n <ModalTitle className=\"m-0 text-xl font-black text-primary tracking-tight\">\n {modalTitle}\n </ModalTitle>\n </div>\n\n <div className=\"w-full h-[600px] min-h-[500px] mt-3.5 rounded-xl overflow-hidden\">\n {isOpen && (\n <InPostGeowidget\n token={token}\n language={language}\n config={config}\n sandbox={sandbox}\n customScriptUrl={customScriptUrl}\n customCssUrl={customCssUrl}\n onPointSelect={handlePointSelect}\n />\n )}\n </div>\n </Modal>\n </div>\n );\n};\n","/**\n * Foundational mathematical geometry engine for Data Visualization components.\n * Pure, zero-dependency functions for scales, curve paths, bar layout, and donut arcs.\n */\n\nexport interface NiceScaleResult {\n min: number;\n max: number;\n ticks: number[];\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport type CurveType = \"linear\" | \"smooth\" | \"step\";\n\nexport interface BarDataPoint {\n group: number;\n seriesIndex: number;\n value: number;\n [key: string]: unknown;\n}\n\nexport interface BarLayoutOptions {\n dataCount: number;\n seriesCount: number;\n plotWidth: number;\n plotHeight: number;\n yDomain: [number, number];\n data: BarDataPoint[];\n mode?: \"grouped\" | \"stacked\";\n layout?: \"vertical\" | \"horizontal\";\n barMaxWidth?: number;\n groupPadding?: number;\n barPadding?: number;\n}\n\nexport interface BarRect extends BarDataPoint {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface DonutSliceInput {\n label: string;\n value: number;\n color?: string;\n [key: string]: unknown;\n}\n\nexport interface DonutOptions {\n cx: number;\n cy: number;\n innerRadius: number;\n outerRadius: number;\n startAngle?: number;\n}\n\nexport interface DonutSegment extends DonutSliceInput {\n percentage: number;\n path: string;\n startAngle: number;\n endAngle: number;\n middleAngle: number;\n}\n\nfunction formatCoordinate(val: number): string {\n if (!Number.isFinite(val)) return \"0\";\n return Number.isInteger(val) ? val.toString() : Number(val.toFixed(2)).toString();\n}\n\nfunction niceNum(range: number, round: boolean): number {\n if (range <= 0 || !Number.isFinite(range)) return 1;\n const exponent = Math.floor(Math.log10(range));\n const fraction = range / 10 ** exponent;\n let niceFraction: number;\n\n if (round) {\n if (fraction < 1.5) niceFraction = 1;\n else if (fraction < 3) niceFraction = 2;\n else if (fraction < 7) niceFraction = 5;\n else niceFraction = 10;\n } else {\n if (fraction <= 1) niceFraction = 1;\n else if (fraction <= 2) niceFraction = 2;\n else if (fraction <= 5) niceFraction = 5;\n else niceFraction = 10;\n }\n\n return niceFraction * 10 ** exponent;\n}\n\n/**\n * Calculates human-friendly rounded tick marks and bounds for chart axes.\n */\nexport function getNiceScale(minInput: number, maxInput: number, tickCount = 5): NiceScaleResult {\n let min = Number.isFinite(minInput) ? minInput : 0;\n let max = Number.isFinite(maxInput) ? maxInput : 1;\n\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n\n if (min === max) {\n if (min === 0) {\n min = 0;\n max = 1;\n } else {\n const delta = Math.abs(min) * 0.2 || 1;\n min = min - delta;\n max = max + delta;\n }\n }\n\n const rawRange = max - min;\n const count = Math.max(2, tickCount);\n const step = niceNum(rawRange / count, true);\n\n const niceMin = Math.floor(min / step) * step;\n const niceMax = Math.ceil(max / step) * step;\n\n const ticks: number[] = [];\n const totalTicks = Math.round((niceMax - niceMin) / step);\n\n for (let i = 0; i <= totalTicks; i++) {\n const val = niceMin + i * step;\n ticks.push(Number(parseFloat(val.toPrecision(12))));\n }\n\n return {\n min: Number(parseFloat(niceMin.toPrecision(12))),\n max: Number(parseFloat(niceMax.toPrecision(12))),\n ticks,\n };\n}\n\n/**\n * Linearly maps a value from a domain to a range.\n */\nexport function linearScale(\n val: number,\n domain: [number, number],\n range: [number, number]\n): number {\n if (!Number.isFinite(val)) return range[0];\n const [d0, d1] = domain;\n const [r0, r1] = range;\n const domainDelta = d1 - d0;\n if (domainDelta === 0) {\n return r0;\n }\n const ratio = (val - d0) / domainDelta;\n return r0 + ratio * (r1 - r0);\n}\n\n/**\n * Generates an SVG path string for a sequence of points with linear, smooth, or step curves.\n */\nexport function generateLinePath(points: Point[], curve: CurveType = \"linear\"): string {\n const n = points.length;\n if (n === 0) return \"\";\n if (n === 1) return `M ${formatCoordinate(points[0].x)} ${formatCoordinate(points[0].y)}`;\n\n if (curve === \"step\") {\n const commands: string[] = [\n `M ${formatCoordinate(points[0].x)} ${formatCoordinate(points[0].y)}`,\n ];\n for (let i = 1; i < n; i++) {\n const p = points[i];\n commands.push(`H ${formatCoordinate(p.x)} V ${formatCoordinate(p.y)}`);\n }\n return commands.join(\" \");\n }\n\n if (curve === \"smooth\") {\n const commands: string[] = [\n `M ${formatCoordinate(points[0].x)} ${formatCoordinate(points[0].y)}`,\n ];\n for (let i = 0; i < n - 1; i++) {\n const p0 =\n i > 0\n ? points[i - 1]\n : {\n x: 2 * points[0].x - points[1].x,\n y: 2 * points[0].y - points[1].y,\n };\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 =\n i + 2 < n\n ? points[i + 2]\n : {\n x: 2 * points[n - 1].x - points[n - 2].x,\n y: 2 * points[n - 1].y - points[n - 2].y,\n };\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n commands.push(\n `C ${formatCoordinate(cp1x)} ${formatCoordinate(cp1y)}, ${formatCoordinate(cp2x)} ${formatCoordinate(cp2y)}, ${formatCoordinate(p2.x)} ${formatCoordinate(p2.y)}`\n );\n }\n return commands.join(\" \");\n }\n\n // \"linear\" default\n const commands = points.map((p, i) =>\n i === 0\n ? `M ${formatCoordinate(p.x)} ${formatCoordinate(p.y)}`\n : `L ${formatCoordinate(p.x)} ${formatCoordinate(p.y)}`\n );\n return commands.join(\" \");\n}\n\n/**\n * Generates an SVG path string closed to a baseline Y coordinate for area fills.\n */\nexport function generateAreaPath(\n points: Point[],\n baselineY: number,\n curve: CurveType = \"linear\"\n): string {\n if (points.length === 0) return \"\";\n if (points.length === 1) {\n const p = points[0];\n return `M ${formatCoordinate(p.x)} ${formatCoordinate(p.y)} L ${formatCoordinate(p.x)} ${formatCoordinate(baselineY)} Z`;\n }\n\n const linePath = generateLinePath(points, curve);\n const first = points[0];\n const last = points[points.length - 1];\n\n return `${linePath} L ${formatCoordinate(last.x)} ${formatCoordinate(baselineY)} L ${formatCoordinate(first.x)} ${formatCoordinate(baselineY)} Z`;\n}\n\n/**\n * Calculates bar layout dimensions and coordinates for grouped or stacked bars.\n */\nexport function calculateBarLayout(options: BarLayoutOptions): BarRect[] {\n const {\n dataCount,\n seriesCount,\n plotWidth,\n plotHeight,\n yDomain,\n data,\n mode = \"grouped\",\n layout = \"vertical\",\n barMaxWidth,\n groupPadding = 0.2,\n barPadding = 2,\n } = options;\n\n if (data.length === 0 || dataCount <= 0 || seriesCount <= 0) {\n return [];\n }\n\n const domainSpan = yDomain[1] - yDomain[0];\n const safeDomainSpan = domainSpan !== 0 ? domainSpan : 1;\n\n const isVertical = layout === \"vertical\";\n const slotSize = isVertical ? plotWidth / dataCount : plotHeight / dataCount;\n\n if (isVertical) {\n if (mode === \"grouped\") {\n const groupWidth = slotSize * (1 - groupPadding);\n const totalGaps = Math.max(0, seriesCount - 1) * barPadding;\n let rawBarWidth = (groupWidth - totalGaps) / seriesCount;\n if (rawBarWidth < 1) rawBarWidth = Math.max(1, groupWidth / seriesCount);\n const barWidth = barMaxWidth ? Math.min(rawBarWidth, barMaxWidth) : rawBarWidth;\n const actualGroupBarsWidth = seriesCount * barWidth + (seriesCount - 1) * barPadding;\n\n return data.map((item) => {\n const groupStart = item.group * slotSize + (slotSize - actualGroupBarsWidth) / 2;\n const x = groupStart + item.seriesIndex * (barWidth + barPadding);\n const height = (Math.abs(item.value) / safeDomainSpan) * plotHeight;\n const y = plotHeight - height;\n\n return {\n ...item,\n x: Number(parseFloat(x.toPrecision(10))),\n y: Number(parseFloat(y.toPrecision(10))),\n width: Number(parseFloat(barWidth.toPrecision(10))),\n height: Number(parseFloat(height.toPrecision(10))),\n };\n });\n }\n\n // Stacked vertical\n const rawBarWidth = slotSize * (1 - groupPadding);\n const barWidth = barMaxWidth ? Math.min(rawBarWidth, barMaxWidth) : rawBarWidth;\n const currentStackTops = new Map<number, number>();\n\n return data.map((item) => {\n const groupCenter = item.group * slotSize + slotSize / 2;\n const x = groupCenter - barWidth / 2;\n const height = (Math.abs(item.value) / safeDomainSpan) * plotHeight;\n\n const currentY = currentStackTops.get(item.group) ?? plotHeight;\n const y = currentY - height;\n currentStackTops.set(item.group, y);\n\n return {\n ...item,\n x: Number(parseFloat(x.toPrecision(10))),\n y: Number(parseFloat(y.toPrecision(10))),\n width: Number(parseFloat(barWidth.toPrecision(10))),\n height: Number(parseFloat(height.toPrecision(10))),\n };\n });\n }\n\n // Horizontal layout\n if (mode === \"grouped\") {\n const groupHeight = slotSize * (1 - groupPadding);\n const totalGaps = Math.max(0, seriesCount - 1) * barPadding;\n let rawBarHeight = (groupHeight - totalGaps) / seriesCount;\n if (rawBarHeight < 1) rawBarHeight = Math.max(1, groupHeight / seriesCount);\n const barHeight = barMaxWidth ? Math.min(rawBarHeight, barMaxWidth) : rawBarHeight;\n const actualGroupBarsHeight = seriesCount * barHeight + (seriesCount - 1) * barPadding;\n\n return data.map((item) => {\n const groupStart = item.group * slotSize + (slotSize - actualGroupBarsHeight) / 2;\n const y = groupStart + item.seriesIndex * (barHeight + barPadding);\n const width = (Math.abs(item.value) / safeDomainSpan) * plotWidth;\n const x = 0;\n\n return {\n ...item,\n x: Number(parseFloat(x.toPrecision(10))),\n y: Number(parseFloat(y.toPrecision(10))),\n width: Number(parseFloat(width.toPrecision(10))),\n height: Number(parseFloat(barHeight.toPrecision(10))),\n };\n });\n }\n\n // Stacked horizontal\n const rawBarHeight = slotSize * (1 - groupPadding);\n const barHeight = barMaxWidth ? Math.min(rawBarHeight, barMaxWidth) : rawBarHeight;\n const currentStackRights = new Map<number, number>();\n\n return data.map((item) => {\n const groupCenter = item.group * slotSize + slotSize / 2;\n const y = groupCenter - barHeight / 2;\n const width = (Math.abs(item.value) / safeDomainSpan) * plotWidth;\n\n const currentX = currentStackRights.get(item.group) ?? 0;\n const x = currentX;\n currentStackRights.set(item.group, currentX + width);\n\n return {\n ...item,\n x: Number(parseFloat(x.toPrecision(10))),\n y: Number(parseFloat(y.toPrecision(10))),\n width: Number(parseFloat(width.toPrecision(10))),\n height: Number(parseFloat(barHeight.toPrecision(10))),\n };\n });\n}\n\n/**\n * Calculates donut or pie arc segment angles, percentages, and SVG path commands.\n */\nexport function calculateDonutSegments(\n slices: DonutSliceInput[],\n options: DonutOptions\n): DonutSegment[] {\n const { cx, cy, innerRadius, outerRadius, startAngle = -90 } = options;\n\n if (slices.length === 0) {\n return [];\n }\n\n const total = slices.reduce((sum, s) => sum + (s.value > 0 ? s.value : 0), 0);\n\n if (total === 0) {\n return slices.map((slice) => ({\n ...slice,\n percentage: 0,\n path: \"\",\n startAngle: 0,\n endAngle: 0,\n middleAngle: 0,\n }));\n }\n\n let currentAngleRad = (startAngle * Math.PI) / 180;\n const segments: DonutSegment[] = [];\n\n for (const slice of slices) {\n if (slice.value <= 0) {\n segments.push({\n ...slice,\n percentage: 0,\n path: \"\",\n startAngle: Number(parseFloat((currentAngleRad * (180 / Math.PI)).toPrecision(8))),\n endAngle: Number(parseFloat((currentAngleRad * (180 / Math.PI)).toPrecision(8))),\n middleAngle: Number(parseFloat((currentAngleRad * (180 / Math.PI)).toPrecision(8))),\n });\n continue;\n }\n\n const ratio = slice.value / total;\n const percentage = Math.round(ratio * 10000) / 100;\n const angleSpanRad = ratio * 2 * Math.PI;\n const startA = currentAngleRad;\n const endA = currentAngleRad + angleSpanRad;\n const middleA = currentAngleRad + angleSpanRad / 2;\n currentAngleRad = endA;\n\n const startDeg = Number(parseFloat((startA * (180 / Math.PI)).toPrecision(8)));\n const endDeg = Number(parseFloat((endA * (180 / Math.PI)).toPrecision(8)));\n const middleDeg = Number(parseFloat((middleA * (180 / Math.PI)).toPrecision(8)));\n\n // Full 360-degree slice\n if (ratio >= 0.99999) {\n let fullPath = \"\";\n if (innerRadius > 0) {\n fullPath = `M ${formatCoordinate(cx)} ${formatCoordinate(cy - outerRadius)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 1 1 ${formatCoordinate(cx)} ${formatCoordinate(cy + outerRadius)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 1 1 ${formatCoordinate(cx)} ${formatCoordinate(cy - outerRadius)} L ${formatCoordinate(cx)} ${formatCoordinate(cy - innerRadius)} A ${formatCoordinate(innerRadius)} ${formatCoordinate(innerRadius)} 0 1 0 ${formatCoordinate(cx)} ${formatCoordinate(cy + innerRadius)} A ${formatCoordinate(innerRadius)} ${formatCoordinate(innerRadius)} 0 1 0 ${formatCoordinate(cx)} ${formatCoordinate(cy - innerRadius)} Z`;\n } else {\n fullPath = `M ${formatCoordinate(cx)} ${formatCoordinate(cy - outerRadius)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 1 1 ${formatCoordinate(cx)} ${formatCoordinate(cy + outerRadius)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 1 1 ${formatCoordinate(cx)} ${formatCoordinate(cy - outerRadius)} Z`;\n }\n\n segments.push({\n ...slice,\n percentage,\n path: fullPath,\n startAngle: startDeg,\n endAngle: endDeg,\n middleAngle: middleDeg,\n });\n continue;\n }\n\n const x1 = cx + outerRadius * Math.cos(startA);\n const y1 = cy + outerRadius * Math.sin(startA);\n const x2 = cx + outerRadius * Math.cos(endA);\n const y2 = cy + outerRadius * Math.sin(endA);\n\n const largeArcFlag = angleSpanRad > Math.PI ? 1 : 0;\n\n let path = \"\";\n if (innerRadius > 0) {\n const x3 = cx + innerRadius * Math.cos(endA);\n const y3 = cy + innerRadius * Math.sin(endA);\n const x4 = cx + innerRadius * Math.cos(startA);\n const y4 = cy + innerRadius * Math.sin(startA);\n\n path = `M ${formatCoordinate(x1)} ${formatCoordinate(y1)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 ${largeArcFlag} 1 ${formatCoordinate(x2)} ${formatCoordinate(y2)} L ${formatCoordinate(x3)} ${formatCoordinate(y3)} A ${formatCoordinate(innerRadius)} ${formatCoordinate(innerRadius)} 0 ${largeArcFlag} 0 ${formatCoordinate(x4)} ${formatCoordinate(y4)} Z`;\n } else {\n path = `M ${formatCoordinate(x1)} ${formatCoordinate(y1)} A ${formatCoordinate(outerRadius)} ${formatCoordinate(outerRadius)} 0 ${largeArcFlag} 1 ${formatCoordinate(x2)} ${formatCoordinate(y2)} L ${formatCoordinate(cx)} ${formatCoordinate(cy)} Z`;\n }\n\n segments.push({\n ...slice,\n percentage,\n path,\n startAngle: startDeg,\n endAngle: endDeg,\n middleAngle: middleDeg,\n });\n }\n\n return segments;\n}\n","import * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { linearScale } from \"./chart-math\";\n\n/**\n * Palette color token identifiers mapping to design system chart CSS variables.\n */\nexport type ChartColor =\n | \"chart1\"\n | \"chart2\"\n | \"chart3\"\n | \"chart4\"\n | \"chart5\"\n | \"chart6\"\n | (string & {});\n\n/**\n * Series definition describing data binding, legend labeling, and color assignment.\n */\nexport interface ChartSeries {\n key: string;\n label: string;\n color?: ChartColor;\n}\n\n/**\n * Inner chart margin configuration in pixels.\n */\nexport interface ChartMargin {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\n/**\n * Map of chart token keys to CSS custom properties with fallback hex values.\n */\nexport const CHART_COLOR_VARS: Record<string, string> = {\n chart1: \"var(--kj-chart1, #a84f08)\",\n chart2: \"var(--kj-chart2, #0f746d)\",\n chart3: \"var(--kj-chart3, #0284c7)\",\n chart4: \"var(--kj-chart4, #7c3aed)\",\n chart5: \"var(--kj-chart5, #e11d48)\",\n chart6: \"var(--kj-chart6, #65a30d)\",\n};\n\n/**\n * Default color sequence cycling through chart1 to chart6.\n */\nexport const DEFAULT_CHART_COLORS: ChartColor[] = [\n \"chart1\",\n \"chart2\",\n \"chart3\",\n \"chart4\",\n \"chart5\",\n \"chart6\",\n];\n\n/**\n * Resolves a token or custom color string to a valid CSS color string with fallback.\n */\nexport function getChartColor(color?: string, fallbackIndex = 0): string {\n if (!color) {\n const defaultKey = DEFAULT_CHART_COLORS[fallbackIndex % DEFAULT_CHART_COLORS.length];\n return CHART_COLOR_VARS[defaultKey] || defaultKey;\n }\n return CHART_COLOR_VARS[color] ?? color;\n}\n\n/* =========================================================================\n ChartContainer\n ========================================================================= */\n\nexport interface ChartContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number;\n height?: number | string;\n viewBox?: string;\n \"aria-label\"?: string;\n ariaLabel?: string;\n overlay?: React.ReactNode;\n svgClassName?: string;\n svgRef?: React.Ref<SVGSVGElement>;\n plotWrapperClassName?: string;\n plotWrapperStyle?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nconst SVG_TAGS = new Set([\n \"path\",\n \"rect\",\n \"circle\",\n \"ellipse\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"text\",\n \"tspan\",\n \"g\",\n \"defs\",\n \"linearGradient\",\n \"radialGradient\",\n \"stop\",\n \"pattern\",\n \"clipPath\",\n \"mask\",\n \"image\",\n \"use\",\n \"symbol\",\n \"animate\",\n \"animateTransform\",\n \"foreignObject\",\n]);\n\nfunction isSvgChild(child: React.ReactNode): boolean {\n if (!React.isValidElement(child)) return false;\n if (typeof child.type === \"string\") {\n return SVG_TAGS.has(child.type);\n }\n const comp = child.type as { isSvg?: boolean; displayName?: string; name?: string };\n if (comp.isSvg) return true;\n const name = comp.displayName || comp.name || \"\";\n if (name.includes(\"Grid\") || name.includes(\"Axis\")) {\n return true;\n }\n return false;\n}\n\nfunction isOverlayChild(child: React.ReactNode): boolean {\n if (!React.isValidElement(child)) return false;\n const comp = child.type as { displayName?: string; name?: string };\n const name = comp?.displayName || comp?.name || \"\";\n if (name.includes(\"Tooltip\")) return true;\n const className = (child.props as { className?: string })?.className;\n if (typeof className === \"string\") {\n if (\n className.includes(\"chart-tooltip\") ||\n className.includes(\"chart-donut-center\") ||\n className.includes(\"chart-empty-message\") ||\n className.includes(\"absolute\")\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction partitionChildren(children: React.ReactNode): {\n svgChildren: React.ReactNode[];\n overlayChildren: React.ReactNode[];\n flowChildren: React.ReactNode[];\n} {\n const svgChildren: React.ReactNode[] = [];\n const overlayChildren: React.ReactNode[] = [];\n const flowChildren: React.ReactNode[] = [];\n\n const categorize = (child: React.ReactNode) => {\n if (child === null || child === undefined || typeof child === \"boolean\") {\n return;\n }\n if (React.isValidElement(child) && child.type === React.Fragment) {\n const inner = partitionChildren((child.props as { children?: React.ReactNode }).children);\n svgChildren.push(...inner.svgChildren);\n overlayChildren.push(...inner.overlayChildren);\n flowChildren.push(...inner.flowChildren);\n return;\n }\n if (isSvgChild(child)) {\n svgChildren.push(child);\n return;\n }\n if (isOverlayChild(child)) {\n overlayChildren.push(child);\n return;\n }\n flowChildren.push(child);\n };\n\n React.Children.forEach(children, categorize);\n return { svgChildren, overlayChildren, flowChildren };\n}\n\n/**\n * Hook to measure responsive container width via ResizeObserver with fallback.\n */\nexport function useChartWidth(\n containerRef: React.RefObject<HTMLElement | null>,\n defaultWidth = 600\n): number {\n const [width, setWidth] = React.useState<number>(defaultWidth);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const measure = () => {\n const rect = el.getBoundingClientRect();\n if (rect.width > 0) {\n setWidth(Math.round(rect.width));\n }\n };\n\n measure();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const w = entry.contentRect.width;\n if (w > 0) {\n setWidth(Math.round(w));\n }\n }\n });\n\n observer.observe(el);\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\n/**\n * Responsive chart container managing SVG viewBox coordinate space and absolute HTML overlay slot.\n */\nexport const ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n (\n {\n width,\n height,\n viewBox,\n \"aria-label\": ariaLabelProp,\n ariaLabel,\n overlay,\n svgClassName,\n svgRef,\n plotWrapperClassName,\n plotWrapperStyle,\n children,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const label = ariaLabelProp || ariaLabel;\n const { svgChildren, overlayChildren, flowChildren } = partitionChildren(children);\n\n const heightNum = typeof height === \"number\" ? height : undefined;\n const computedViewBox =\n viewBox ||\n (width !== undefined && heightNum !== undefined ? `0 0 ${width} ${heightNum}` : undefined);\n\n const plotHeightStyle = typeof height === \"number\" ? `${height}px` : (height ?? undefined);\n\n return (\n <div\n ref={ref}\n className={cn(\"chart-container relative w-full flex flex-col\", className)}\n style={style}\n {...props}\n >\n <div\n className={cn(\"chart-plot-wrapper relative w-full\", plotWrapperClassName)}\n style={{\n height: plotHeightStyle,\n width: typeof width === \"number\" ? `${width}px` : undefined,\n ...plotWrapperStyle,\n }}\n >\n {svgChildren.length > 0 && (\n <svg\n ref={svgRef}\n role=\"img\"\n aria-label={label}\n viewBox={computedViewBox}\n width={width}\n height={heightNum}\n className={cn(\n \"chart-svg block w-full overflow-visible\",\n height !== undefined ? \"h-full\" : \"h-auto\",\n svgClassName\n )}\n >\n {svgChildren}\n </svg>\n )}\n {overlayChildren}\n {overlay}\n </div>\n {flowChildren}\n </div>\n );\n }\n);\nChartContainer.displayName = \"ChartContainer\";\n\n/* =========================================================================\n ChartGrid\n ========================================================================= */\n\nexport interface ChartGridProps extends React.SVGAttributes<SVGGElement> {\n width?: number;\n height?: number;\n yTicks?: number[];\n xTicks?: number[];\n scaleY?: (value: number) => number;\n scaleX?: (value: number) => number;\n yDomain?: [number, number];\n yRange?: [number, number];\n xDomain?: [number, number];\n xRange?: [number, number];\n stroke?: string;\n strokeDasharray?: string;\n strokeWidth?: number;\n strokeOpacity?: number;\n horizontal?: boolean;\n vertical?: boolean;\n className?: string;\n}\n\n/**\n * Background horizontal and vertical reference lines with custom tick intervals and dashing.\n */\nexport const ChartGrid: React.FC<ChartGridProps> = ({\n width = 0,\n height = 0,\n yTicks,\n xTicks,\n scaleY,\n scaleX,\n yDomain,\n yRange,\n xDomain,\n xRange,\n stroke = \"var(--kj-border-subtle, #e5e7eb)\",\n strokeDasharray = \"3 3\",\n strokeWidth = 1,\n strokeOpacity = 1,\n horizontal = true,\n vertical,\n className,\n ...props\n}) => {\n const shouldDrawHorizontal = horizontal && Boolean(yTicks && yTicks.length > 0);\n const shouldDrawVertical =\n (vertical ?? Boolean(xTicks && xTicks.length > 0)) && Boolean(xTicks && xTicks.length > 0);\n\n const getY: (val: number) => number =\n scaleY ??\n (yDomain && yRange ? (val: number) => linearScale(val, yDomain, yRange) : (val: number) => val);\n\n const getX: (val: number) => number =\n scaleX ??\n (xDomain && xRange ? (val: number) => linearScale(val, xDomain, xRange) : (val: number) => val);\n\n return (\n <g className={cn(\"chart-grid pointer-events-none\", className)} {...props}>\n {shouldDrawHorizontal &&\n yTicks?.map((tick, idx) => {\n const yPos = getY(tick);\n return (\n <line\n key={`grid-y-${idx}-${tick}`}\n x1={0}\n y1={yPos}\n x2={width}\n y2={yPos}\n stroke={stroke}\n strokeDasharray={strokeDasharray}\n strokeWidth={strokeWidth}\n strokeOpacity={strokeOpacity}\n className=\"chart-grid-line chart-grid-line-y\"\n />\n );\n })}\n {shouldDrawVertical &&\n xTicks?.map((tick, idx) => {\n const xPos = getX(tick);\n return (\n <line\n key={`grid-x-${idx}-${tick}`}\n x1={xPos}\n y1={0}\n x2={xPos}\n y2={height}\n stroke={stroke}\n strokeDasharray={strokeDasharray}\n strokeWidth={strokeWidth}\n strokeOpacity={strokeOpacity}\n className=\"chart-grid-line chart-grid-line-x\"\n />\n );\n })}\n </g>\n );\n};\nChartGrid.displayName = \"ChartGrid\";\n\n/* =========================================================================\n ChartXAxis & ChartYAxis\n ========================================================================= */\n\nexport interface ChartXAxisTick {\n value: string | number;\n x: number;\n [key: string]: unknown;\n}\n\nexport interface ChartXAxisProps extends React.SVGAttributes<SVGGElement> {\n ticks: ChartXAxisTick[];\n y: number;\n formatter?: (value: unknown) => string;\n valueFormatter?: (value: unknown) => string;\n textAnchor?: \"start\" | \"middle\" | \"end\";\n dy?: string | number;\n className?: string;\n tickClassName?: string;\n}\n\n/**\n * SVG horizontal axis ticks rendering aligned category or timestamp labels.\n */\nexport const ChartXAxis: React.FC<ChartXAxisProps> = ({\n ticks,\n y,\n formatter,\n valueFormatter,\n textAnchor = \"middle\",\n dy = \"1.2em\",\n className,\n tickClassName,\n ...props\n}) => {\n const format = formatter ?? valueFormatter ?? ((v: unknown) => String(v));\n\n return (\n <g className={cn(\"chart-x-axis\", className)} {...props}>\n {ticks.map((tick, idx) => (\n <text\n key={`x-tick-${idx}-${tick.value}`}\n x={tick.x}\n y={y}\n dy={dy}\n textAnchor={textAnchor}\n fill=\"currentColor\"\n className={cn(\"chart-x-tick text-xs fill-muted-foreground select-none\", tickClassName)}\n >\n {format(tick.value)}\n </text>\n ))}\n </g>\n );\n};\nChartXAxis.displayName = \"ChartXAxis\";\n\nexport interface ChartYAxisTick {\n value: number | string;\n y: number;\n [key: string]: unknown;\n}\n\nexport interface ChartYAxisProps extends React.SVGAttributes<SVGGElement> {\n ticks: ChartYAxisTick[];\n x: number;\n formatter?: (value: unknown) => string;\n valueFormatter?: (value: unknown) => string;\n textAnchor?: \"start\" | \"middle\" | \"end\";\n dx?: string | number;\n dominantBaseline?: \"auto\" | \"middle\" | \"central\" | \"hanging\" | \"alphabetic\";\n className?: string;\n tickClassName?: string;\n}\n\n/**\n * SVG vertical axis ticks rendering numeric or value labels.\n */\nexport const ChartYAxis: React.FC<ChartYAxisProps> = ({\n ticks,\n x,\n formatter,\n valueFormatter,\n textAnchor = \"end\",\n dx = \"-0.5em\",\n dominantBaseline = \"middle\",\n className,\n tickClassName,\n ...props\n}) => {\n const format = formatter ?? valueFormatter ?? ((v: unknown) => String(v));\n\n return (\n <g className={cn(\"chart-y-axis\", className)} {...props}>\n {ticks.map((tick, idx) => (\n <text\n key={`y-tick-${idx}-${tick.value}`}\n x={x}\n y={tick.y}\n dx={dx}\n textAnchor={textAnchor}\n dominantBaseline={dominantBaseline}\n fill=\"currentColor\"\n className={cn(\"chart-y-tick text-xs fill-muted-foreground select-none\", tickClassName)}\n >\n {format(tick.value)}\n </text>\n ))}\n </g>\n );\n};\nChartYAxis.displayName = \"ChartYAxis\";\n\n/* =========================================================================\n ChartTooltip\n ========================================================================= */\n\nexport interface ChartTooltipItem {\n key?: string;\n label: string;\n value: number | string;\n color?: ChartColor;\n formattedValue?: string;\n}\n\nexport interface ChartTooltipProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"content\"> {\n title?: React.ReactNode;\n items?: ChartTooltipItem[];\n x?: number;\n y?: number;\n open?: boolean;\n crosshairX?: number;\n crosshairHeight?: number;\n showCrosshair?: boolean;\n valueFormatter?: (value: number) => string;\n content?: React.ReactNode;\n}\n\n/**\n * Absolute-positioned HTML floating tooltip card with series indicators and crosshair line.\n */\nexport const ChartTooltip = React.forwardRef<HTMLDivElement, ChartTooltipProps>(\n (\n {\n title,\n items,\n x,\n y,\n open = true,\n crosshairX,\n crosshairHeight,\n showCrosshair = false,\n valueFormatter,\n content,\n className,\n style,\n ...props\n },\n ref\n ) => {\n if (!open) {\n return null;\n }\n\n const hasCoordinates = x !== undefined && y !== undefined;\n\n return (\n <>\n {showCrosshair && crosshairX !== undefined && (\n <div\n className=\"chart-crosshair pointer-events-none absolute top-0 w-px border-l border-dashed border-border/80\"\n style={{\n left: `${crosshairX}px`,\n height: crosshairHeight !== undefined ? `${crosshairHeight}px` : \"100%\",\n }}\n aria-hidden=\"true\"\n />\n )}\n <div\n ref={ref}\n className={cn(\n \"chart-tooltip pointer-events-none absolute z-50 min-w-[120px] rounded-lg border border-border bg-popover/95 p-2.5 text-xs text-popover-foreground shadow-md backdrop-blur-sm transition-opacity duration-150\",\n className\n )}\n style={{\n left: x !== undefined ? `${x}px` : undefined,\n top: y !== undefined ? `${y}px` : undefined,\n transform: hasCoordinates ? \"translate(-50%, -100%) translateY(-8px)\" : undefined,\n ...style,\n }}\n {...props}\n >\n {content ? (\n content\n ) : (\n <>\n {title && (\n <div className=\"chart-tooltip-title font-medium text-foreground mb-1.5 pb-1 border-b border-border/50\">\n {title}\n </div>\n )}\n {items && items.length > 0 && (\n <div className=\"chart-tooltip-items space-y-1\">\n {items.map((item, idx) => {\n const itemVal =\n item.formattedValue ??\n (typeof item.value === \"number\" && valueFormatter\n ? valueFormatter(item.value)\n : item.value);\n\n return (\n <div\n key={item.key ?? idx}\n className=\"chart-tooltip-item flex items-center justify-between gap-3\"\n >\n <div className=\"flex items-center gap-1.5 min-w-0\">\n <span\n className=\"chart-tooltip-dot h-2 w-2 rounded-full shrink-0\"\n style={{ backgroundColor: getChartColor(item.color, idx) }}\n aria-hidden=\"true\"\n />\n <span className=\"truncate text-muted-foreground\">{item.label}</span>\n </div>\n <span className=\"font-semibold text-foreground shrink-0\">{itemVal}</span>\n </div>\n );\n })}\n </div>\n )}\n </>\n )}\n </div>\n </>\n );\n }\n);\nChartTooltip.displayName = \"ChartTooltip\";\n(ChartTooltip as unknown as { isHtml: boolean }).isHtml = true;\n\n/* =========================================================================\n ChartLegend\n ========================================================================= */\n\nexport interface ChartLegendProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onToggle\"> {\n series: ChartSeries[];\n activeSeries?: string[];\n disabledSeries?: string[];\n onToggle?: (key: string) => void;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n itemClassName?: string;\n}\n\n/**\n * Series labels list with colored indicator dots and optional click/keyboard toggling.\n */\nexport const ChartLegend: React.FC<ChartLegendProps> = ({\n series,\n activeSeries,\n disabledSeries,\n onToggle,\n orientation = \"horizontal\",\n className,\n itemClassName,\n ...props\n}) => {\n const isInteractive = Boolean(onToggle);\n\n return (\n <div\n className={cn(\n \"chart-legend flex flex-wrap items-center justify-center gap-4 py-2\",\n orientation === \"vertical\" && \"flex-col items-start gap-2\",\n className\n )}\n {...props}\n >\n {series.map((item, idx) => {\n const isDisabled =\n disabledSeries?.includes(item.key) ||\n (activeSeries !== undefined && !activeSeries.includes(item.key));\n\n const content = (\n <>\n <span\n className=\"chart-legend-dot h-2.5 w-2.5 rounded-full shrink-0\"\n style={{ backgroundColor: getChartColor(item.color, idx) }}\n aria-hidden=\"true\"\n />\n <span className=\"chart-legend-label\">{item.label}</span>\n </>\n );\n\n if (isInteractive) {\n return (\n <button\n key={item.key}\n type=\"button\"\n onClick={() => onToggle?.(item.key)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle?.(item.key);\n }\n }}\n aria-pressed={!isDisabled}\n className={cn(\n \"chart-legend-item inline-flex items-center gap-1.5 text-xs font-medium transition-opacity cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 rounded px-1 py-0.5\",\n isDisabled\n ? \"opacity-40 line-through text-muted-foreground\"\n : \"text-foreground hover:opacity-80\",\n itemClassName\n )}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n key={item.key}\n className={cn(\n \"chart-legend-item inline-flex items-center gap-1.5 text-xs font-medium\",\n isDisabled ? \"opacity-40 text-muted-foreground\" : \"text-foreground\",\n itemClassName\n )}\n >\n {content}\n </div>\n );\n })}\n </div>\n );\n};\nChartLegend.displayName = \"ChartLegend\";\n(ChartLegend as unknown as { isHtml: boolean }).isHtml = true;\n\n/* =========================================================================\n ChartA11yTable\n ========================================================================= */\n\nexport interface ChartA11yTableProps {\n caption?: string;\n categories?: string[];\n series: ChartSeries[];\n data: Array<Record<string, unknown>> | number[];\n indexKey?: string;\n index?: string;\n valueFormatter?: (value: unknown) => string;\n className?: string;\n}\n\n/**\n * Screen reader accessible semantic table hidden with sr-only class complying with WCAG 2.1 AA.\n */\nexport const ChartA11yTable: React.FC<ChartA11yTableProps> = ({\n caption,\n categories,\n series,\n data,\n indexKey,\n index,\n valueFormatter,\n className,\n}) => {\n const categoryKey = indexKey ?? index;\n\n return (\n <table className={cn(\"sr-only\", className)}>\n {caption && <caption>{caption}</caption>}\n <thead>\n <tr>\n <th scope=\"col\">{categoryKey || \"Category\"}</th>\n {series.map((s) => (\n <th key={s.key} scope=\"col\">\n {s.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, rowIdx) => {\n let categoryLabel = \"\";\n if (\n typeof row === \"object\" &&\n row !== null &&\n categoryKey &&\n row[categoryKey] !== undefined\n ) {\n categoryLabel = String(row[categoryKey]);\n } else if (categories && categories[rowIdx] !== undefined) {\n categoryLabel = String(categories[rowIdx]);\n } else {\n categoryLabel = `Item ${rowIdx + 1}`;\n }\n\n return (\n <tr key={`a11y-row-${rowIdx}`}>\n <th scope=\"row\">{categoryLabel}</th>\n {series.map((s) => {\n let rawVal: unknown;\n if (typeof row === \"number\") {\n rawVal = row;\n } else if (typeof row === \"object\" && row !== null) {\n rawVal = row[s.key];\n }\n\n const displayVal =\n valueFormatter && typeof rawVal === \"number\"\n ? valueFormatter(rawVal)\n : rawVal !== undefined && rawVal !== null\n ? String(rawVal)\n : \"-\";\n\n return <td key={s.key}>{displayVal}</td>;\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n};\nChartA11yTable.displayName = \"ChartA11yTable\";\n(ChartA11yTable as unknown as { isHtml: boolean }).isHtml = true;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport {\n type CurveType,\n calculateBarLayout,\n generateAreaPath,\n generateLinePath,\n linearScale,\n type Point,\n} from \"./chart-math\";\nimport { type ChartColor, getChartColor } from \"./chart-primitives\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\nexport type SparklineCurve = \"linear\" | \"smooth\";\n\nexport interface SparklineProps extends React.SVGAttributes<SVGSVGElement> {\n /** Numerical values or objects containing data points to plot. */\n data?: Array<number | Record<string, unknown>>;\n /** Key to extract numeric values when `data` contains objects. */\n dataKey?: string;\n /** Visual presentation mode: continuous line, gradient area, or discrete bars. Defaults to \"line\". */\n variant?: SparklineVariant;\n /** Interpolation method between data points. Defaults to \"smooth\". */\n curve?: SparklineCurve;\n /** Theme token identifier or raw CSS color string for line, fill, and bars. Defaults to \"chart1\". */\n color?: ChartColor;\n /** Line stroke width in pixels for line and area variants. Defaults to 2. */\n strokeWidth?: number;\n /** Whether to highlight the final data point with an accent dot. Defaults to false. */\n showEndDot?: boolean;\n /** Whether to apply a fading vertical gradient to area fills. Defaults to true. */\n showGradient?: boolean;\n /** Overall component height in pixels. Defaults to 36. */\n height?: number;\n /** Component width in pixels or CSS units. Defaults to \"100%\". */\n width?: number | string;\n /** Corner radius in pixels for bar rectangles. Defaults to 2. */\n barRadius?: number;\n /** Spacing between discrete bars in pixels. Defaults to 2. */\n barPadding?: number;\n /** Accessible label alias for assistive technologies. */\n ariaLabel?: string;\n}\n\n/**\n * Compact, lightweight data visualization sparkline for KPI cards, metric widgets, and data tables.\n */\nexport const Sparkline = React.forwardRef<SVGSVGElement, SparklineProps>(\n (\n {\n data,\n dataKey,\n variant = \"line\",\n curve = \"smooth\",\n color = \"chart1\",\n strokeWidth = 2,\n showEndDot = false,\n showGradient = true,\n height = 36,\n width = \"100%\",\n barRadius = 2,\n barPadding = 2,\n ariaLabel,\n className,\n style,\n preserveAspectRatio = \"none\",\n ...props\n },\n ref\n ) => {\n const rawId = React.useId();\n const gradientId = `sparkline-grad-${rawId.replace(/[^a-zA-Z0-9_-]/g, \"\")}`;\n\n const values: number[] = React.useMemo(() => {\n if (!data || !Array.isArray(data) || data.length === 0) return [];\n return data\n .map((item) => {\n if (typeof item === \"number\") return item;\n if (typeof item === \"object\" && item !== null) {\n if (dataKey && item[dataKey] !== undefined) {\n const num = Number(item[dataKey]);\n return Number.isFinite(num) ? num : 0;\n }\n if (\"value\" in item && item.value !== undefined) {\n const num = Number(item.value);\n return Number.isFinite(num) ? num : 0;\n }\n for (const key of Object.keys(item)) {\n const val = item[key];\n if (typeof val === \"number\") return val;\n const num = Number(val);\n if (Number.isFinite(num)) return num;\n }\n }\n const parsed = Number(item);\n return Number.isFinite(parsed) ? parsed : 0;\n })\n .filter((v) => Number.isFinite(v));\n }, [data, dataKey]);\n\n const resolvedColor = getChartColor(color, 0);\n const computedAriaLabel = props[\"aria-label\"] ?? ariaLabel ?? \"Sparkline\";\n const viewBoxWidth = typeof width === \"number\" && width > 0 ? width : 120;\n const isHidden = props[\"aria-hidden\"] === true || props[\"aria-hidden\"] === \"true\";\n\n if (values.length === 0) {\n return (\n <svg\n ref={ref}\n role={isHidden ? undefined : \"img\"}\n aria-label={isHidden ? undefined : computedAriaLabel}\n viewBox={`0 0 ${viewBoxWidth} ${height}`}\n width={width}\n height={height}\n className={cn(\"chart-sparkline chart-sparkline-empty overflow-visible\", className)}\n style={{\n height: typeof height === \"number\" ? `${height}px` : height,\n width: typeof width === \"number\" ? `${width}px` : width,\n ...style,\n }}\n preserveAspectRatio={preserveAspectRatio}\n {...props}\n >\n <line\n x1={0}\n y1={height / 2}\n x2={viewBoxWidth}\n y2={height / 2}\n stroke=\"currentColor\"\n strokeDasharray=\"2 2\"\n strokeWidth={1}\n className=\"text-muted-foreground/30 stroke-current\"\n />\n </svg>\n );\n }\n\n if (variant === \"bar\") {\n const minVal = Math.min(0, ...values);\n const maxVal = Math.max(0, ...values) || 1;\n const barData = values.map((val, idx) => ({\n group: idx,\n seriesIndex: 0,\n value: val,\n }));\n\n const barRects = calculateBarLayout({\n dataCount: values.length,\n seriesCount: 1,\n plotWidth: viewBoxWidth,\n plotHeight: height,\n yDomain: [minVal, maxVal],\n data: barData,\n mode: \"grouped\",\n layout: \"vertical\",\n groupPadding: 0.2,\n barPadding,\n });\n\n const lastBar = barRects.length > 0 ? barRects[barRects.length - 1] : undefined;\n\n return (\n <svg\n ref={ref}\n role={isHidden ? undefined : \"img\"}\n aria-label={isHidden ? undefined : computedAriaLabel}\n viewBox={`0 0 ${viewBoxWidth} ${height}`}\n width={width}\n height={height}\n className={cn(\"chart-sparkline chart-sparkline-bars overflow-visible\", className)}\n style={{\n height: typeof height === \"number\" ? `${height}px` : height,\n width: typeof width === \"number\" ? `${width}px` : width,\n ...style,\n }}\n preserveAspectRatio={preserveAspectRatio}\n {...props}\n >\n {barRects.map((bar, idx) => (\n <rect\n key={`sparkline-bar-${idx}-${bar.x}`}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={Math.max(bar.height, bar.value === 0 ? 0 : 1)}\n rx={barRadius}\n fill={resolvedColor}\n className=\"chart-sparkline-bar\"\n />\n ))}\n {showEndDot && lastBar && (\n <circle\n cx={lastBar.x + lastBar.width / 2}\n cy={lastBar.y}\n r={3}\n fill={resolvedColor}\n className=\"chart-sparkline-dot\"\n />\n )}\n </svg>\n );\n }\n\n // Line and Area variants\n const paddingTop = 4;\n const paddingBottom = 4;\n const paddingLeft = showEndDot ? 4 : 2;\n const paddingRight = showEndDot ? 4 : 2;\n\n const minVal = Math.min(...values);\n const maxVal = Math.max(...values);\n\n const points: Point[] = values.map((val, idx) => {\n const x =\n values.length === 1\n ? viewBoxWidth / 2\n : linearScale(idx, [0, values.length - 1], [paddingLeft, viewBoxWidth - paddingRight]);\n const y =\n minVal === maxVal\n ? height / 2\n : linearScale(val, [minVal, maxVal], [height - paddingBottom, paddingTop]);\n return { x, y };\n });\n\n const linePath = generateLinePath(points, curve as CurveType);\n const areaPath = variant === \"area\" ? generateAreaPath(points, height, curve as CurveType) : \"\";\n const lastPoint = points[points.length - 1];\n\n return (\n <svg\n ref={ref}\n role={isHidden ? undefined : \"img\"}\n aria-label={isHidden ? undefined : computedAriaLabel}\n viewBox={`0 0 ${viewBoxWidth} ${height}`}\n width={width}\n height={height}\n className={cn(\n \"chart-sparkline overflow-visible\",\n variant === \"area\" ? \"chart-sparkline-area-container\" : \"chart-sparkline-line-container\",\n className\n )}\n style={{\n height: typeof height === \"number\" ? `${height}px` : height,\n width: typeof width === \"number\" ? `${width}px` : width,\n ...style,\n }}\n preserveAspectRatio={preserveAspectRatio}\n {...props}\n >\n {variant === \"area\" && showGradient && (\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={resolvedColor} stopOpacity=\"0.28\" />\n <stop offset=\"100%\" stopColor={resolvedColor} stopOpacity=\"0.0\" />\n </linearGradient>\n </defs>\n )}\n\n {variant === \"area\" && areaPath && (\n <path\n d={areaPath}\n fill={showGradient ? `url(#${gradientId})` : resolvedColor}\n fillOpacity={showGradient ? undefined : 0.15}\n stroke=\"none\"\n className=\"chart-sparkline-area\"\n />\n )}\n\n {linePath && (\n <path\n d={linePath}\n fill=\"none\"\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n className=\"chart-sparkline-line\"\n />\n )}\n\n {showEndDot && lastPoint && (\n <circle\n cx={lastPoint.x}\n cy={lastPoint.y}\n r={3}\n fill={resolvedColor}\n stroke=\"var(--kj-background, #ffffff)\"\n strokeWidth={1.5}\n vectorEffect=\"non-scaling-stroke\"\n className=\"chart-sparkline-dot\"\n />\n )}\n </svg>\n );\n }\n);\nSparkline.displayName = \"Sparkline\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport {\n type CurveType,\n generateAreaPath,\n generateLinePath,\n getNiceScale,\n linearScale,\n type Point,\n} from \"./chart-math\";\nimport {\n ChartA11yTable,\n ChartContainer,\n ChartGrid,\n ChartLegend,\n type ChartMargin,\n type ChartSeries,\n ChartTooltip,\n type ChartTooltipItem,\n ChartXAxis,\n ChartYAxis,\n getChartColor,\n useChartWidth,\n} from \"./chart-primitives\";\n\nexport type LineChartVariant = \"line\" | \"area\";\nexport type LineChartCurve = CurveType;\n\nexport interface LineChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Array of tabular data records to plot. */\n data: Array<Record<string, unknown>>;\n /** Key identifying category or timestamp in each data item (e.g. \"date\", \"month\"). */\n index: string;\n /** Series configurations defining data keys, labels, and color assignments. */\n series: ChartSeries[];\n /** Visual presentation mode: continuous line or filled area. Defaults to \"line\". */\n variant?: LineChartVariant;\n /** Interpolation method between data points: linear polyline, smooth cubic curve, or step lines. Defaults to \"linear\". */\n curve?: LineChartCurve;\n /** Whether to render background horizontal reference grid lines. Defaults to true. */\n showGrid?: boolean;\n /** Whether to render horizontal X-axis tick labels. Defaults to true. */\n showXAxis?: boolean;\n /** Whether to render vertical Y-axis numeric ticks. Defaults to true. */\n showYAxis?: boolean;\n /** Whether to render series legend. Defaults to true when series.length > 1. */\n showLegend?: boolean;\n /** Whether to display interactive floating tooltip card on hover/touch. Defaults to true. */\n showTooltip?: boolean;\n /** Whether to render accent dots on data points. Defaults to false. */\n showDots?: boolean;\n /** Whether to apply a subtle vertical gradient to area fills. Defaults to true. */\n showGradient?: boolean;\n /** Whether to render a semantic hidden table for screen readers. Defaults to true when caption is provided. */\n showA11yTable?: boolean;\n /** Value formatter for Y-axis labels and tooltip metrics. */\n valueFormatter?: (value: number) => string;\n /** Label formatter for X-axis ticks and tooltip header. */\n indexFormatter?: (value: unknown) => string;\n /** Text to render when `data` is empty. Defaults to \"Brak danych do wyświetlenia\". */\n emptyMessage?: string;\n /** Height of the chart in pixels or CSS units. Defaults to 280. */\n height?: number | string;\n /** Width of the chart in pixels or CSS units. Defaults to \"100%\". */\n width?: number | string;\n /** Inner chart margins in pixels. */\n margin?: ChartMargin;\n /** Accessible label for screen readers. */\n ariaLabel?: string;\n /** Screen reader semantic table caption. */\n caption?: string;\n /** Stroke width in pixels for line paths. Defaults to 2. */\n strokeWidth?: number;\n /** Controlled list of active series keys. */\n activeSeries?: string[];\n /** Callback fired when user clicks a legend item to toggle series visibility. */\n onSeriesToggle?: (key: string) => void;\n /** Number of Y-axis ticks to target in nice scale calculation. Defaults to 5. */\n yTicksCount?: number;\n /** Explicit [min, max] domain override for Y-axis. */\n yDomain?: [number, number];\n /** Whether Y-axis auto-scales to data minimum rather than anchoring at zero. Defaults to false. */\n autoScale?: boolean;\n}\n\n/**\n * Responsive multi-series LineChart with SVG rendering, background grid, nice-scale axes,\n * interactive HTML tooltip overlay with crosshair, toggleable legend, and WCAG AA accessible table.\n */\nexport const LineChart = React.forwardRef<HTMLDivElement, LineChartProps>(\n (\n {\n data,\n index,\n series,\n variant = \"line\",\n curve = \"linear\",\n showGrid = true,\n showXAxis = true,\n showYAxis = true,\n showLegend,\n showTooltip = true,\n showDots = false,\n showGradient = true,\n showA11yTable,\n valueFormatter,\n indexFormatter,\n emptyMessage = \"Brak danych do wyświetlenia\",\n height = 280,\n width = \"100%\",\n margin: marginProp,\n ariaLabel,\n caption,\n strokeWidth = 2,\n activeSeries: activeSeriesProp,\n onSeriesToggle,\n yTicksCount = 5,\n yDomain: yDomainProp,\n autoScale = false,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const rawId = React.useId();\n const idPrefix = `kj-chart-${rawId.replace(/[^a-zA-Z0-9_-]/g, \"\")}`;\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n // Series visibility toggle state\n const [internalDisabledSeries, setInternalDisabledSeries] = React.useState<string[]>([]);\n const disabledSeries = activeSeriesProp\n ? series.filter((s) => !activeSeriesProp.includes(s.key)).map((s) => s.key)\n : internalDisabledSeries;\n\n const handleSeriesToggle = (key: string) => {\n onSeriesToggle?.(key);\n setInternalDisabledSeries((prev) =>\n prev.includes(key) ? prev.filter((k) => k !== key) : [...prev, key]\n );\n };\n\n const activeSeriesList = React.useMemo(\n () => series.filter((s) => !disabledSeries.includes(s.key)),\n [series, disabledSeries]\n );\n\n // Interactive tooltip state\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const [tooltipPos, setTooltipPos] = React.useState<{ x: number; y: number } | null>(null);\n\n const computedAriaLabel =\n props[\"aria-label\"] ??\n ariaLabel ??\n (variant === \"area\" ? \"Wykres warstwowy\" : \"Wykres liniowy\");\n\n // Fallback if data is empty\n if (!data || data.length === 0) {\n return (\n <ChartContainer\n ref={combinedRef}\n width={typeof width === \"number\" ? width : undefined}\n height={height}\n aria-label={computedAriaLabel}\n className={cn(\"chart-line-empty\", className)}\n style={style}\n {...props}\n >\n <div className=\"chart-empty-message flex h-full min-h-[160px] w-full items-center justify-center text-sm text-muted-foreground select-none\">\n {emptyMessage}\n </div>\n </ChartContainer>\n );\n }\n\n // Geometry layout constants\n const measuredWidth = useChartWidth(\n containerRef,\n typeof width === \"number\" && width > 0 ? width : 600\n );\n const viewBoxWidth =\n typeof width === \"number\" && width > 0 ? width : measuredWidth > 0 ? measuredWidth : 600;\n const viewBoxHeight = typeof height === \"number\" && height > 0 ? height : 280;\n\n const margin: Required<ChartMargin> = {\n top: 16,\n right: 20,\n bottom: showXAxis ? 32 : 16,\n left: showYAxis ? 48 : 16,\n ...marginProp,\n };\n\n const plotLeft = margin.left;\n const plotRight = viewBoxWidth - margin.right;\n const plotTop = margin.top;\n const plotBottom = viewBoxHeight - margin.bottom;\n const plotWidth = Math.max(0, plotRight - plotLeft);\n const plotHeight = Math.max(0, plotBottom - plotTop);\n\n // Domain & Scale calculation\n const allValues: number[] = [];\n for (const row of data) {\n for (const s of activeSeriesList) {\n const val = row[s.key];\n if (typeof val === \"number\" && Number.isFinite(val)) {\n allValues.push(val);\n }\n }\n }\n\n let dataMin = allValues.length > 0 ? Math.min(...allValues) : 0;\n const dataMax = allValues.length > 0 ? Math.max(...allValues) : 100;\n if (!autoScale && dataMin > 0) {\n dataMin = 0;\n }\n\n const niceScale = getNiceScale(dataMin, dataMax, yTicksCount);\n const domainMin = yDomainProp ? yDomainProp[0] : niceScale.min;\n const domainMax = yDomainProp ? yDomainProp[1] : niceScale.max;\n\n const getY = (val: number): number => {\n return linearScale(val, [domainMin, domainMax], [plotBottom, plotTop]);\n };\n\n const getX = (idx: number): number => {\n if (data.length <= 1) {\n return plotLeft + plotWidth / 2;\n }\n return linearScale(idx, [0, data.length - 1], [plotLeft, plotRight]);\n };\n\n // Y Axis ticks\n const yTicks = (\n yDomainProp\n ? getNiceScale(yDomainProp[0], yDomainProp[1], yTicksCount).ticks\n : niceScale.ticks\n ).map((val) => ({\n value: val,\n y: getY(val),\n }));\n\n // X Axis ticks\n const maxXTicks = Math.max(2, Math.floor(plotWidth / 60));\n const xStep = data.length > maxXTicks ? Math.ceil(data.length / maxXTicks) : 1;\n const xTicks = data\n .map((row, idx) => ({\n value: (row[index] as string | number) ?? \"\",\n x: getX(idx),\n idx,\n }))\n .filter((_, i) => i % xStep === 0 || i === data.length - 1);\n\n // Mouse / Touch handlers for interactive overlay\n const handlePointerMove = (clientX: number, clientY: number, target: Element) => {\n const rect = target.getBoundingClientRect();\n let relativeX: number;\n if (rect.width > 0) {\n relativeX = ((clientX - rect.left) / rect.width) * plotWidth + plotLeft;\n } else {\n relativeX = clientX;\n }\n\n let closestIdx = 0;\n let minDiff = Infinity;\n for (let i = 0; i < data.length; i++) {\n const ptX = getX(i);\n const diff = Math.abs(ptX - relativeX);\n if (diff < minDiff) {\n minDiff = diff;\n closestIdx = i;\n }\n }\n\n setActiveIndex(closestIdx);\n\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n if (containerRect.width > 0) {\n const scaleX = containerRect.width / viewBoxWidth;\n const pixelX = getX(closestIdx) * scaleX;\n const pixelY = clientY - containerRect.top;\n setTooltipPos({ x: pixelX, y: Math.max(20, pixelY) });\n return;\n }\n }\n setTooltipPos({ x: getX(closestIdx), y: clientY });\n };\n\n const handleMouseMove = (e: React.MouseEvent<SVGRectElement>) => {\n handlePointerMove(e.clientX, e.clientY, e.currentTarget);\n };\n\n const handleTouch = (e: React.TouchEvent<SVGRectElement>) => {\n if (e.touches.length > 0) {\n const touch = e.touches[0];\n handlePointerMove(touch.clientX, touch.clientY, e.currentTarget);\n }\n };\n\n const handleMouseLeave = () => {\n setActiveIndex(null);\n setTooltipPos(null);\n };\n\n // Tooltip data preparation\n const activeRow = activeIndex !== null && data[activeIndex] ? data[activeIndex] : null;\n const tooltipTitle =\n activeRow !== null\n ? indexFormatter\n ? indexFormatter(activeRow[index])\n : String(activeRow[index] ?? \"\")\n : \"\";\n\n const tooltipItems: ChartTooltipItem[] =\n activeRow !== null\n ? activeSeriesList.map((s, sIdx) => {\n const origIdx = series.findIndex((orig) => orig.key === s.key);\n const seriesColorIndex = origIdx >= 0 ? origIdx : sIdx;\n const raw = activeRow[s.key];\n const num = typeof raw === \"number\" ? raw : Number(raw) || 0;\n return {\n key: s.key,\n label: s.label,\n value: num,\n color: s.color ?? `chart${(seriesColorIndex % 6) + 1}`,\n formattedValue: valueFormatter ? valueFormatter(num) : undefined,\n };\n })\n : [];\n\n const baselineY = getY(Math.max(0, domainMin));\n const shouldShowLegend = showLegend ?? series.length > 1;\n const shouldShowA11yTable = showA11yTable ?? Boolean(caption);\n\n return (\n <ChartContainer\n ref={combinedRef}\n width={typeof width === \"number\" ? width : undefined}\n height={height}\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n aria-label={computedAriaLabel}\n className={cn(\n \"chart-line-root flex flex-col\",\n variant === \"area\" ? \"chart-area-root\" : \"chart-line-root\",\n className\n )}\n style={style}\n {...props}\n >\n {/* SVG Area definitions: Gradients */}\n <defs>\n {variant === \"area\" &&\n showGradient &&\n series.map((s, idx) => {\n const gradColor = getChartColor(s.color, idx);\n return (\n <linearGradient\n key={`grad-${s.key}`}\n id={`${idPrefix}-grad-${s.key}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"0%\" stopColor={gradColor} stopOpacity=\"0.28\" />\n <stop offset=\"100%\" stopColor={gradColor} stopOpacity=\"0.0\" />\n </linearGradient>\n );\n })}\n </defs>\n\n {/* Background Grid Lines */}\n {showGrid && (\n <g transform={`translate(${plotLeft}, 0)`}>\n <ChartGrid\n horizontal\n yTicks={yTicks.map((t) => t.value as number)}\n scaleY={getY}\n width={plotWidth}\n />\n </g>\n )}\n\n {/* Series Paths: Area Fills and Lines */}\n {activeSeriesList.map((s, sIdx) => {\n const origIdx = series.findIndex((orig) => orig.key === s.key);\n const seriesColorIndex = origIdx >= 0 ? origIdx : sIdx;\n const sColor = getChartColor(s.color, seriesColorIndex);\n const points: Point[] = [];\n\n for (let i = 0; i < data.length; i++) {\n const rawVal = data[i][s.key];\n if (rawVal !== undefined && rawVal !== null && Number.isFinite(Number(rawVal))) {\n points.push({ x: getX(i), y: getY(Number(rawVal)) });\n }\n }\n\n if (points.length === 0) return null;\n\n const linePath = generateLinePath(points, curve);\n const areaPath = variant === \"area\" ? generateAreaPath(points, baselineY, curve) : \"\";\n\n return (\n <g key={`series-${s.key}`} className={`chart-series chart-series-${s.key}`}>\n {/* Area gradient polygon */}\n {variant === \"area\" && areaPath && (\n <path\n d={areaPath}\n fill={showGradient ? `url(#${idPrefix}-grad-${s.key})` : sColor}\n fillOpacity={showGradient ? undefined : 0.15}\n stroke=\"none\"\n className=\"chart-area pointer-events-none transition-opacity duration-200\"\n />\n )}\n\n {/* Stroke line */}\n {linePath && (\n <path\n d={linePath}\n fill=\"none\"\n stroke={sColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n className=\"chart-line pointer-events-none transition-opacity duration-200\"\n />\n )}\n\n {/* Accent dots */}\n {showDots &&\n points.map((pt, ptIdx) => (\n <circle\n key={`dot-${s.key}-${ptIdx}`}\n cx={pt.x}\n cy={pt.y}\n r={3}\n fill={sColor}\n stroke=\"var(--kj-background, #ffffff)\"\n strokeWidth={1.5}\n className=\"chart-dot pointer-events-none\"\n />\n ))}\n\n {/* Hover active point highlight */}\n {activeIndex !== null &&\n activeRow &&\n activeRow[s.key] !== undefined &&\n activeRow[s.key] !== null &&\n Number.isFinite(Number(activeRow[s.key])) && (\n <circle\n cx={getX(activeIndex)}\n cy={getY(Number(activeRow[s.key]))}\n r={4.5}\n fill={sColor}\n stroke=\"var(--kj-background, #ffffff)\"\n strokeWidth={2}\n className=\"chart-active-dot pointer-events-none\"\n />\n )}\n </g>\n );\n })}\n\n {/* X Axis */}\n {showXAxis && <ChartXAxis ticks={xTicks} y={plotBottom + 16} formatter={indexFormatter} />}\n\n {/* Y Axis */}\n {showYAxis && (\n <ChartYAxis\n ticks={yTicks}\n x={plotLeft - 8}\n formatter={valueFormatter as (v: unknown) => string}\n />\n )}\n\n {/* Interactive Mouse & Touch Overlay */}\n {showTooltip && (\n /* biome-ignore lint/a11y/noStaticElementInteractions: transparent SVG overlay tracks pointer for chart tooltip */\n <rect\n className=\"chart-interactive-overlay cursor-crosshair\"\n x={plotLeft}\n y={plotTop}\n width={plotWidth}\n height={plotHeight}\n fill=\"transparent\"\n pointerEvents=\"all\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onTouchStart={handleTouch}\n onTouchMove={handleTouch}\n onTouchEnd={handleMouseLeave}\n />\n )}\n\n {/* Tooltip Overlay */}\n {showTooltip && activeIndex !== null && tooltipPos && (\n <ChartTooltip\n open={activeIndex !== null}\n title={tooltipTitle}\n items={tooltipItems}\n x={tooltipPos.x}\n y={tooltipPos.y}\n showCrosshair\n crosshairX={tooltipPos.x}\n crosshairHeight={plotBottom}\n valueFormatter={valueFormatter}\n />\n )}\n\n {/* Legend */}\n {shouldShowLegend && (\n <ChartLegend\n series={series}\n disabledSeries={disabledSeries}\n onToggle={handleSeriesToggle}\n />\n )}\n\n {/* Semantic Accessible Table for Screen Readers */}\n {shouldShowA11yTable && (\n <ChartA11yTable\n caption={caption ?? computedAriaLabel}\n series={series}\n data={data}\n indexKey={index}\n valueFormatter={valueFormatter as (v: unknown) => string}\n />\n )}\n </ChartContainer>\n );\n }\n);\nLineChart.displayName = \"LineChart\";\n\n/**\n * Specialized variant of LineChart with subtle SVG vertical gradient fills beneath lines.\n */\nexport const AreaChart = React.forwardRef<HTMLDivElement, LineChartProps>((props, ref) => (\n <LineChart ref={ref} variant=\"area\" {...props} />\n));\nAreaChart.displayName = \"AreaChart\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport {\n type BarDataPoint,\n type BarRect,\n calculateBarLayout,\n getNiceScale,\n linearScale,\n} from \"./chart-math\";\nimport {\n ChartA11yTable,\n ChartContainer,\n ChartGrid,\n ChartLegend,\n type ChartMargin,\n type ChartSeries,\n ChartTooltip,\n type ChartTooltipItem,\n ChartXAxis,\n ChartYAxis,\n getChartColor,\n useChartWidth,\n} from \"./chart-primitives\";\n\nexport type BarChartType = \"grouped\" | \"stacked\";\nexport type BarChartLayout = \"vertical\" | \"horizontal\";\n\nexport interface BarChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Array of tabular data records to plot. */\n data: Array<Record<string, unknown>>;\n /** Key identifying category or timestamp in each data item (e.g. \"category\", \"month\"). */\n index: string;\n /** Series configurations defining data keys, labels, and color assignments. */\n series: ChartSeries[];\n /** Mode of bar presentation: grouped side-by-side or stacked. Defaults to \"grouped\". */\n type?: BarChartType;\n /** Orientation of bars: vertical columns or horizontal bars. Defaults to \"vertical\". */\n layout?: BarChartLayout;\n /** Corner radius in pixels for rounded bar edges. Defaults to 4. */\n radius?: number;\n /** Whether to render background reference grid lines. Defaults to true. */\n showGrid?: boolean;\n /** Whether to render horizontal X-axis tick labels. Defaults to true. */\n showXAxis?: boolean;\n /** Whether to render vertical Y-axis numeric or category ticks. Defaults to true. */\n showYAxis?: boolean;\n /** Whether to render series legend. Defaults to true when series.length > 1. */\n showLegend?: boolean;\n /** Whether to display interactive floating tooltip card on bar hover/touch. Defaults to true. */\n showTooltip?: boolean;\n /** Whether to render a semantic hidden table for screen readers. Defaults to true when caption is provided. */\n showA11yTable?: boolean;\n /** Value formatter for numeric axis labels and tooltip metrics. */\n valueFormatter?: (value: number) => string;\n /** Label formatter for category axis ticks and tooltip header. */\n indexFormatter?: (value: unknown) => string;\n /** Text to render when `data` is empty. Defaults to \"Brak danych do wyświetlenia\". */\n emptyMessage?: string;\n /** Height of the chart in pixels or CSS units. Defaults to 280. */\n height?: number | string;\n /** Width of the chart in pixels or CSS units. Defaults to \"100%\". */\n width?: number | string;\n /** Inner chart margins in pixels. */\n margin?: ChartMargin;\n /** Accessible label for screen readers. */\n ariaLabel?: string;\n /** Screen reader semantic table caption. */\n caption?: string;\n /** Controlled list of active series keys. */\n activeSeries?: string[];\n /** Callback fired when user clicks a legend item to toggle series visibility. */\n onSeriesToggle?: (key: string) => void;\n /** Number of numeric ticks to target in nice scale calculation. Defaults to 5. */\n yTicksCount?: number;\n /** Explicit [min, max] domain override for the numeric value axis. */\n yDomain?: [number, number];\n /** Whether numeric axis auto-scales to data minimum rather than anchoring at zero. Defaults to false. */\n autoScale?: boolean;\n /** Maximum bar thickness in pixels. */\n barMaxWidth?: number;\n /** Fractional padding between category groups (0 to 1). Defaults to 0.2. */\n groupPadding?: number;\n /** Pixel gap between bars within a grouped category. Defaults to 2. */\n barPadding?: number;\n /** Additional CSS class applied to each SVG bar rect. */\n barClassName?: string;\n}\n\n/**\n * Responsive multi-series BarChart supporting grouped and stacked modes,\n * vertical and horizontal orientations, rounded corners, tooltips, legend toggling,\n * and WCAG AA accessibility table.\n */\nexport const BarChart = React.forwardRef<HTMLDivElement, BarChartProps>(\n (\n {\n data,\n index,\n series,\n type = \"grouped\",\n layout = \"vertical\",\n radius = 4,\n showGrid = true,\n showXAxis = true,\n showYAxis = true,\n showLegend,\n showTooltip = true,\n showA11yTable,\n valueFormatter,\n indexFormatter,\n emptyMessage = \"Brak danych do wyświetlenia\",\n height = 280,\n width = \"100%\",\n margin: marginProp,\n ariaLabel,\n caption,\n activeSeries: activeSeriesProp,\n onSeriesToggle,\n yTicksCount = 5,\n yDomain: yDomainProp,\n autoScale = false,\n barMaxWidth,\n groupPadding = 0.2,\n barPadding = 2,\n barClassName,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n // Series visibility toggle state\n const [internalDisabledSeries, setInternalDisabledSeries] = React.useState<string[]>([]);\n const disabledSeries = activeSeriesProp\n ? series.filter((s) => !activeSeriesProp.includes(s.key)).map((s) => s.key)\n : internalDisabledSeries;\n\n const handleSeriesToggle = (key: string) => {\n onSeriesToggle?.(key);\n setInternalDisabledSeries((prev) =>\n prev.includes(key) ? prev.filter((k) => k !== key) : [...prev, key]\n );\n };\n\n const activeSeriesList = React.useMemo(\n () => series.filter((s) => !disabledSeries.includes(s.key)),\n [series, disabledSeries]\n );\n\n // Interactive tooltip state\n const [activeGroup, setActiveGroup] = React.useState<number | null>(null);\n const [activeSeriesKey, setActiveSeriesKey] = React.useState<string | null>(null);\n const [tooltipPos, setTooltipPos] = React.useState<{ x: number; y: number } | null>(null);\n\n const computedAriaLabel =\n props[\"aria-label\"] ??\n ariaLabel ??\n (type === \"stacked\" ? \"Wykres słupkowy skumulowany\" : \"Wykres słupkowy\");\n\n // Fallback if data is empty\n if (!data || data.length === 0) {\n return (\n <ChartContainer\n ref={combinedRef}\n width={typeof width === \"number\" ? width : undefined}\n height={height}\n aria-label={computedAriaLabel}\n className={cn(\"chart-bar-empty\", className)}\n style={style}\n {...props}\n >\n <div className=\"chart-empty-message flex h-full min-h-[160px] w-full items-center justify-center text-sm text-muted-foreground select-none\">\n {emptyMessage}\n </div>\n </ChartContainer>\n );\n }\n\n // Geometry layout constants\n const measuredWidth = useChartWidth(\n containerRef,\n typeof width === \"number\" && width > 0 ? width : 600\n );\n const viewBoxWidth =\n typeof width === \"number\" && width > 0 ? width : measuredWidth > 0 ? measuredWidth : 600;\n const viewBoxHeight = typeof height === \"number\" && height > 0 ? height : 280;\n\n const margin: Required<ChartMargin> = {\n top: 16,\n right: 20,\n bottom: showXAxis ? 32 : 16,\n left: showYAxis ? (layout === \"horizontal\" ? 64 : 48) : 16,\n ...marginProp,\n };\n\n const plotLeft = margin.left;\n const plotRight = viewBoxWidth - margin.right;\n const plotTop = margin.top;\n const plotBottom = viewBoxHeight - margin.bottom;\n const plotWidth = Math.max(0, plotRight - plotLeft);\n const plotHeight = Math.max(0, plotBottom - plotTop);\n\n // Domain & Scale calculation\n let dataMin = 0;\n let dataMax = 100;\n\n if (type === \"stacked\") {\n const stackSums: number[] = [];\n for (const row of data) {\n let sum = 0;\n for (const s of activeSeriesList) {\n const val = row[s.key];\n if (typeof val === \"number\" && Number.isFinite(val)) {\n sum += Math.max(0, val);\n }\n }\n stackSums.push(sum);\n }\n dataMax = stackSums.length > 0 ? Math.max(...stackSums, 0) : 100;\n if (dataMax === 0) dataMax = 100;\n } else {\n const allValues: number[] = [];\n for (const row of data) {\n for (const s of activeSeriesList) {\n const val = row[s.key];\n if (typeof val === \"number\" && Number.isFinite(val)) {\n allValues.push(val);\n }\n }\n }\n dataMax = allValues.length > 0 ? Math.max(...allValues, 0) : 100;\n if (allValues.length > 0 && autoScale) {\n dataMin = Math.min(...allValues, 0);\n }\n if (dataMax === 0) dataMax = 100;\n }\n\n const niceScale = getNiceScale(dataMin, dataMax, yTicksCount);\n const domainMin = yDomainProp ? yDomainProp[0] : niceScale.min;\n const domainMax = yDomainProp ? yDomainProp[1] : niceScale.max;\n const yDomain: [number, number] = [domainMin, domainMax];\n\n // Data points for layout calculation\n const barDataPoints: BarDataPoint[] = [];\n for (let group = 0; group < data.length; group++) {\n const row = data[group];\n for (let sIdx = 0; sIdx < activeSeriesList.length; sIdx++) {\n const s = activeSeriesList[sIdx];\n const rawVal = row[s.key];\n const num =\n typeof rawVal === \"number\" && Number.isFinite(rawVal) ? rawVal : Number(rawVal) || 0;\n barDataPoints.push({\n group,\n seriesIndex: sIdx,\n value: num,\n seriesKey: s.key,\n seriesLabel: s.label,\n categoryValue: row[index],\n });\n }\n }\n\n const barRects = calculateBarLayout({\n dataCount: data.length,\n seriesCount: activeSeriesList.length,\n plotWidth,\n plotHeight,\n yDomain,\n data: barDataPoints,\n mode: type,\n layout,\n barMaxWidth,\n groupPadding,\n barPadding,\n });\n\n // Axis and Grid tick calculations based on orientation\n const isVertical = layout === \"vertical\";\n const slotSize =\n data.length > 0 ? (isVertical ? plotWidth / data.length : plotHeight / data.length) : 0;\n\n // Category ticks\n const categoryTicks = data.map((row, idx) => ({\n value: (row[index] as string | number) ?? \"\",\n coord: isVertical ? plotLeft + (idx + 0.5) * slotSize : plotTop + (idx + 0.5) * slotSize,\n }));\n\n // Value ticks\n const valueTicks = (\n yDomainProp\n ? getNiceScale(yDomainProp[0], yDomainProp[1], yTicksCount).ticks\n : niceScale.ticks\n ).map((val) => ({\n value: val,\n coord: isVertical\n ? linearScale(val, yDomain, [plotBottom, plotTop])\n : linearScale(val, yDomain, [plotLeft, plotRight]),\n }));\n\n // Tooltip position updates\n const updateTooltipPosition = (bar: BarRect) => {\n let targetX: number;\n let targetY: number;\n\n if (layout === \"horizontal\") {\n targetX = plotLeft + bar.x + bar.width;\n targetY = plotTop + bar.y + bar.height / 2;\n } else {\n targetX = plotLeft + bar.x + bar.width / 2;\n targetY = plotTop + bar.y;\n }\n\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n if (containerRect.width > 0 && containerRect.height > 0) {\n const scaleX = containerRect.width / viewBoxWidth;\n const scaleY = containerRect.height / viewBoxHeight;\n setTooltipPos({ x: targetX * scaleX, y: targetY * scaleY });\n return;\n }\n }\n setTooltipPos({ x: targetX, y: targetY });\n };\n\n const handleBarMouseEnter = (bar: BarRect) => {\n if (!showTooltip) return;\n setActiveGroup(bar.group);\n setActiveSeriesKey(bar.seriesKey as string);\n updateTooltipPosition(bar);\n };\n\n const handleBarMouseLeave = () => {\n setActiveGroup(null);\n setActiveSeriesKey(null);\n setTooltipPos(null);\n };\n\n const handleBarTouchStart = (bar: BarRect) => {\n if (!showTooltip) return;\n setActiveGroup(bar.group);\n setActiveSeriesKey(bar.seriesKey as string);\n updateTooltipPosition(bar);\n };\n\n const handleBarTouchEnd = () => {\n setActiveGroup(null);\n setActiveSeriesKey(null);\n setTooltipPos(null);\n };\n\n // Tooltip data preparation\n const activeRow = activeGroup !== null && data[activeGroup] ? data[activeGroup] : null;\n const tooltipTitle =\n activeRow !== null\n ? indexFormatter\n ? indexFormatter(activeRow[index])\n : String(activeRow[index] ?? \"\")\n : \"\";\n\n const tooltipItems: ChartTooltipItem[] =\n activeRow !== null\n ? activeSeriesList.map((s, sIdx) => {\n const origIdx = series.findIndex((orig) => orig.key === s.key);\n const seriesColorIndex = origIdx >= 0 ? origIdx : sIdx;\n const raw = activeRow[s.key];\n const num = typeof raw === \"number\" ? raw : Number(raw) || 0;\n return {\n key: s.key,\n label: s.label,\n value: num,\n color: s.color ?? `chart${(seriesColorIndex % 6) + 1}`,\n formattedValue: valueFormatter ? valueFormatter(num) : undefined,\n };\n })\n : [];\n\n const shouldShowLegend = showLegend ?? series.length > 1;\n const shouldShowA11yTable = showA11yTable ?? Boolean(caption);\n\n return (\n <ChartContainer\n ref={combinedRef}\n width={typeof width === \"number\" ? width : undefined}\n height={height}\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n aria-label={computedAriaLabel}\n className={cn(\n \"chart-bar-root flex flex-col\",\n type === \"stacked\" ? \"chart-bar-stacked\" : \"chart-bar-grouped\",\n layout === \"horizontal\" ? \"chart-bar-horizontal\" : \"chart-bar-vertical\",\n className\n )}\n style={style}\n {...props}\n >\n {/* Background Grid Lines */}\n {showGrid &&\n (isVertical ? (\n <g transform={`translate(${plotLeft}, 0)`}>\n <ChartGrid\n horizontal\n yTicks={valueTicks.map((t) => t.value as number)}\n scaleY={(val) => linearScale(val, yDomain, [plotBottom, plotTop])}\n width={plotWidth}\n />\n </g>\n ) : (\n <g transform={`translate(0, ${plotTop})`}>\n <ChartGrid\n vertical\n horizontal={false}\n xTicks={valueTicks.map((t) => t.value as number)}\n scaleX={(val) => linearScale(val, yDomain, [plotLeft, plotRight])}\n height={plotHeight}\n />\n </g>\n ))}\n\n {/* Bar Rectangles */}\n <g transform={`translate(${plotLeft}, ${plotTop})`} className=\"chart-bars-group\">\n {barRects.map((bar) => {\n const origIdx = series.findIndex((orig) => orig.key === bar.seriesKey);\n const seriesColorIndex = origIdx >= 0 ? origIdx : bar.seriesIndex;\n const matchingSeries = series[origIdx] ?? activeSeriesList[bar.seriesIndex];\n const sColor = getChartColor(matchingSeries?.color, seriesColorIndex);\n\n const barW = Math.max(0, bar.width);\n const barH = Math.max(0, bar.height);\n const safeRadius =\n radius > 0 ? Math.min(radius, Math.max(0, barW / 2), Math.max(0, barH / 2)) : 0;\n\n const isDimmed =\n activeGroup !== null &&\n (bar.group !== activeGroup ||\n (type === \"grouped\" &&\n activeSeriesKey !== null &&\n bar.seriesKey !== activeSeriesKey));\n\n return (\n <rect\n key={`bar-${bar.group}-${bar.seriesKey}`}\n className={cn(\n \"chart-bar transition-opacity duration-150 cursor-pointer\",\n barClassName\n )}\n x={bar.x}\n y={bar.y}\n width={barW}\n height={barH}\n rx={safeRadius}\n ry={safeRadius}\n fill={sColor}\n opacity={isDimmed ? 0.45 : 1}\n tabIndex={0}\n role=\"graphics-symbol\"\n aria-label={`${bar.seriesLabel ?? bar.seriesKey}: ${\n valueFormatter ? valueFormatter(bar.value) : bar.value\n }, ${bar.categoryValue}`}\n onMouseEnter={() => handleBarMouseEnter(bar)}\n onMouseMove={() => handleBarMouseEnter(bar)}\n onMouseLeave={handleBarMouseLeave}\n onTouchStart={() => handleBarTouchStart(bar)}\n onTouchEnd={handleBarTouchEnd}\n onFocus={() => handleBarMouseEnter(bar)}\n onBlur={handleBarMouseLeave}\n />\n );\n })}\n </g>\n\n {/* X Axis */}\n {showXAxis && (\n <ChartXAxis\n ticks={\n isVertical\n ? categoryTicks.map((t) => ({ value: t.value, x: t.coord }))\n : valueTicks.map((t) => ({ value: t.value, x: t.coord }))\n }\n y={plotBottom + 16}\n formatter={isVertical ? indexFormatter : (valueFormatter as (v: unknown) => string)}\n />\n )}\n\n {/* Y Axis */}\n {showYAxis && (\n <ChartYAxis\n ticks={\n isVertical\n ? valueTicks.map((t) => ({ value: t.value, y: t.coord }))\n : categoryTicks.map((t) => ({ value: t.value, y: t.coord }))\n }\n x={plotLeft - 8}\n formatter={isVertical ? (valueFormatter as (v: unknown) => string) : indexFormatter}\n />\n )}\n\n {/* Tooltip Overlay */}\n {showTooltip && activeGroup !== null && tooltipPos && (\n <ChartTooltip\n open={activeGroup !== null}\n title={tooltipTitle}\n items={tooltipItems}\n x={tooltipPos.x}\n y={tooltipPos.y}\n valueFormatter={valueFormatter}\n />\n )}\n\n {/* Legend */}\n {shouldShowLegend && (\n <ChartLegend\n series={series}\n disabledSeries={disabledSeries}\n onToggle={handleSeriesToggle}\n />\n )}\n\n {/* Semantic Accessible Table for Screen Readers */}\n {shouldShowA11yTable && (\n <ChartA11yTable\n caption={caption ?? computedAriaLabel}\n series={series}\n data={data}\n indexKey={index}\n valueFormatter={valueFormatter as (v: unknown) => string}\n />\n )}\n </ChartContainer>\n );\n }\n);\nBarChart.displayName = \"BarChart\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { calculateDonutSegments, type DonutSegment, type DonutSliceInput } from \"./chart-math\";\nimport {\n ChartA11yTable,\n type ChartColor,\n ChartContainer,\n ChartLegend,\n type ChartSeries,\n ChartTooltip,\n DEFAULT_CHART_COLORS,\n getChartColor,\n} from \"./chart-primitives\";\n\nexport type DonutChartSize = \"sm\" | \"md\" | \"lg\" | number;\n\nconst SIZE_MAP: Record<\"sm\" | \"md\" | \"lg\", number> = {\n sm: 160,\n md: 220,\n lg: 280,\n};\n\nfunction getDimension(size: DonutChartSize = \"md\"): number {\n if (typeof size === \"number\") {\n return size > 0 ? size : 220;\n }\n return SIZE_MAP[size] ?? 220;\n}\n\nexport interface DonutChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Array of data records to plot. */\n data: Array<Record<string, unknown>>;\n /** Key identifying category label in each data item (e.g. \"source\", \"name\"). */\n category: string;\n /** Key identifying numeric value in each data item (e.g. \"visitors\", \"amount\"). */\n value: string;\n /** Custom label or metric element rendered in the center hole of the donut ring. */\n centerLabel?: React.ReactNode;\n /** Chart diameter: predefined \"sm\" (160px), \"md\" (220px), \"lg\" (280px) or custom pixel number. Defaults to \"md\". */\n size?: DonutChartSize;\n /** Inner radius ratio (0 to 1, relative to outerRadius) or absolute pixel radius (> 1). Defaults to 0.65. Set to 0 for pie chart. */\n innerRadius?: number;\n /** Custom color palette or token sequence (e.g. [\"chart1\", \"chart2\"] or hex strings). */\n colors?: (ChartColor | string)[];\n /** Whether to render series legend. Defaults to true. */\n showLegend?: boolean;\n /** Whether to display interactive floating tooltip card on slice hover/touch. Defaults to true. */\n showTooltip?: boolean;\n /** Whether to render a semantic hidden table for screen readers. Defaults to true when caption is provided. */\n showA11yTable?: boolean;\n /** Value formatter for numeric tooltip metrics and accessible table values. */\n valueFormatter?: (value: number) => string;\n /** Text to render when `data` is empty. Defaults to \"Brak danych do wyświetlenia\". */\n emptyMessage?: string;\n /** Accessible label for screen readers. */\n ariaLabel?: string;\n /** Screen reader semantic table caption. */\n caption?: string;\n /** Column header label for numeric metric in screen reader table. Defaults to \"Wartość\". */\n valueLabel?: string;\n /** Controlled list of active category keys. */\n activeCategories?: string[];\n /** Callback fired when user clicks a legend item to toggle category visibility. */\n onCategoryToggle?: (category: string) => void;\n /** Additional CSS class applied to each SVG path slice. */\n sliceClassName?: string;\n}\n\n/**\n * Responsive DonutChart component rendering SVG annular ring segments,\n * center content slot, hover highlights, interactive legend toggling,\n * floating tooltip, and WCAG AA screen reader table.\n */\nexport const DonutChart = React.forwardRef<HTMLDivElement, DonutChartProps>(\n (\n {\n data,\n category,\n value,\n centerLabel,\n size = \"md\",\n innerRadius: innerRadiusProp,\n colors,\n showLegend = true,\n showTooltip = true,\n showA11yTable,\n valueFormatter,\n emptyMessage = \"Brak danych do wyświetlenia\",\n ariaLabel,\n caption,\n valueLabel = \"Wartość\",\n activeCategories: activeCategoriesProp,\n onCategoryToggle,\n sliceClassName,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n // State hooks\n const [internalDisabled, setInternalDisabled] = React.useState<string[]>([]);\n const [activeIdx, setActiveIdx] = React.useState<number | null>(null);\n const [tooltipPos, setTooltipPos] = React.useState<{ x: number; y: number } | null>(null);\n\n const safeData = data || [];\n\n const dimension = getDimension(size);\n const cx = dimension / 2;\n const cy = dimension / 2;\n const padding = 8;\n const outerRadius = Math.max(10, dimension / 2 - padding);\n\n // Compute inner radius: ratio (0 to 1) or absolute pixels (> 1)\n let computedInnerRadius: number;\n if (innerRadiusProp !== undefined) {\n if (innerRadiusProp >= 0 && innerRadiusProp <= 1) {\n computedInnerRadius = outerRadius * innerRadiusProp;\n } else {\n computedInnerRadius = Math.min(innerRadiusProp, Math.max(0, outerRadius - 4));\n }\n } else {\n computedInnerRadius = outerRadius * 0.65;\n }\n\n // Prepare legend series with stable colors matching data order\n const legendSeries: ChartSeries[] = React.useMemo(() => {\n return safeData.map((item, idx) => {\n const cat = String(item[category] ?? `Item ${idx + 1}`);\n const rawColor =\n (item.color as string | undefined) ??\n (colors\n ? colors[idx % colors.length]\n : DEFAULT_CHART_COLORS[idx % DEFAULT_CHART_COLORS.length]);\n return {\n key: cat,\n label: cat,\n color: rawColor,\n };\n });\n }, [safeData, category, colors]);\n\n const disabledCategories = activeCategoriesProp\n ? legendSeries.filter((s) => !activeCategoriesProp.includes(s.key)).map((s) => s.key)\n : internalDisabled;\n\n const handleLegendToggle = (catKey: string) => {\n onCategoryToggle?.(catKey);\n setInternalDisabled((prev) =>\n prev.includes(catKey) ? prev.filter((k) => k !== catKey) : [...prev, catKey]\n );\n };\n\n // Calculate slice inputs with zero value for disabled categories\n const sliceInputs: DonutSliceInput[] = React.useMemo(() => {\n return safeData.map((item, idx) => {\n const cat = String(item[category] ?? `Item ${idx + 1}`);\n const isDisabled = disabledCategories.includes(cat);\n const rawVal = item[value];\n const numVal =\n typeof rawVal === \"number\" && Number.isFinite(rawVal) ? rawVal : Number(rawVal) || 0;\n\n const rawColor =\n (item.color as string | undefined) ??\n (colors\n ? colors[idx % colors.length]\n : DEFAULT_CHART_COLORS[idx % DEFAULT_CHART_COLORS.length]);\n\n return {\n label: cat,\n value: isDisabled ? 0 : Math.max(0, numVal),\n color: getChartColor(rawColor, idx),\n originalValue: numVal,\n originalIndex: idx,\n };\n });\n }, [safeData, category, value, colors, disabledCategories]);\n\n const segments: DonutSegment[] = React.useMemo(() => {\n return calculateDonutSegments(sliceInputs, {\n cx,\n cy,\n innerRadius: computedInnerRadius,\n outerRadius,\n startAngle: -90,\n });\n }, [sliceInputs, cx, cy, computedInnerRadius, outerRadius]);\n\n const computedAriaLabel = props[\"aria-label\"] ?? ariaLabel ?? \"Wykres pierścieniowy\";\n\n // Fallback if data is empty\n if (!data || data.length === 0) {\n return (\n <ChartContainer\n ref={combinedRef}\n aria-label={computedAriaLabel}\n className={cn(\"chart-donut-empty flex flex-col items-center justify-center\", className)}\n style={style}\n {...props}\n >\n <div className=\"chart-empty-message flex min-h-[160px] w-full items-center justify-center text-sm text-muted-foreground select-none\">\n {emptyMessage}\n </div>\n </ChartContainer>\n );\n }\n\n const updateTooltipPosition = (segment: DonutSegment, clientX?: number, clientY?: number) => {\n const midRad = (segment.middleAngle * Math.PI) / 180;\n const midRadius = (computedInnerRadius + outerRadius) / 2;\n const targetX = cx + midRadius * Math.cos(midRad);\n const targetY = cy + midRadius * Math.sin(midRad);\n\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n if (\n containerRect.width > 0 &&\n containerRect.height > 0 &&\n clientX !== undefined &&\n clientY !== undefined\n ) {\n setTooltipPos({\n x: clientX - containerRect.left,\n y: clientY - containerRect.top,\n });\n return;\n }\n }\n\n setTooltipPos({ x: targetX, y: targetY });\n };\n\n const handleSliceMouseEnter = (\n idx: number,\n segment: DonutSegment,\n e: React.MouseEvent<SVGPathElement>\n ) => {\n if (!showTooltip) return;\n setActiveIdx(idx);\n updateTooltipPosition(segment, e.clientX, e.clientY);\n };\n\n const handleSliceMouseMove = (\n _idx: number,\n segment: DonutSegment,\n e: React.MouseEvent<SVGPathElement>\n ) => {\n if (!showTooltip) return;\n updateTooltipPosition(segment, e.clientX, e.clientY);\n };\n\n const handleSliceMouseLeave = () => {\n setActiveIdx(null);\n setTooltipPos(null);\n };\n\n const handleSliceTouchStart = (\n idx: number,\n segment: DonutSegment,\n e: React.TouchEvent<SVGPathElement>\n ) => {\n if (!showTooltip) return;\n setActiveIdx(idx);\n if (e.touches.length > 0) {\n const touch = e.touches[0];\n updateTooltipPosition(segment, touch.clientX, touch.clientY);\n } else {\n updateTooltipPosition(segment);\n }\n };\n\n const handleSliceTouchEnd = () => {\n setActiveIdx(null);\n setTooltipPos(null);\n };\n\n const activeSegment = activeIdx !== null && segments[activeIdx] ? segments[activeIdx] : null;\n\n // Accessible table preparation\n const shouldShowA11yTable = showA11yTable ?? Boolean(caption);\n const a11ySeries: ChartSeries[] = [\n { key: value, label: valueLabel },\n { key: \"__percentage__\", label: \"Udział (%)\" },\n ];\n\n const a11yData = data.map((row) => {\n const cat = String(row[category] ?? \"\");\n const seg = segments.find((s) => s.label === cat);\n return {\n ...row,\n __percentage__: seg ? `${seg.percentage}%` : \"0%\",\n };\n });\n\n const sizeClass =\n typeof size === \"number\"\n ? undefined\n : size === \"sm\"\n ? \"max-w-[160px] max-h-[160px]\"\n : size === \"lg\"\n ? \"max-w-[280px] max-h-[280px]\"\n : \"max-w-[220px] max-h-[220px]\";\n\n return (\n <ChartContainer\n ref={combinedRef}\n width={dimension}\n height={dimension}\n viewBox={`0 0 ${dimension} ${dimension}`}\n aria-label={computedAriaLabel}\n className={cn(\n \"chart-donut-root relative flex flex-col items-center justify-start mx-auto w-full\",\n className\n )}\n svgClassName={cn(\"chart-donut-svg mx-auto shrink-0\", sizeClass)}\n style={\n {\n \"--donut-dim\": `${dimension}px`,\n ...style,\n } as React.CSSProperties\n }\n {...props}\n >\n {/* Slices group */}\n <g className=\"chart-donut-slices\">\n {segments.map((segment, idx) => {\n const isHovered = activeIdx === idx;\n const isDimmed = activeIdx !== null && !isHovered;\n const origVal = (segment.originalValue as number) ?? segment.value;\n const displayVal = valueFormatter ? valueFormatter(origVal) : String(origVal);\n const hasPath = Boolean(segment.path);\n\n return (\n <path\n key={`slice-${idx}-${segment.label}`}\n className={cn(\n \"chart-donut-slice transition-all duration-150 cursor-pointer outline-none\",\n sliceClassName\n )}\n d={segment.path || \"\"}\n fill={segment.color}\n opacity={!hasPath ? 0 : isDimmed ? 0.4 : 1}\n style={{\n transformOrigin: `${cx}px ${cy}px`,\n transform: isHovered && hasPath ? \"scale(1.03)\" : \"scale(1)\",\n filter: isHovered && hasPath ? \"brightness(1.1)\" : undefined,\n pointerEvents: hasPath ? undefined : \"none\",\n }}\n tabIndex={hasPath ? 0 : -1}\n role=\"graphics-symbol\"\n aria-label={`${segment.label}: ${displayVal} (${segment.percentage}%)`}\n onMouseEnter={hasPath ? (e) => handleSliceMouseEnter(idx, segment, e) : undefined}\n onMouseMove={hasPath ? (e) => handleSliceMouseMove(idx, segment, e) : undefined}\n onMouseLeave={hasPath ? handleSliceMouseLeave : undefined}\n onTouchStart={hasPath ? (e) => handleSliceTouchStart(idx, segment, e) : undefined}\n onTouchEnd={hasPath ? handleSliceTouchEnd : undefined}\n onFocus={\n hasPath\n ? (e) =>\n handleSliceMouseEnter(\n idx,\n segment,\n e as unknown as React.MouseEvent<SVGPathElement>\n )\n : undefined\n }\n onBlur={hasPath ? handleSliceMouseLeave : undefined}\n />\n );\n })}\n </g>\n\n {/* Center label slot */}\n {centerLabel && (\n <div\n className=\"chart-donut-center pointer-events-none absolute flex flex-col items-center justify-center text-center select-none\"\n style={{\n width: `${Math.max(20, Math.floor(computedInnerRadius * 1.8))}px`,\n height: `${Math.max(20, Math.floor(computedInnerRadius * 1.8))}px`,\n left: \"50%\",\n top: `${dimension / 2}px`,\n transform: \"translate(-50%, -50%)\",\n }}\n >\n {centerLabel}\n </div>\n )}\n\n {/* Interactive Tooltip */}\n {showTooltip && activeSegment && tooltipPos && activeSegment.path && (\n <ChartTooltip\n open={Boolean(activeSegment)}\n x={tooltipPos.x}\n y={tooltipPos.y}\n items={[\n {\n key: activeSegment.label,\n label: activeSegment.label,\n value: (activeSegment.originalValue as number) ?? activeSegment.value,\n formattedValue: `${\n valueFormatter\n ? valueFormatter((activeSegment.originalValue as number) ?? activeSegment.value)\n : ((activeSegment.originalValue as number) ?? activeSegment.value)\n } (${activeSegment.percentage}%)`,\n color: activeSegment.color,\n },\n ]}\n />\n )}\n\n {/* Interactive Legend */}\n {showLegend && (\n <ChartLegend\n series={legendSeries}\n disabledSeries={disabledCategories}\n onToggle={handleLegendToggle}\n />\n )}\n\n {/* Semantic Accessible Table for Screen Readers */}\n {shouldShowA11yTable && (\n <ChartA11yTable\n caption={caption ?? computedAriaLabel}\n series={a11ySeries}\n data={a11yData}\n indexKey={category}\n valueFormatter={(v) =>\n typeof v === \"number\" && valueFormatter ? valueFormatter(v) : String(v)\n }\n />\n )}\n </ChartContainer>\n );\n }\n);\n\nDonutChart.displayName = \"DonutChart\";\n"]}
|