@hex-core/components 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_tsup-dts-rollup.d.ts +3556 -0
- package/dist/accordion.d.ts +4 -13
- package/dist/alert-dialog.d.ts +11 -34
- package/dist/alert.d.ts +4 -17
- package/dist/aspect-ratio.d.ts +1 -7
- package/dist/attachment.d.ts +4 -0
- package/dist/attachment.js +157 -0
- package/dist/attachment.js.map +1 -0
- package/dist/avatar.d.ts +3 -11
- package/dist/badge.d.ts +3 -22
- package/dist/breadcrumb.d.ts +7 -27
- package/dist/button.d.ts +3 -13
- package/dist/calendar.d.ts +1 -17
- package/dist/card.d.ts +6 -16
- package/dist/checkbox.d.ts +2 -11
- package/dist/citation.d.ts +2 -0
- package/dist/citation.js +70 -0
- package/dist/citation.js.map +1 -0
- package/dist/cluster.d.ts +3 -34
- package/dist/code-block-copy.d.ts +2 -0
- package/dist/code-block-copy.js +108 -0
- package/dist/code-block-copy.js.map +1 -0
- package/dist/code-block.d.ts +3 -0
- package/dist/code-block.js +90 -0
- package/dist/code-block.js.map +1 -0
- package/dist/collapsible.d.ts +3 -11
- package/dist/color-picker.d.ts +2 -44
- package/dist/combobox.d.ts +3 -45
- package/dist/command.d.ts +9 -111
- package/dist/composer.d.ts +2 -0
- package/dist/composer.js +75 -0
- package/dist/composer.js.map +1 -0
- package/dist/container.d.ts +3 -41
- package/dist/context-menu.d.ts +12 -37
- package/dist/data-table.d.ts +2 -33
- package/dist/date-picker.d.ts +2 -43
- package/dist/dialog.d.ts +11 -46
- package/dist/drawer.d.ts +10 -41
- package/dist/dropdown-menu.d.ts +13 -39
- package/dist/dropzone.d.ts +3 -54
- package/dist/dropzone.js +46 -44
- package/dist/dropzone.js.map +1 -1
- package/dist/empty.d.ts +3 -0
- package/dist/empty.js +94 -0
- package/dist/empty.js.map +1 -0
- package/dist/error-state.d.ts +3 -0
- package/dist/error-state.js +67 -0
- package/dist/error-state.js.map +1 -0
- package/dist/file-tree.d.ts +3 -53
- package/dist/form.d.ts +8 -45
- package/dist/grid.d.ts +3 -50
- package/dist/hover-card.d.ts +3 -11
- package/dist/index.d.ts +325 -179
- package/dist/index.js +1592 -122
- package/dist/index.js.map +1 -1
- package/dist/input-otp.d.ts +5 -19
- package/dist/input.d.ts +2 -6
- package/dist/label.d.ts +2 -11
- package/dist/loading-indicator.d.ts +3 -0
- package/dist/loading-indicator.js +64 -0
- package/dist/loading-indicator.js.map +1 -0
- package/dist/loading.d.ts +3 -0
- package/dist/loading.js +80 -0
- package/dist/loading.js.map +1 -0
- package/dist/markdown.d.ts +2 -0
- package/dist/markdown.js +28 -0
- package/dist/markdown.js.map +1 -0
- package/dist/menubar.d.ts +11 -35
- package/dist/message-actions.d.ts +2 -0
- package/dist/message-actions.js +28 -0
- package/dist/message-actions.js.map +1 -0
- package/dist/message-list.d.ts +2 -0
- package/dist/message-list.js +49 -0
- package/dist/message-list.js.map +1 -0
- package/dist/message.d.ts +3 -0
- package/dist/message.js +35 -0
- package/dist/message.js.map +1 -0
- package/dist/multi-combobox.d.ts +3 -51
- package/dist/navigation-menu.d.ts +9 -23
- package/dist/pagination.d.ts +7 -40
- package/dist/popover.d.ts +4 -13
- package/dist/progress.d.ts +1 -10
- package/dist/radio-group.d.ts +2 -9
- package/dist/reasoning.d.ts +2 -0
- package/dist/reasoning.js +90 -0
- package/dist/reasoning.js.map +1 -0
- package/dist/resizable.d.ts +3 -28
- package/dist/schemas.d.ts +79 -121
- package/dist/schemas.js +1649 -1
- package/dist/schemas.js.map +1 -1
- package/dist/scroll-area.d.ts +3 -18
- package/dist/select.d.ts +8 -21
- package/dist/separator.d.ts +2 -11
- package/dist/sheet.d.ts +10 -39
- package/dist/sidebar.d.ts +8 -75
- package/dist/skeleton.d.ts +1 -11
- package/dist/slider.d.ts +2 -20
- package/dist/sonner.d.ts +2 -14
- package/dist/spacer.d.ts +3 -38
- package/dist/stack.d.ts +3 -34
- package/dist/stepper.d.ts +4 -48
- package/dist/suggestion.d.ts +2 -0
- package/dist/suggestion.js +55 -0
- package/dist/suggestion.js.map +1 -0
- package/dist/switch.d.ts +2 -11
- package/dist/table.d.ts +8 -24
- package/dist/tabs.d.ts +4 -13
- package/dist/tag.d.ts +3 -0
- package/dist/tag.js +107 -0
- package/dist/tag.js.map +1 -0
- package/dist/textarea.d.ts +2 -10
- package/dist/time-picker.d.ts +2 -34
- package/dist/timeline.d.ts +4 -42
- package/dist/toggle-group.d.ts +2 -17
- package/dist/toggle.d.ts +2 -19
- package/dist/tool-call.d.ts +2 -0
- package/dist/tool-call.js +133 -0
- package/dist/tool-call.js.map +1 -0
- package/dist/toolbar.d.ts +8 -0
- package/dist/toolbar.js +120 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +4 -13
- package/dist/tree.d.ts +3 -0
- package/dist/tree.js +275 -0
- package/dist/tree.js.map +1 -0
- package/package.json +5 -1
- package/dist/button-variants-Bx6gCUFp.d.ts +0 -19
package/dist/accordion.d.ts
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
-
/** A single collapsible item within an Accordion. */
|
|
7
|
-
declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
-
/** The clickable header that toggles an AccordionItem open/closed. */
|
|
9
|
-
declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
-
/** The collapsible content panel of an AccordionItem. */
|
|
11
|
-
declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
-
|
|
13
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
1
|
+
export { Accordion_alias_1 as Accordion } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { AccordionItem_alias_1 as AccordionItem } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { AccordionTrigger_alias_1 as AccordionTrigger } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { AccordionContent_alias_1 as AccordionContent } from './_tsup-dts-rollup.js';
|
package/dist/alert-dialog.d.ts
CHANGED
|
@@ -1,34 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
declare const AlertDialogOverlay: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
-
/** Content panel for the alert dialog. No close button — user must choose action or cancel. */
|
|
14
|
-
declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
-
/**
|
|
16
|
-
* Header container for title + description.
|
|
17
|
-
* @returns A div wrapping title/description with vertical rhythm
|
|
18
|
-
*/
|
|
19
|
-
declare function AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
20
|
-
/**
|
|
21
|
-
* Footer container for Cancel/Action buttons.
|
|
22
|
-
* @returns A div stacking buttons on mobile and right-aligning on desktop
|
|
23
|
-
*/
|
|
24
|
-
declare function AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
25
|
-
/** Accessible title for the alert dialog. */
|
|
26
|
-
declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
27
|
-
/** Accessible description for the alert dialog. */
|
|
28
|
-
declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
29
|
-
/** The destructive action button (e.g. Delete). Receives focus by default. */
|
|
30
|
-
declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
31
|
-
/** The cancel button. Closes the dialog. */
|
|
32
|
-
declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
33
|
-
|
|
34
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
1
|
+
export { AlertDialog_alias_1 as AlertDialog } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { AlertDialogPortal_alias_1 as AlertDialogPortal } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { AlertDialogOverlay_alias_1 as AlertDialogOverlay } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { AlertDialogTrigger_alias_1 as AlertDialogTrigger } from './_tsup-dts-rollup.js';
|
|
5
|
+
export { AlertDialogContent_alias_1 as AlertDialogContent } from './_tsup-dts-rollup.js';
|
|
6
|
+
export { AlertDialogHeader_alias_1 as AlertDialogHeader } from './_tsup-dts-rollup.js';
|
|
7
|
+
export { AlertDialogFooter_alias_1 as AlertDialogFooter } from './_tsup-dts-rollup.js';
|
|
8
|
+
export { AlertDialogTitle_alias_1 as AlertDialogTitle } from './_tsup-dts-rollup.js';
|
|
9
|
+
export { AlertDialogDescription_alias_1 as AlertDialogDescription } from './_tsup-dts-rollup.js';
|
|
10
|
+
export { AlertDialogAction_alias_1 as AlertDialogAction } from './_tsup-dts-rollup.js';
|
|
11
|
+
export { AlertDialogCancel_alias_1 as AlertDialogCancel } from './_tsup-dts-rollup.js';
|
package/dist/alert.d.ts
CHANGED
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare const alertVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "destructive" | null | undefined;
|
|
7
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
-
/** An inline notification banner for important messages. */
|
|
9
|
-
declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
10
|
-
variant?: "default" | "destructive" | null | undefined;
|
|
11
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
-
/** The alert title heading. */
|
|
13
|
-
declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
|
|
14
|
-
/** The alert description. Renders a div so paragraph children can be styled via [&_p]. */
|
|
15
|
-
declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
-
|
|
17
|
-
export { Alert, AlertDescription, AlertTitle, alertVariants };
|
|
1
|
+
export { Alert_alias_1 as Alert } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { AlertTitle_alias_1 as AlertTitle } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { AlertDescription_alias_1 as AlertDescription } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { alertVariants_alias_1 as alertVariants } from './_tsup-dts-rollup.js';
|
package/dist/aspect-ratio.d.ts
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
3
|
-
|
|
4
|
-
/** A container that maintains a specified width-to-height ratio for its children. */
|
|
5
|
-
declare const AspectRatio: React.ForwardRefExoticComponent<AspectRatioPrimitive.AspectRatioProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
-
|
|
7
|
-
export { AspectRatio };
|
|
1
|
+
export { AspectRatio_alias_1 as AspectRatio } from './_tsup-dts-rollup.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AttachmentFile_alias_1 as AttachmentFile } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { AttachmentProps_alias_1 as AttachmentProps } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { Attachment_alias_1 as Attachment } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { attachmentVariants_alias_1 as attachmentVariants } from './_tsup-dts-rollup.js';
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
var attachmentVariants = cva(
|
|
11
|
+
[
|
|
12
|
+
"group/attachment relative inline-flex items-center gap-[var(--gap-sm,0.5rem)] rounded-md border border-border bg-card",
|
|
13
|
+
"transition-all duration-[var(--duration-normal,200ms)] ease-out"
|
|
14
|
+
].join(" "),
|
|
15
|
+
{
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
file: "px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] max-w-xs",
|
|
19
|
+
image: "p-0 overflow-hidden"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
defaultVariants: { variant: "file" }
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
function formatSize(bytes) {
|
|
26
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
27
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
28
|
+
if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
29
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
|
|
30
|
+
}
|
|
31
|
+
function detectVariant(file) {
|
|
32
|
+
const preview = "preview" in file ? file.preview : void 0;
|
|
33
|
+
const isImage = file.type.startsWith("image/");
|
|
34
|
+
return isImage && preview ? "image" : "file";
|
|
35
|
+
}
|
|
36
|
+
function resolvePreview(file) {
|
|
37
|
+
return "preview" in file ? file.preview : void 0;
|
|
38
|
+
}
|
|
39
|
+
function Attachment({
|
|
40
|
+
className,
|
|
41
|
+
variant,
|
|
42
|
+
file,
|
|
43
|
+
onRemove,
|
|
44
|
+
progress,
|
|
45
|
+
ref,
|
|
46
|
+
...props
|
|
47
|
+
}) {
|
|
48
|
+
const preview = resolvePreview(file);
|
|
49
|
+
const detected = detectVariant(file);
|
|
50
|
+
const resolvedVariant = variant === "image" && !preview ? "file" : variant ?? detected;
|
|
51
|
+
const showProgress = typeof progress === "number" && progress >= 0 && progress < 1;
|
|
52
|
+
const progressPercent = showProgress ? Math.round(progress * 100) : 0;
|
|
53
|
+
return /* @__PURE__ */ jsxs(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
className: cn(attachmentVariants({ variant: resolvedVariant }), className),
|
|
58
|
+
...props,
|
|
59
|
+
children: [
|
|
60
|
+
resolvedVariant === "image" && preview ? (
|
|
61
|
+
// Intentional plain <img> (not next/image) — Attachment is
|
|
62
|
+
// framework-agnostic. Consumers can swap in next/image at the
|
|
63
|
+
// callsite when they want optimization.
|
|
64
|
+
/* @__PURE__ */ jsx(
|
|
65
|
+
"img",
|
|
66
|
+
{
|
|
67
|
+
src: preview,
|
|
68
|
+
alt: file.name,
|
|
69
|
+
className: "block h-20 w-20 object-cover"
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
73
|
+
/* @__PURE__ */ jsx(FileIcon, { className: "h-5 w-5 shrink-0 text-muted-foreground" }),
|
|
74
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
|
|
75
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-foreground", children: file.name }),
|
|
76
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: formatSize(file.size) })
|
|
77
|
+
] })
|
|
78
|
+
] }),
|
|
79
|
+
showProgress ? /* @__PURE__ */ jsx(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
role: "progressbar",
|
|
83
|
+
"aria-valuemin": 0,
|
|
84
|
+
"aria-valuemax": 100,
|
|
85
|
+
"aria-valuenow": progressPercent,
|
|
86
|
+
"aria-label": `Uploading ${file.name}`,
|
|
87
|
+
className: "absolute inset-x-0 bottom-0 h-1 overflow-hidden rounded-b-md bg-muted",
|
|
88
|
+
children: /* @__PURE__ */ jsx(
|
|
89
|
+
"div",
|
|
90
|
+
{
|
|
91
|
+
className: "h-full bg-primary transition-[width] duration-[var(--duration-normal,200ms)] ease-out",
|
|
92
|
+
style: { width: `${progressPercent}%` }
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
) : null,
|
|
97
|
+
onRemove ? /* @__PURE__ */ jsx(
|
|
98
|
+
"button",
|
|
99
|
+
{
|
|
100
|
+
type: "button",
|
|
101
|
+
onClick: onRemove,
|
|
102
|
+
"aria-label": `Remove ${file.name}`,
|
|
103
|
+
className: cn(
|
|
104
|
+
"absolute -right-2 -top-2 inline-flex h-5 w-5 items-center justify-center rounded-full",
|
|
105
|
+
"bg-card border border-border text-foreground shadow-sm",
|
|
106
|
+
"transition-all duration-[var(--duration-normal,200ms)] ease-out",
|
|
107
|
+
"hover:bg-accent hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",
|
|
108
|
+
"active:scale-90"
|
|
109
|
+
),
|
|
110
|
+
children: /* @__PURE__ */ jsxs(
|
|
111
|
+
"svg",
|
|
112
|
+
{
|
|
113
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
114
|
+
viewBox: "0 0 24 24",
|
|
115
|
+
fill: "none",
|
|
116
|
+
stroke: "currentColor",
|
|
117
|
+
strokeWidth: "2.5",
|
|
118
|
+
strokeLinecap: "round",
|
|
119
|
+
strokeLinejoin: "round",
|
|
120
|
+
className: "size-3",
|
|
121
|
+
"aria-hidden": "true",
|
|
122
|
+
children: [
|
|
123
|
+
/* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
124
|
+
/* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
) : null
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
function FileIcon(props) {
|
|
135
|
+
return /* @__PURE__ */ jsxs(
|
|
136
|
+
"svg",
|
|
137
|
+
{
|
|
138
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
139
|
+
viewBox: "0 0 24 24",
|
|
140
|
+
fill: "none",
|
|
141
|
+
stroke: "currentColor",
|
|
142
|
+
strokeWidth: "2",
|
|
143
|
+
strokeLinecap: "round",
|
|
144
|
+
strokeLinejoin: "round",
|
|
145
|
+
"aria-hidden": "true",
|
|
146
|
+
...props,
|
|
147
|
+
children: [
|
|
148
|
+
/* @__PURE__ */ jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
|
|
149
|
+
/* @__PURE__ */ jsx("polyline", { points: "14 2 14 8 20 8" })
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { Attachment, attachmentVariants };
|
|
156
|
+
//# sourceMappingURL=attachment.js.map
|
|
157
|
+
//# sourceMappingURL=attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/ai/attachment/attachment.tsx"],"names":[],"mappings":"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","file":"attachment.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** A file-shaped attachment metadata object accepted by `<Attachment>`. */\nexport interface AttachmentFile {\n\t/** Display name. */\n\tname: string;\n\t/** Bytes. Used to render a human-readable size. */\n\tsize: number;\n\t/** MIME type. Drives the auto-detected `variant`. */\n\ttype: string;\n\t/**\n\t * Optional preview URL for images. When `type` starts with `image/`\n\t * AND `preview` is set, the attachment renders a thumbnail; otherwise\n\t * it falls back to a typed file icon + name + size.\n\t */\n\tpreview?: string;\n}\n\nconst attachmentVariants = cva(\n\t[\n\t\t\"group/attachment relative inline-flex items-center gap-[var(--gap-sm,0.5rem)] rounded-md border border-border bg-card\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tfile: \"px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] max-w-xs\",\n\t\t\t\timage: \"p-0 overflow-hidden\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"file\" },\n\t},\n);\n\nexport interface AttachmentProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"onProgress\">,\n\t\tVariantProps<typeof attachmentVariants> {\n\t/** Forwarded ref onto the root element. */\n\tref?: React.Ref<HTMLDivElement>;\n\t/** Native `File` OR a metadata object. */\n\tfile: File | AttachmentFile;\n\t/** Click handler for the remove button. When provided, a × button overlays the attachment. */\n\tonRemove?: () => void;\n\t/**\n\t * Upload progress in `[0, 1)`. Values `>= 1` (or `undefined`) hide the\n\t * progressbar — pass `undefined` once the upload completes. Internally\n\t * scaled to `aria-valuenow` on a 0–100 progressbar so AT engines\n\t * announce \"42 percent\" rather than \"0.42 of 1.\"\n\t */\n\tprogress?: number;\n}\n\n/**\n * Format a byte count as a human-readable size (`\"24.3 KB\"`, `\"1.2 MB\"`).\n *\n * @param bytes - Raw byte count.\n * @returns A short human-readable string.\n */\nfunction formatSize(bytes: number): string {\n\tif (bytes < 1024) return `${bytes} B`;\n\tif (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n\tif (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n\treturn `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n}\n\n/**\n * Decide whether to render the image variant (thumbnail) vs the file\n * variant (icon + name + size). Images need both an image MIME type AND\n * a `preview` URL — without preview we can't actually show the image, so\n * we fall back to the file variant.\n *\n * @param file - The attachment input.\n * @returns `\"image\"` when both conditions hold, else `\"file\"`.\n */\nfunction detectVariant(file: File | AttachmentFile): \"image\" | \"file\" {\n\tconst preview = \"preview\" in file ? file.preview : undefined;\n\tconst isImage = file.type.startsWith(\"image/\");\n\treturn isImage && preview ? \"image\" : \"file\";\n}\n\n/**\n * Resolve the preview URL for an attachment input. Native `File`s don't\n * carry a preview; consumers create one via `URL.createObjectURL(file)`\n * before handing the file in.\n *\n * @param file - The attachment input.\n * @returns The preview URL, or undefined.\n */\nfunction resolvePreview(file: File | AttachmentFile): string | undefined {\n\treturn \"preview\" in file ? file.preview : undefined;\n}\n\n/**\n * A file / image attachment thumbnail with an optional remove affordance\n * and optional upload-progress overlay. Composes with the existing\n * `Composer` AI primitive (drop into Composer's children slot to render\n * as part of the message draft).\n *\n * Auto-detects the visual variant: image MIME + `preview` URL → image\n * thumbnail; everything else → typed file icon with name + size.\n *\n * Distinct from {@link Dropzone} (the upload-input affordance) and\n * static {@link Card} previews (no remove/progress UI).\n *\n * @example\n * ```tsx\n * <Attachment\n * file={{ name: \"screenshot.png\", size: 124000, type: \"image/png\", preview: objectUrl }}\n * onRemove={() => removeFromDraft(\"screenshot.png\")}\n * />\n * ```\n */\nfunction Attachment({\n\tclassName,\n\tvariant,\n\tfile,\n\tonRemove,\n\tprogress,\n\tref,\n\t...props\n}: AttachmentProps) {\n\tconst preview = resolvePreview(file);\n\t// M3: when caller forces variant=\"image\" but no preview is available,\n\t// fall back to \"file\" so the wrapper padding matches the rendered\n\t// content (file icon + name + size needs px/py; image uses zero-pad).\n\tconst detected = detectVariant(file);\n\tconst resolvedVariant: \"image\" | \"file\" =\n\t\tvariant === \"image\" && !preview ? \"file\" : (variant ?? detected);\n\tconst showProgress = typeof progress === \"number\" && progress >= 0 && progress < 1;\n\t// M5: scale to 0–100 so AT announces \"42 percent\" not \"0.42 of 1.\"\n\tconst progressPercent = showProgress ? Math.round(progress * 100) : 0;\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(attachmentVariants({ variant: resolvedVariant }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{resolvedVariant === \"image\" && preview ? (\n\t\t\t\t// Intentional plain <img> (not next/image) — Attachment is\n\t\t\t\t// framework-agnostic. Consumers can swap in next/image at the\n\t\t\t\t// callsite when they want optimization.\n\t\t\t\t<img\n\t\t\t\t\tsrc={preview}\n\t\t\t\t\talt={file.name}\n\t\t\t\t\tclassName=\"block h-20 w-20 object-cover\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<FileIcon className=\"h-5 w-5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t<div className=\"flex min-w-0 flex-col\">\n\t\t\t\t\t\t<span className=\"truncate text-sm font-medium text-foreground\">{file.name}</span>\n\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">{formatSize(file.size)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{showProgress ? (\n\t\t\t\t<div\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\taria-valuenow={progressPercent}\n\t\t\t\t\taria-label={`Uploading ${file.name}`}\n\t\t\t\t\tclassName=\"absolute inset-x-0 bottom-0 h-1 overflow-hidden rounded-b-md bg-muted\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"h-full bg-primary transition-[width] duration-[var(--duration-normal,200ms)] ease-out\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{onRemove ? (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\taria-label={`Remove ${file.name}`}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"absolute -right-2 -top-2 inline-flex h-5 w-5 items-center justify-center rounded-full\",\n\t\t\t\t\t\t\"bg-card border border-border text-foreground shadow-sm\",\n\t\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"hover:bg-accent hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n\t\t\t\t\t\t\"active:scale-90\",\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2.5\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\tclassName=\"size-3\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n\t\t\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n\n/** Generic file icon (page-with-fold). */\nfunction FileIcon(props: React.SVGAttributes<SVGElement>) {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\taria-hidden=\"true\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n\t\t\t<polyline points=\"14 2 14 8 20 8\" />\n\t\t</svg>\n\t);\n}\n\nexport { Attachment, attachmentVariants };\n"]}
|
package/dist/avatar.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/** Root container for an avatar (image + fallback). */
|
|
5
|
-
declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
6
|
-
/** Avatar image. AvatarFallback renders in its place when the image is missing or errors. */
|
|
7
|
-
declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
|
|
8
|
-
/** Fallback content (usually initials or an icon) shown when the image is missing or fails. Supports delayMs to avoid flashing for fast-loading images. */
|
|
9
|
-
declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
10
|
-
|
|
11
|
-
export { Avatar, AvatarFallback, AvatarImage };
|
|
1
|
+
export { Avatar_alias_1 as Avatar } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { AvatarImage_alias_1 as AvatarImage } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { AvatarFallback_alias_1 as AvatarFallback } from './_tsup-dts-rollup.js';
|
package/dist/badge.d.ts
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import * as React from 'react';
|
|
5
|
-
|
|
6
|
-
declare const badgeVariants: (props?: ({
|
|
7
|
-
variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
8
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
-
/**
|
|
10
|
-
* A small status indicator badge with multiple style variants.
|
|
11
|
-
* Used for tags, statuses, counts, and categorization.
|
|
12
|
-
*/
|
|
13
|
-
interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Renders an inline badge element with variant-based styling.
|
|
17
|
-
* @param props - Badge props including variant and className
|
|
18
|
-
* @returns A styled div element
|
|
19
|
-
*/
|
|
20
|
-
declare function Badge({ className, variant, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
|
|
21
|
-
|
|
22
|
-
export { Badge, type BadgeProps, badgeVariants };
|
|
1
|
+
export { BadgeProps_alias_1 as BadgeProps } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { Badge_alias_1 as Badge } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { badgeVariants_alias_1 as badgeVariants } from './_tsup-dts-rollup.js';
|
package/dist/breadcrumb.d.ts
CHANGED
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/** A single breadcrumb list item. */
|
|
9
|
-
declare const BreadcrumbItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
|
|
10
|
-
/** A link inside a breadcrumb item. Use asChild to render e.g. Next.js Link. */
|
|
11
|
-
declare const BreadcrumbLink: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
|
|
12
|
-
asChild?: boolean;
|
|
13
|
-
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
14
|
-
/** The final breadcrumb (current page). Not interactive. */
|
|
15
|
-
declare const BreadcrumbPage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
16
|
-
/**
|
|
17
|
-
* Visual separator between breadcrumb items (chevron by default).
|
|
18
|
-
* @returns An li rendering a decorative chevron icon
|
|
19
|
-
*/
|
|
20
|
-
declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
|
|
21
|
-
/**
|
|
22
|
-
* Ellipsis for truncated breadcrumb trails.
|
|
23
|
-
* @returns A span containing a decorative SVG (aria-hidden) plus a sr-only "More pages" label for AT.
|
|
24
|
-
*/
|
|
25
|
-
declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
|
|
26
|
-
|
|
27
|
-
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
1
|
+
export { Breadcrumb_alias_1 as Breadcrumb } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { BreadcrumbList_alias_1 as BreadcrumbList } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { BreadcrumbItem_alias_1 as BreadcrumbItem } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { BreadcrumbLink_alias_1 as BreadcrumbLink } from './_tsup-dts-rollup.js';
|
|
5
|
+
export { BreadcrumbPage_alias_1 as BreadcrumbPage } from './_tsup-dts-rollup.js';
|
|
6
|
+
export { BreadcrumbSeparator_alias_1 as BreadcrumbSeparator } from './_tsup-dts-rollup.js';
|
|
7
|
+
export { BreadcrumbEllipsis_alias_1 as BreadcrumbEllipsis } from './_tsup-dts-rollup.js';
|
package/dist/button.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
import 'class-variance-authority/types';
|
|
5
|
-
import 'class-variance-authority';
|
|
6
|
-
|
|
7
|
-
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ButtonVariantsProps {
|
|
8
|
-
asChild?: boolean;
|
|
9
|
-
loading?: boolean;
|
|
10
|
-
}
|
|
11
|
-
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
12
|
-
|
|
13
|
-
export { Button, type ButtonProps };
|
|
1
|
+
export { ButtonProps_alias_1 as ButtonProps } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { Button_alias_1 as Button } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { buttonVariants_alias_2 as buttonVariants } from './_tsup-dts-rollup.js';
|
package/dist/calendar.d.ts
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { DayPicker } from 'react-day-picker';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Calendar date grid built on react-day-picker v9. Forwards all DayPicker
|
|
7
|
-
* props. Pair `mode` + `selected` + `onSelect` for selection control;
|
|
8
|
-
* pass `captionLayout="dropdown"` with `startMonth`/`endMonth` for
|
|
9
|
-
* native year-dropdown navigation.
|
|
10
|
-
* @returns A themed react-day-picker instance with our dropdown overlay CSS.
|
|
11
|
-
*/
|
|
12
|
-
declare function Calendar({ className, classNames, showOutsideDays, ...props }: React.ComponentProps<typeof DayPicker>): react_jsx_runtime.JSX.Element;
|
|
13
|
-
declare namespace Calendar {
|
|
14
|
-
var displayName: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export { Calendar };
|
|
1
|
+
export { Calendar_alias_1 as Calendar } from './_tsup-dts-rollup.js';
|
package/dist/card.d.ts
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/** The title element inside a CardHeader. */
|
|
8
|
-
declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
|
|
9
|
-
/** A description element inside a CardHeader. */
|
|
10
|
-
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
11
|
-
/** The main content area of a Card. */
|
|
12
|
-
declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
-
/** The footer section of a Card. */
|
|
14
|
-
declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
-
|
|
16
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
1
|
+
export { Card_alias_1 as Card } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { CardHeader_alias_1 as CardHeader } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { CardFooter_alias_1 as CardFooter } from './_tsup-dts-rollup.js';
|
|
4
|
+
export { CardTitle_alias_1 as CardTitle } from './_tsup-dts-rollup.js';
|
|
5
|
+
export { CardDescription_alias_1 as CardDescription } from './_tsup-dts-rollup.js';
|
|
6
|
+
export { CardContent_alias_1 as CardContent } from './_tsup-dts-rollup.js';
|
package/dist/checkbox.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* An accessible checkbox component built on Radix UI.
|
|
6
|
-
* Supports checked, unchecked, and indeterminate states with smooth animations.
|
|
7
|
-
*/
|
|
8
|
-
type CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;
|
|
9
|
-
declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
-
|
|
11
|
-
export { Checkbox, type CheckboxProps };
|
|
1
|
+
export { CheckboxProps_alias_1 as CheckboxProps } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { Checkbox_alias_1 as Checkbox } from './_tsup-dts-rollup.js';
|
package/dist/citation.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/lib/utils.ts
|
|
6
|
+
function cn(...inputs) {
|
|
7
|
+
return twMerge(clsx(inputs));
|
|
8
|
+
}
|
|
9
|
+
function Citation({ title, url, page, index, className, children }) {
|
|
10
|
+
const baseClasses = cn(
|
|
11
|
+
"inline-flex items-center gap-1.5 rounded-md border border-foreground/15 bg-card px-2 py-0.5 text-xs",
|
|
12
|
+
"transition-all duration-[var(--duration-normal,200ms)] ease-out",
|
|
13
|
+
className
|
|
14
|
+
);
|
|
15
|
+
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16
|
+
typeof index === "number" ? /* @__PURE__ */ jsxs("span", { className: "font-mono text-[10px] font-semibold text-muted-foreground", children: [
|
|
17
|
+
"[",
|
|
18
|
+
index,
|
|
19
|
+
"]"
|
|
20
|
+
] }) : /* @__PURE__ */ jsx(DocGlyph, {}),
|
|
21
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-foreground", children: title }),
|
|
22
|
+
typeof page === "number" ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
23
|
+
"p.",
|
|
24
|
+
page
|
|
25
|
+
] }) : null,
|
|
26
|
+
children
|
|
27
|
+
] });
|
|
28
|
+
if (url) {
|
|
29
|
+
return /* @__PURE__ */ jsx(
|
|
30
|
+
"a",
|
|
31
|
+
{
|
|
32
|
+
href: url,
|
|
33
|
+
target: "_blank",
|
|
34
|
+
rel: "noreferrer noopener",
|
|
35
|
+
className: cn(
|
|
36
|
+
baseClasses,
|
|
37
|
+
"hover:border-foreground/30 hover:bg-secondary/40 hover:shadow-sm",
|
|
38
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
39
|
+
),
|
|
40
|
+
children: body
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */ jsx("span", { className: baseClasses, children: body });
|
|
45
|
+
}
|
|
46
|
+
function DocGlyph() {
|
|
47
|
+
return /* @__PURE__ */ jsxs(
|
|
48
|
+
"svg",
|
|
49
|
+
{
|
|
50
|
+
"aria-hidden": true,
|
|
51
|
+
viewBox: "0 0 16 16",
|
|
52
|
+
width: "11",
|
|
53
|
+
height: "11",
|
|
54
|
+
fill: "none",
|
|
55
|
+
stroke: "currentColor",
|
|
56
|
+
strokeWidth: "1.5",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeLinejoin: "round",
|
|
59
|
+
className: "shrink-0 text-muted-foreground",
|
|
60
|
+
children: [
|
|
61
|
+
/* @__PURE__ */ jsx("path", { d: "M9 1.5H4.5A1.5 1.5 0 0 0 3 3v10a1.5 1.5 0 0 0 1.5 1.5h7A1.5 1.5 0 0 0 13 13V5.5L9 1.5z" }),
|
|
62
|
+
/* @__PURE__ */ jsx("path", { d: "M9 1.5V5.5h4" })
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export { Citation };
|
|
69
|
+
//# sourceMappingURL=citation.js.map
|
|
70
|
+
//# sourceMappingURL=citation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/ai/citation/citation.tsx"],"names":[],"mappings":";;;;;AAQO,SAAS,MAAM,MAAA,EAAsB;AAC3C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5B;ACyBA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAO,GAAA,EAAK,MAAM,KAAA,EAAO,SAAA,EAAW,UAAS,EAAkB;AAClF,EAAA,MAAM,WAAA,GAAc,EAAA;AAAA,IACnB,qGAAA;AAAA,IACA,iEAAA;AAAA,IACA;AAAA,GACD;AAEA,EAAA,MAAM,uBACL,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,OAAO,KAAA,KAAU,QAAA,mBACjB,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2DAAA,EAA4D,QAAA,EAAA;AAAA,MAAA,GAAA;AAAA,MAAE,KAAA;AAAA,MAAM;AAAA,KAAA,EAAC,CAAA,uBAEpF,QAAA,EAAA,EAAS,CAAA;AAAA,oBAEX,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACjD,OAAO,IAAA,KAAS,QAAA,mBAChB,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,QAAA,EAAA;AAAA,MAAA,IAAA;AAAA,MAAG;AAAA,KAAA,EAAK,CAAA,GAC7C,IAAA;AAAA,IACH;AAAA,GAAA,EACF,CAAA;AAGD,EAAA,IAAI,GAAA,EAAK;AACR,IAAA,uBACC,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACA,IAAA,EAAM,GAAA;AAAA,QACN,MAAA,EAAO,QAAA;AAAA,QACP,GAAA,EAAI,qBAAA;AAAA,QACJ,SAAA,EAAW,EAAA;AAAA,UACV,WAAA;AAAA,UACA,kEAAA;AAAA,UACA;AAAA,SACD;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACF;AAAA,EAEF;AAEA,EAAA,uBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,WAAA,EAAc,QAAA,EAAA,IAAA,EAAK,CAAA;AAC5C;AAEA,SAAS,QAAA,GAAW;AACnB,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,aAAA,EAAW,IAAA;AAAA,MACX,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA,EAAU,gCAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,wFAAA,EAAyF,CAAA;AAAA,wBACjG,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AAAA,GACxB;AAEF","file":"citation.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Source attribution chip — renders a citation for a RAG hit, search\n * result, or any external reference the assistant pulled from. Becomes a\n * clickable anchor when `url` is provided; otherwise a static span.\n *\n * @example\n * <Citation title=\"auth-overview.md\" url={src.url} page={3} />\n * @example\n * <Cluster gap=\"xs\">\n * {sources.map((s, i) => (\n * <Citation key={s.id} title={s.title} url={s.url} index={i + 1} />\n * ))}\n * </Cluster>\n */\nexport interface CitationProps {\n\ttitle: string;\n\turl?: string;\n\tpage?: number;\n\t/** Numeric index for inline footnote-style display (e.g. \"[1] auth.md\"). */\n\tindex?: number;\n\tclassName?: string;\n\tchildren?: React.ReactNode;\n}\n\n/**\n * Renders a source citation chip. Uses an `<a>` when `url` is set so the\n * chip is keyboard-focusable + opens in a new tab; falls back to a\n * non-interactive span otherwise.\n *\n * @param props - title + optional url, page, index\n * @returns An anchor or span styled as a chip\n */\nfunction Citation({ title, url, page, index, className, children }: CitationProps) {\n\tconst baseClasses = cn(\n\t\t\"inline-flex items-center gap-1.5 rounded-md border border-foreground/15 bg-card px-2 py-0.5 text-xs\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\tclassName,\n\t);\n\n\tconst body = (\n\t\t<>\n\t\t\t{typeof index === \"number\" ? (\n\t\t\t\t<span className=\"font-mono text-[10px] font-semibold text-muted-foreground\">[{index}]</span>\n\t\t\t) : (\n\t\t\t\t<DocGlyph />\n\t\t\t)}\n\t\t\t<span className=\"truncate text-foreground\">{title}</span>\n\t\t\t{typeof page === \"number\" ? (\n\t\t\t\t<span className=\"text-muted-foreground\">p.{page}</span>\n\t\t\t) : null}\n\t\t\t{children}\n\t\t</>\n\t);\n\n\tif (url) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={url}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\tbaseClasses,\n\t\t\t\t\t\"hover:border-foreground/30 hover:bg-secondary/40 hover:shadow-sm\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{body}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn <span className={baseClasses}>{body}</span>;\n}\n\nfunction DocGlyph() {\n\treturn (\n\t\t<svg\n\t\t\taria-hidden\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\twidth=\"11\"\n\t\t\theight=\"11\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"shrink-0 text-muted-foreground\"\n\t\t>\n\t\t\t<path d=\"M9 1.5H4.5A1.5 1.5 0 0 0 3 3v10a1.5 1.5 0 0 0 1.5 1.5h7A1.5 1.5 0 0 0 13 13V5.5L9 1.5z\" />\n\t\t\t<path d=\"M9 1.5V5.5h4\" />\n\t\t</svg>\n\t);\n}\n\nexport { Citation };\n"]}
|
package/dist/cluster.d.ts
CHANGED
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import * as React from 'react';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* CVA variants for Cluster — horizontal flex flow with wrap.
|
|
8
|
-
* `gap` and `justify` pull from shared layout-variant maps; `align` adds
|
|
9
|
-
* `baseline` (text-baseline alignment for mixed-size siblings).
|
|
10
|
-
*/
|
|
11
|
-
declare const clusterVariants: (props?: ({
|
|
12
|
-
gap?: "sm" | "lg" | "md" | "xl" | "xs" | null | undefined;
|
|
13
|
-
align?: "center" | "start" | "end" | "stretch" | "baseline" | null | undefined;
|
|
14
|
-
justify?: "center" | "start" | "end" | "between" | null | undefined;
|
|
15
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
16
|
-
/** Props for the Cluster component. */
|
|
17
|
-
interface ClusterProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof clusterVariants> {
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Horizontal flex flow with wrap. Children flow left-to-right and wrap to next line as needed.
|
|
21
|
-
* @param props - Cluster props including `gap`, `align`, and `justify` variant keys.
|
|
22
|
-
* @returns A flex row that wraps with consistent gap.
|
|
23
|
-
* @example
|
|
24
|
-
* ```tsx
|
|
25
|
-
* <Cluster gap="sm">
|
|
26
|
-
* <Badge>react</Badge>
|
|
27
|
-
* <Badge>typescript</Badge>
|
|
28
|
-
* <Badge>tailwind</Badge>
|
|
29
|
-
* </Cluster>
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
declare function Cluster({ className, gap, align, justify, ...props }: ClusterProps): react_jsx_runtime.JSX.Element;
|
|
33
|
-
|
|
34
|
-
export { Cluster, type ClusterProps, clusterVariants };
|
|
1
|
+
export { ClusterProps_alias_1 as ClusterProps } from './_tsup-dts-rollup.js';
|
|
2
|
+
export { Cluster_alias_1 as Cluster } from './_tsup-dts-rollup.js';
|
|
3
|
+
export { clusterVariants_alias_1 as clusterVariants } from './_tsup-dts-rollup.js';
|