@kjaniec-dev/ui 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +14 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -373,13 +373,14 @@ function Segmented({
|
|
|
373
373
|
);
|
|
374
374
|
}
|
|
375
375
|
var Card = React16__namespace.forwardRef(
|
|
376
|
-
({ as: Tag = "div", className, elevated, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
376
|
+
({ as: Tag = "div", className, elevated, interactive, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
377
377
|
Tag,
|
|
378
378
|
{
|
|
379
379
|
ref,
|
|
380
380
|
className: cn(
|
|
381
381
|
"bg-card text-card-foreground rounded-kj-xl overflow-hidden border",
|
|
382
382
|
elevated ? "border-transparent shadow-kj-lg" : "border-border shadow-kj-sm",
|
|
383
|
+
interactive && "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",
|
|
383
384
|
className
|
|
384
385
|
),
|
|
385
386
|
...props
|
|
@@ -912,6 +913,17 @@ function ToastProvider({ children }) {
|
|
|
912
913
|
)) })
|
|
913
914
|
] });
|
|
914
915
|
}
|
|
916
|
+
var PageHeader = React16__namespace.forwardRef(
|
|
917
|
+
({ eyebrow, title, description, actions }, ref) => /* @__PURE__ */ jsxRuntime.jsx("header", { ref, className: "py-12 md:py-16", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 md:flex-row md:items-end md:justify-between", children: [
|
|
918
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 max-w-2xl", children: [
|
|
919
|
+
eyebrow && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary", children: eyebrow }),
|
|
920
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-sans text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl", children: title }),
|
|
921
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base leading-relaxed text-muted-foreground sm:text-lg", children: description })
|
|
922
|
+
] }),
|
|
923
|
+
actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3", children: actions })
|
|
924
|
+
] }) })
|
|
925
|
+
);
|
|
926
|
+
PageHeader.displayName = "PageHeader";
|
|
915
927
|
|
|
916
928
|
exports.Accordion = Accordion;
|
|
917
929
|
exports.AccordionContent = AccordionContent;
|
|
@@ -945,6 +957,7 @@ exports.Modal = Modal;
|
|
|
945
957
|
exports.ModalActions = ModalActions;
|
|
946
958
|
exports.ModalDescription = ModalDescription;
|
|
947
959
|
exports.ModalTitle = ModalTitle;
|
|
960
|
+
exports.PageHeader = PageHeader;
|
|
948
961
|
exports.Pagination = Pagination;
|
|
949
962
|
exports.Progress = Progress;
|
|
950
963
|
exports.Radio = Radio;
|
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/input.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.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/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx","React2","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21"],"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: \"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 ({ className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props }, ref) => {\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 && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>}\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(\n \"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\",\n {\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);\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 className={cn(\"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\", iconColor[variant ?? \"info\"])}>\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-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 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 \"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, style, ...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\n ? \"border-danger focus:border-danger focus:ring-danger/25\"\n : \"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\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","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 ref={ref} className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)} {...props}>\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","\"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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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 viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\">\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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\n <input ref={ref} id={inputId} type=\"checkbox\" role=\"switch\" className=\"peer sr-only\" {...props} />\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, ...props }, ref) => (\n <input\n ref={ref}\n type=\"range\"\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full bg-input appearance-none cursor-pointer\",\n className\n )}\n {...props}\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","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}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(\n ({ as: Tag = \"div\", className, elevated, ...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 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<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props} />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n )\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(\"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\", className)}\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 ref={ref} className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)} {...props}>\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}\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({ value, defaultValue, onValueChange, className, children, ...props }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\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 }}>\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, ...props }, ref) => (\n <div ref={ref} role=\"tablist\" className={cn(\"flex gap-1 border-b border-border\", className)} {...props} />\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 } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\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\",\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 } = useTabs();\n if (current !== value) return null;\n return (\n <div ref={ref} role=\"tabpanel\" className={cn(\"pt-5 text-[0.9rem] text-muted-foreground\", className)} {...props} />\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({ type = \"single\", defaultValue = [], className, children, ...props }: 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 className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props}>\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 ref={ref} className={cn(\"border-t border-border first:border-t-0\", className)} {...props} />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, 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(\"shrink-0 text-muted-foreground transition-transform duration-200\", isOpen && \"rotate-180\")}\n width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n }\n);\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, 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(\"grid transition-[grid-template-rows] duration-200 ease-out\", isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\")}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(\"px-[1.2rem] pb-[1.1rem] text-[0.85rem] text-muted-foreground\", className)}>{children}</div>\n </div>\n </div>\n );\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({ children, className }: { children: React.ReactNode; className?: string }) {\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, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\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({ className, align = \"start\", children, ...props }: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n if (!ctx.open) return null;\n return (\n <div\n role=\"menu\"\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\",\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 ref={ref} aria-label=\"Breadcrumb\" className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)} {...props}>\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 ref={ref} className={cn(\"text-inherit no-underline hover:text-foreground transition-colors\", className)} {...props}>\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return <span aria-hidden className=\"text-muted-foreground/70\">/</span>;\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 width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Previous\" disabled={page <= 1} onClick={() => onPageChange(page - 1)}>\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\">…</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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Next\" disabled={page >= pageCount} onClick={() => onPageChange(page + 1)}>\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\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 ref={ref} className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props} />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n )\n);\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />\n);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n )\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 <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}\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. */\nexport function Modal({ open, onClose, children, width = 440, className }: ModalProps) {\n React.useEffect(() => {\n if (!open) return;\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && onClose();\n document.addEventListener(\"keydown\", onEsc);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onEsc);\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 <div\n role=\"dialog\"\n aria-modal=\"true\"\n style={{ maxWidth: width }}\n className={cn(\n \"w-full p-7 rounded-kj-2xl bg-surface border border-border shadow-kj-lg transition-transform duration-200\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function ModalTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn(\"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em]\", className)} {...props} />;\n}\n\nexport function ModalDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)} {...props} />;\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 width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-primary\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4M12 8h.01\" /></svg>\n ),\n success: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-success\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n ),\n danger: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-danger\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6M9 9l6 6\" /></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 ? \"animate-[kjtoastout_.25s_ease_forwards]\" : \"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"]}
|
|
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/input.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.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/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx","../src/components/page-header.tsx"],"names":["twMerge","clsx","cva","React","jsxs","jsx","React2","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21","React22"],"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: \"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 ({ className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props }, ref) => {\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 && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>}\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(\n \"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\",\n {\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);\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 className={cn(\"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\", iconColor[variant ?? \"info\"])}>\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-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 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 \"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, style, ...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\n ? \"border-danger focus:border-danger focus:ring-danger/25\"\n : \"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\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","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 ref={ref} className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)} {...props}>\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","\"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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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 viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\">\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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\n <input ref={ref} id={inputId} type=\"checkbox\" role=\"switch\" className=\"peer sr-only\" {...props} />\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, ...props }, ref) => (\n <input\n ref={ref}\n type=\"range\"\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full bg-input appearance-none cursor-pointer\",\n className\n )}\n {...props}\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","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 && \"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<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props} />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n )\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(\"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\", className)}\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 ref={ref} className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)} {...props}>\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}\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({ value, defaultValue, onValueChange, className, children, ...props }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\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 }}>\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, ...props }, ref) => (\n <div ref={ref} role=\"tablist\" className={cn(\"flex gap-1 border-b border-border\", className)} {...props} />\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 } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\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\",\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 } = useTabs();\n if (current !== value) return null;\n return (\n <div ref={ref} role=\"tabpanel\" className={cn(\"pt-5 text-[0.9rem] text-muted-foreground\", className)} {...props} />\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({ type = \"single\", defaultValue = [], className, children, ...props }: 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 className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props}>\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 ref={ref} className={cn(\"border-t border-border first:border-t-0\", className)} {...props} />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, 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(\"shrink-0 text-muted-foreground transition-transform duration-200\", isOpen && \"rotate-180\")}\n width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n }\n);\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, 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(\"grid transition-[grid-template-rows] duration-200 ease-out\", isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\")}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(\"px-[1.2rem] pb-[1.1rem] text-[0.85rem] text-muted-foreground\", className)}>{children}</div>\n </div>\n </div>\n );\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({ children, className }: { children: React.ReactNode; className?: string }) {\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, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\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({ className, align = \"start\", children, ...props }: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n if (!ctx.open) return null;\n return (\n <div\n role=\"menu\"\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\",\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 ref={ref} aria-label=\"Breadcrumb\" className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)} {...props}>\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 ref={ref} className={cn(\"text-inherit no-underline hover:text-foreground transition-colors\", className)} {...props}>\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return <span aria-hidden className=\"text-muted-foreground/70\">/</span>;\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 width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Previous\" disabled={page <= 1} onClick={() => onPageChange(page - 1)}>\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\">…</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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Next\" disabled={page >= pageCount} onClick={() => onPageChange(page + 1)}>\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\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 ref={ref} className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props} />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n )\n);\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />\n);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n )\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 <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}\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. */\nexport function Modal({ open, onClose, children, width = 440, className }: ModalProps) {\n React.useEffect(() => {\n if (!open) return;\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && onClose();\n document.addEventListener(\"keydown\", onEsc);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onEsc);\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 <div\n role=\"dialog\"\n aria-modal=\"true\"\n style={{ maxWidth: width }}\n className={cn(\n \"w-full p-7 rounded-kj-2xl bg-surface border border-border shadow-kj-lg transition-transform duration-200\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function ModalTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn(\"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em]\", className)} {...props} />;\n}\n\nexport function ModalDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)} {...props} />;\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 width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-primary\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4M12 8h.01\" /></svg>\n ),\n success: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-success\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n ),\n danger: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-danger\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6M9 9l6 6\" /></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 ? \"animate-[kjtoastout_.25s_ease_forwards]\" : \"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"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -129,6 +129,8 @@ interface CardProps extends Omit<React.AllHTMLAttributes<HTMLElement>, "as"> {
|
|
|
129
129
|
as?: React.ElementType;
|
|
130
130
|
/** Drop the border + heavier shadow for a floating look. */
|
|
131
131
|
elevated?: boolean;
|
|
132
|
+
/** Adds hover lift effect — translate-y + shadow. For keyboard accessibility pair with `as="a"` or `as="button"`. */
|
|
133
|
+
interactive?: boolean;
|
|
132
134
|
}
|
|
133
135
|
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLElement>>;
|
|
134
136
|
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -281,4 +283,12 @@ declare function ToastProvider({ children }: {
|
|
|
281
283
|
children: React.ReactNode;
|
|
282
284
|
}): react_jsx_runtime.JSX.Element;
|
|
283
285
|
|
|
284
|
-
|
|
286
|
+
interface PageHeaderProps {
|
|
287
|
+
eyebrow?: string;
|
|
288
|
+
title: string;
|
|
289
|
+
description?: string;
|
|
290
|
+
actions?: React.ReactNode;
|
|
291
|
+
}
|
|
292
|
+
declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLElement>>;
|
|
293
|
+
|
|
294
|
+
export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, Alert, type AlertProps, Avatar, AvatarGroup, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbSeparator, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuSeparator, DropdownMenuTrigger, Field, Hint, type HintProps, Input, type InputProps, Label, type LabelProps, Modal, ModalActions, ModalDescription, type ModalProps, ModalTitle, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, Segmented, type SegmentedOption, type SegmentedProps, Select, type SelectProps, Slider, type SliderProps, Spinner, type SpinnerProps, Stat, type StatProps, Switch, type SwitchProps, Table, TableBody, TableCell, type TableCellProps, TableHead, TableHeader, TableRow, TableWrap, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Textarea, type TextareaProps, type ToastOptions, ToastProvider, type ToastTone, Tooltip, type TooltipProps, badgeVariants, buttonVariants, cn, sliderThumbCSS, useToast };
|
package/dist/index.d.ts
CHANGED
|
@@ -129,6 +129,8 @@ interface CardProps extends Omit<React.AllHTMLAttributes<HTMLElement>, "as"> {
|
|
|
129
129
|
as?: React.ElementType;
|
|
130
130
|
/** Drop the border + heavier shadow for a floating look. */
|
|
131
131
|
elevated?: boolean;
|
|
132
|
+
/** Adds hover lift effect — translate-y + shadow. For keyboard accessibility pair with `as="a"` or `as="button"`. */
|
|
133
|
+
interactive?: boolean;
|
|
132
134
|
}
|
|
133
135
|
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLElement>>;
|
|
134
136
|
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -281,4 +283,12 @@ declare function ToastProvider({ children }: {
|
|
|
281
283
|
children: React.ReactNode;
|
|
282
284
|
}): react_jsx_runtime.JSX.Element;
|
|
283
285
|
|
|
284
|
-
|
|
286
|
+
interface PageHeaderProps {
|
|
287
|
+
eyebrow?: string;
|
|
288
|
+
title: string;
|
|
289
|
+
description?: string;
|
|
290
|
+
actions?: React.ReactNode;
|
|
291
|
+
}
|
|
292
|
+
declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLElement>>;
|
|
293
|
+
|
|
294
|
+
export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, Alert, type AlertProps, Avatar, AvatarGroup, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbSeparator, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuSeparator, DropdownMenuTrigger, Field, Hint, type HintProps, Input, type InputProps, Label, type LabelProps, Modal, ModalActions, ModalDescription, type ModalProps, ModalTitle, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, Segmented, type SegmentedOption, type SegmentedProps, Select, type SelectProps, Slider, type SliderProps, Spinner, type SpinnerProps, Stat, type StatProps, Switch, type SwitchProps, Table, TableBody, TableCell, type TableCellProps, TableHead, TableHeader, TableRow, TableWrap, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Textarea, type TextareaProps, type ToastOptions, ToastProvider, type ToastTone, Tooltip, type TooltipProps, badgeVariants, buttonVariants, cn, sliderThumbCSS, useToast };
|
package/dist/index.js
CHANGED
|
@@ -351,13 +351,14 @@ function Segmented({
|
|
|
351
351
|
);
|
|
352
352
|
}
|
|
353
353
|
var Card = React16.forwardRef(
|
|
354
|
-
({ as: Tag = "div", className, elevated, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
354
|
+
({ as: Tag = "div", className, elevated, interactive, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
355
355
|
Tag,
|
|
356
356
|
{
|
|
357
357
|
ref,
|
|
358
358
|
className: cn(
|
|
359
359
|
"bg-card text-card-foreground rounded-kj-xl overflow-hidden border",
|
|
360
360
|
elevated ? "border-transparent shadow-kj-lg" : "border-border shadow-kj-sm",
|
|
361
|
+
interactive && "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",
|
|
361
362
|
className
|
|
362
363
|
),
|
|
363
364
|
...props
|
|
@@ -890,7 +891,18 @@ function ToastProvider({ children }) {
|
|
|
890
891
|
)) })
|
|
891
892
|
] });
|
|
892
893
|
}
|
|
894
|
+
var PageHeader = React16.forwardRef(
|
|
895
|
+
({ eyebrow, title, description, actions }, ref) => /* @__PURE__ */ jsx("header", { ref, className: "py-12 md:py-16", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 md:flex-row md:items-end md:justify-between", children: [
|
|
896
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3 max-w-2xl", children: [
|
|
897
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "font-mono text-xs font-bold uppercase tracking-[0.2em] text-primary", children: eyebrow }),
|
|
898
|
+
/* @__PURE__ */ jsx("h1", { className: "font-sans text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl", children: title }),
|
|
899
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-base leading-relaxed text-muted-foreground sm:text-lg", children: description })
|
|
900
|
+
] }),
|
|
901
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-3", children: actions })
|
|
902
|
+
] }) })
|
|
903
|
+
);
|
|
904
|
+
PageHeader.displayName = "PageHeader";
|
|
893
905
|
|
|
894
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, Avatar, AvatarGroup, Badge, Breadcrumb, BreadcrumbItem, BreadcrumbSeparator, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Field, Hint, Input, Label, Modal, ModalActions, ModalDescription, ModalTitle, Pagination, Progress, Radio, Segmented, Select, Slider, Spinner, Stat, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, TableWrap, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ToastProvider, Tooltip, badgeVariants, buttonVariants, cn, sliderThumbCSS, useToast };
|
|
906
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, Avatar, AvatarGroup, Badge, Breadcrumb, BreadcrumbItem, BreadcrumbSeparator, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Field, Hint, Input, Label, Modal, ModalActions, ModalDescription, ModalTitle, PageHeader, Pagination, Progress, Radio, Segmented, Select, Slider, Spinner, Stat, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, TableWrap, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ToastProvider, Tooltip, badgeVariants, buttonVariants, cn, sliderThumbCSS, useToast };
|
|
895
907
|
//# sourceMappingURL=index.js.map
|
|
896
908
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.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/input.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.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/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx"],"names":["React","cva","React2","jsxs","jsx","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","React15","React17","React18","React19","React20","React21"],"mappings":"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","file":"index.js","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: \"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 ({ className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props }, ref) => {\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 && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>}\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(\n \"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\",\n {\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);\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 className={cn(\"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\", iconColor[variant ?? \"info\"])}>\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-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 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 \"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, style, ...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\n ? \"border-danger focus:border-danger focus:ring-danger/25\"\n : \"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\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","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 ref={ref} className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)} {...props}>\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","\"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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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 viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\">\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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\n <input ref={ref} id={inputId} type=\"checkbox\" role=\"switch\" className=\"peer sr-only\" {...props} />\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, ...props }, ref) => (\n <input\n ref={ref}\n type=\"range\"\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full bg-input appearance-none cursor-pointer\",\n className\n )}\n {...props}\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","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}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(\n ({ as: Tag = \"div\", className, elevated, ...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 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<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props} />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n )\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(\"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\", className)}\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 ref={ref} className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)} {...props}>\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}\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({ value, defaultValue, onValueChange, className, children, ...props }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\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 }}>\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, ...props }, ref) => (\n <div ref={ref} role=\"tablist\" className={cn(\"flex gap-1 border-b border-border\", className)} {...props} />\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 } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\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\",\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 } = useTabs();\n if (current !== value) return null;\n return (\n <div ref={ref} role=\"tabpanel\" className={cn(\"pt-5 text-[0.9rem] text-muted-foreground\", className)} {...props} />\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({ type = \"single\", defaultValue = [], className, children, ...props }: 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 className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props}>\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 ref={ref} className={cn(\"border-t border-border first:border-t-0\", className)} {...props} />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, 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(\"shrink-0 text-muted-foreground transition-transform duration-200\", isOpen && \"rotate-180\")}\n width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n }\n);\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, 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(\"grid transition-[grid-template-rows] duration-200 ease-out\", isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\")}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(\"px-[1.2rem] pb-[1.1rem] text-[0.85rem] text-muted-foreground\", className)}>{children}</div>\n </div>\n </div>\n );\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({ children, className }: { children: React.ReactNode; className?: string }) {\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, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\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({ className, align = \"start\", children, ...props }: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n if (!ctx.open) return null;\n return (\n <div\n role=\"menu\"\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\",\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 ref={ref} aria-label=\"Breadcrumb\" className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)} {...props}>\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 ref={ref} className={cn(\"text-inherit no-underline hover:text-foreground transition-colors\", className)} {...props}>\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return <span aria-hidden className=\"text-muted-foreground/70\">/</span>;\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 width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Previous\" disabled={page <= 1} onClick={() => onPageChange(page - 1)}>\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\">…</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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Next\" disabled={page >= pageCount} onClick={() => onPageChange(page + 1)}>\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\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 ref={ref} className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props} />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n )\n);\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />\n);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n )\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 <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}\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. */\nexport function Modal({ open, onClose, children, width = 440, className }: ModalProps) {\n React.useEffect(() => {\n if (!open) return;\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && onClose();\n document.addEventListener(\"keydown\", onEsc);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onEsc);\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 <div\n role=\"dialog\"\n aria-modal=\"true\"\n style={{ maxWidth: width }}\n className={cn(\n \"w-full p-7 rounded-kj-2xl bg-surface border border-border shadow-kj-lg transition-transform duration-200\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function ModalTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn(\"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em]\", className)} {...props} />;\n}\n\nexport function ModalDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)} {...props} />;\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 width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-primary\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4M12 8h.01\" /></svg>\n ),\n success: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-success\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n ),\n danger: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-danger\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6M9 9l6 6\" /></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 ? \"animate-[kjtoastout_.25s_ease_forwards]\" : \"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"]}
|
|
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/input.tsx","../src/components/field.tsx","../src/components/select.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/segmented.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/table.tsx","../src/components/tooltip.tsx","../src/components/modal.tsx","../src/components/toast.tsx","../src/components/page-header.tsx"],"names":["React","cva","React2","jsxs","jsx","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","React15","React17","React18","React19","React20","React21","React22"],"mappings":"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","file":"index.js","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: \"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 ({ className, variant, size, loading, leadingIcon, trailingIcon, children, disabled, ...props }, ref) => {\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 && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"[&_svg]:h-[1.05em] [&_svg]:w-[1.05em]\">{trailingIcon}</span>}\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(\n \"flex gap-3 items-start p-[0.9rem_1.1rem] rounded-kj-md border text-sm\",\n {\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);\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 className={cn(\"shrink-0 mt-0.5 [&_svg]:h-[1.15rem] [&_svg]:w-[1.15rem]\", iconColor[variant ?? \"info\"])}>\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-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 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 \"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, style, ...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\n ? \"border-danger focus:border-danger focus:ring-danger/25\"\n : \"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\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","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 ref={ref} className={cn(\"text-[0.8rem] font-semibold text-foreground\", className)} {...props}>\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","\"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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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 viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-3 w-3 text-primary-foreground opacity-0 scale-50 transition-all duration-150\">\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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\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","\"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 htmlFor={inputId} className={cn(\"inline-flex items-center gap-2.5 cursor-pointer text-sm select-none\", className)}>\n <input ref={ref} id={inputId} type=\"checkbox\" role=\"switch\" className=\"peer sr-only\" {...props} />\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, ...props }, ref) => (\n <input\n ref={ref}\n type=\"range\"\n className={cn(\n \"kj-slider w-full h-1.5 rounded-full bg-input appearance-none cursor-pointer\",\n className\n )}\n {...props}\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","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 && \"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<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"m-0 text-base font-bold tracking-[-0.01em]\", className)} {...props} />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"m-0 text-[0.85rem] text-muted-foreground\", className)} {...props} />\n )\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(\"flex gap-2.5 px-[1.35rem] py-[1.1rem] border-t border-border bg-muted/40\", className)}\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 ref={ref} className={cn(avatarVariants({ size, tone }), \"overflow-hidden\", className)} {...props}>\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}\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({ value, defaultValue, onValueChange, className, children, ...props }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? \"\");\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 }}>\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, ...props }, ref) => (\n <div ref={ref} role=\"tablist\" className={cn(\"flex gap-1 border-b border-border\", className)} {...props} />\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 } = useTabs();\n const active = current === value;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\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\",\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 } = useTabs();\n if (current !== value) return null;\n return (\n <div ref={ref} role=\"tabpanel\" className={cn(\"pt-5 text-[0.9rem] text-muted-foreground\", className)} {...props} />\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({ type = \"single\", defaultValue = [], className, children, ...props }: 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 className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props}>\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 ref={ref} className={cn(\"border-t border-border first:border-t-0\", className)} {...props} />\n </ItemContext.Provider>\n )\n);\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, 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(\"shrink-0 text-muted-foreground transition-transform duration-200\", isOpen && \"rotate-180\")}\n width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n );\n }\n);\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, 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(\"grid transition-[grid-template-rows] duration-200 ease-out\", isOpen ? \"[grid-template-rows:1fr]\" : \"[grid-template-rows:0fr]\")}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(\"px-[1.2rem] pb-[1.1rem] text-[0.85rem] text-muted-foreground\", className)}>{children}</div>\n </div>\n </div>\n );\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({ children, className }: { children: React.ReactNode; className?: string }) {\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, ...props }, ref) => {\n const ctx = React.useContext(MenuContext)!;\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({ className, align = \"start\", children, ...props }: DropdownMenuContentProps) {\n const ctx = React.useContext(MenuContext)!;\n if (!ctx.open) return null;\n return (\n <div\n role=\"menu\"\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\",\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 ref={ref} aria-label=\"Breadcrumb\" className={cn(\"flex items-center gap-1.5 text-[0.85rem] text-muted-foreground\", className)} {...props}>\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 ref={ref} className={cn(\"text-inherit no-underline hover:text-foreground transition-colors\", className)} {...props}>\n {children}\n </a>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nexport function BreadcrumbSeparator() {\n return <span aria-hidden className=\"text-muted-foreground/70\">/</span>;\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 width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\">\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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Previous\" disabled={page <= 1} onClick={() => onPageChange(page - 1)}>\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\">…</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 variant=\"ghost\" size=\"icon-sm\" aria-label=\"Next\" disabled={page >= pageCount} onClick={() => onPageChange(page + 1)}>\n <Chevron dir=\"right\" />\n </Button>\n </nav>\n );\n}\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 ref={ref} className={cn(\"border border-border rounded-kj-lg overflow-hidden\", className)} {...props} />\n )\n);\nTableWrap.displayName = \"TableWrap\";\n\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn(\"w-full border-collapse text-[0.85rem]\", className)} {...props} />\n )\n);\nTable.displayName = \"Table\";\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={className} {...props} />\n);\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <tbody ref={ref} className={className} {...props} />\n);\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr ref={ref} className={cn(\"transition-colors hover:bg-muted/50\", className)} {...props} />\n )\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 <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}\n\n/** Centered overlay dialog. Closes on backdrop click and Escape. */\nexport function Modal({ open, onClose, children, width = 440, className }: ModalProps) {\n React.useEffect(() => {\n if (!open) return;\n const onEsc = (e: KeyboardEvent) => e.key === \"Escape\" && onClose();\n document.addEventListener(\"keydown\", onEsc);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onEsc);\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 <div\n role=\"dialog\"\n aria-modal=\"true\"\n style={{ maxWidth: width }}\n className={cn(\n \"w-full p-7 rounded-kj-2xl bg-surface border border-border shadow-kj-lg transition-transform duration-200\",\n open ? \"scale-100 translate-y-0\" : \"scale-95 translate-y-2\",\n className\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function ModalTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn(\"m-0 mb-2 text-[1.15rem] font-bold tracking-[-0.01em]\", className)} {...props} />;\n}\n\nexport function ModalDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"m-0 text-[0.9rem] text-muted-foreground\", className)} {...props} />;\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 width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-primary\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4M12 8h.01\" /></svg>\n ),\n success: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-success\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n ),\n danger: (\n <svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-danger\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6M9 9l6 6\" /></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 ? \"animate-[kjtoastout_.25s_ease_forwards]\" : \"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"]}
|