@schemavaults/ui 0.85.3 → 0.86.2
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/components/ui/chip/chip.d.ts +6 -2
- package/dist/components/ui/chip/chip.js +2 -3
- package/dist/components/ui/chip/chip.js.map +1 -1
- package/dist/components/ui/color-swatch/color-swatch.d.ts +13 -9
- package/dist/components/ui/color-swatch/color-swatch.js +4 -5
- package/dist/components/ui/color-swatch/color-swatch.js.map +1 -1
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/index.js.map +1 -1
- package/dist/components/ui/prompt-input/index.d.ts +4 -0
- package/dist/components/ui/prompt-input/index.js +3 -0
- package/dist/components/ui/prompt-input/index.js.map +1 -0
- package/dist/components/ui/prompt-input/prompt-input-variants.d.ts +20 -0
- package/dist/components/ui/prompt-input/prompt-input-variants.js +38 -0
- package/dist/components/ui/prompt-input/prompt-input-variants.js.map +1 -0
- package/dist/components/ui/prompt-input/prompt-input.d.ts +152 -0
- package/dist/components/ui/prompt-input/prompt-input.js +193 -0
- package/dist/components/ui/prompt-input/prompt-input.js.map +1 -0
- package/dist/components/ui/tags-input/tags-input.d.ts +8 -2
- package/dist/components/ui/tags-input/tags-input.js +4 -4
- package/dist/components/ui/tags-input/tags-input.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type VariantProps } from "class-variance-authority";
|
|
2
|
-
import { type ComponentProps, type MouseEvent, type ReactNode } from "react";
|
|
2
|
+
import { type ComponentProps, type MouseEvent, type ReactElement, type ReactNode } from "react";
|
|
3
3
|
import { chipSizeIds, chipVariantIds, type ChipSize, type ChipVariant } from "./chip-variants";
|
|
4
4
|
declare const chipVariants: (props?: ({
|
|
5
5
|
variant?: "default" | "warning" | "destructive" | "primary" | "outline" | "success" | "secondary" | null | undefined;
|
|
@@ -22,7 +22,11 @@ export interface ChipProps extends Omit<ComponentProps<"span">, "onClick">, Vari
|
|
|
22
22
|
/** Click handler — when set the chip is rendered as a button-like interactive element. */
|
|
23
23
|
onClick?: (event: MouseEvent<HTMLSpanElement>) => void;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
declare function Chip({ ref, className, variant, size, leading, removable, onRemove, removeLabel, selected, disabled, onClick, onKeyDown, children, role, tabIndex, ...props }: ChipProps): ReactElement;
|
|
26
|
+
declare namespace Chip {
|
|
27
|
+
var displayName: string;
|
|
28
|
+
}
|
|
29
|
+
export { Chip };
|
|
26
30
|
export { chipVariants, chipSizeIds, chipVariantIds };
|
|
27
31
|
export type { ChipSize, ChipVariant };
|
|
28
32
|
export default Chip;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { X } from "lucide-react";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
|
-
import { forwardRef, } from "react";
|
|
6
5
|
import { cn } from "../../../lib/utils";
|
|
7
6
|
import { chipSizeIds, chipVariantIds, } from "./chip-variants";
|
|
8
7
|
const chipVariants = cva("group/chip inline-flex items-center gap-1.5 rounded-full border font-medium align-middle whitespace-nowrap select-none transition-[background-color,border-color,color,box-shadow,opacity] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", {
|
|
@@ -44,7 +43,7 @@ const removeButtonVariants = cva("inline-flex items-center justify-center rounde
|
|
|
44
43
|
size: "default",
|
|
45
44
|
},
|
|
46
45
|
});
|
|
47
|
-
function
|
|
46
|
+
function Chip({ ref, className, variant, size, leading, removable = false, onRemove, removeLabel = "Remove", selected = false, disabled = false, onClick, onKeyDown, children, role, tabIndex, ...props }) {
|
|
48
47
|
const interactive = Boolean(onClick) && !disabled;
|
|
49
48
|
const handleKeyDown = (event) => {
|
|
50
49
|
onKeyDown?.(event);
|
|
@@ -63,8 +62,8 @@ function ChipImpl({ className, variant, size, leading, removable = false, onRemo
|
|
|
63
62
|
};
|
|
64
63
|
return (_jsxs("span", { ref: ref, "data-slot": "chip", "data-interactive": interactive, "data-selected": selected || undefined, "data-disabled": disabled || undefined, role: role ?? (interactive ? "button" : undefined), tabIndex: tabIndex ?? (interactive ? 0 : undefined), "aria-pressed": interactive && selected ? true : undefined, "aria-disabled": disabled || undefined, onClick: interactive ? onClick : undefined, onKeyDown: handleKeyDown, className: cn(chipVariants({ variant, size, disabled }), interactive && "cursor-pointer", className), ...props, children: [leading != null && (_jsx("span", { "aria-hidden": "true", "data-slot": "chip-leading", className: "inline-flex shrink-0 items-center justify-center", children: leading })), _jsx("span", { "data-slot": "chip-label", className: "truncate", children: children }), removable && (_jsx("button", { type: "button", tabIndex: disabled ? -1 : 0, "aria-label": removeLabel, "data-slot": "chip-remove", disabled: disabled, onClick: handleRemoveClick, className: cn(removeButtonVariants({ size })), children: _jsx(X, { "aria-hidden": "true" }) }))] }));
|
|
65
64
|
}
|
|
66
|
-
export const Chip = forwardRef(ChipImpl);
|
|
67
65
|
Chip.displayName = "Chip";
|
|
66
|
+
export { Chip };
|
|
68
67
|
export { chipVariants, chipSizeIds, chipVariantIds };
|
|
69
68
|
export default Chip;
|
|
70
69
|
//# sourceMappingURL=chip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../../src/components/ui/chip/chip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../../src/components/ui/chip/chip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AASlE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,WAAW,EACX,cAAc,GAGf,MAAM,iBAAiB,CAAC;AAEzB,MAAM,YAAY,GAAG,GAAG,CACtB,qUAAqU,EACrU;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,iLAAiL;YACnL,OAAO,EACL,oKAAoK;YACtK,SAAS,EACP,qKAAqK;YACvK,WAAW,EACT,uOAAuO;YACzO,OAAO,EACL,4OAA4O;YAC9O,OAAO,EACL,sNAAsN;YACxN,OAAO,EACL,+PAA+P;SAC5N;QACvC,IAAI,EAAE;YACJ,EAAE,EAAE,0DAA0D;YAC9D,OAAO,EAAE,4DAA4D;YACrE,EAAE,EAAE,4DAA4D;SAC9B;QACpC,QAAQ,EAAE;YACR,IAAI,EAAE,gCAAgC;YACtC,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;KAChB;CACF,CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAG,CAC9B,+PAA+P,EAC/P;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,2BAA2B;YAC/B,OAAO,EAAE,uBAAuB;YAChC,EAAE,EAAE,yBAAyB;SACK;KACrC;IACD,eAAe,EAAE;QACf,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAqBF,SAAS,IAAI,CAAC,EACZ,GAAG,EACH,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACE;IACV,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAElD,MAAM,aAAa,GAAG,CAAC,KAAqC,EAAQ,EAAE;QACpE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QACnD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC,KAA+C,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAoC,EAAQ,EAAE;QACvE,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,EAAE,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,eACE,MAAM,sBACE,WAAW,mBACd,QAAQ,IAAI,SAAS,mBACrB,QAAQ,IAAI,SAAS,EACpC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAClD,QAAQ,EAAE,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,kBACrC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,mBACzC,QAAQ,IAAI,SAAS,EACpC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC1C,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,EAAE,CACX,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EACzC,WAAW,IAAI,gBAAgB,EAC/B,SAAS,CACV,KACG,KAAK,aAER,OAAO,IAAI,IAAI,IAAI,CAClB,8BACc,MAAM,eACR,cAAc,EACxB,SAAS,EAAC,kDAAkD,YAE3D,OAAO,GACH,CACR,EACD,4BAAgB,YAAY,EAAC,SAAS,EAAC,UAAU,YAC9C,QAAQ,GACJ,EACN,SAAS,IAAI,CACZ,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBACf,WAAW,eACb,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAE7C,KAAC,CAAC,mBAAa,MAAM,GAAG,GACjB,CACV,IACI,CACR,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAGrD,eAAe,IAAI,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type VariantProps } from "class-variance-authority";
|
|
2
|
-
import { type
|
|
2
|
+
import { type ComponentProps, type MouseEvent, type ReactElement } from "react";
|
|
3
3
|
import { colorSwatchShapeIds, colorSwatchSizeIds, colorSwatchVariantIds, type ColorSwatchShape, type ColorSwatchSize, type ColorSwatchVariant } from "./color-swatch-variants";
|
|
4
4
|
declare const colorSwatchVariants: (props?: ({
|
|
5
5
|
size?: "xs" | "sm" | "default" | "lg" | "xl" | null | undefined;
|
|
@@ -9,7 +9,7 @@ declare const colorSwatchVariants: (props?: ({
|
|
|
9
9
|
selected?: boolean | null | undefined;
|
|
10
10
|
disabled?: boolean | null | undefined;
|
|
11
11
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
|
-
export interface ColorSwatchProps extends Omit<
|
|
12
|
+
export interface ColorSwatchProps extends Omit<ComponentProps<"span">, "color">, Pick<VariantProps<typeof colorSwatchVariants>, "size" | "shape" | "variant"> {
|
|
13
13
|
/**
|
|
14
14
|
* The color to display. Accepts any CSS color value:
|
|
15
15
|
* - hex ("#7c3aed")
|
|
@@ -30,18 +30,22 @@ export interface ColorSwatchProps extends Omit<HTMLAttributes<HTMLSpanElement>,
|
|
|
30
30
|
hideSelectedIcon?: boolean;
|
|
31
31
|
/** Color for the check icon when selected. Defaults to a contrast-aware white/black. */
|
|
32
32
|
checkIconColor?: string;
|
|
33
|
-
/** Optional ref forwarded to the outer element. */
|
|
34
|
-
ref?: Ref<HTMLSpanElement>;
|
|
35
33
|
}
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
declare function ColorSwatch({ ref, className, color, label, size, shape, variant, selected, disabled, onClick, onKeyDown, hideSelectedIcon, checkIconColor, style, role, tabIndex, "aria-label": ariaLabelProp, ...props }: ColorSwatchProps): ReactElement;
|
|
35
|
+
declare namespace ColorSwatch {
|
|
36
|
+
var displayName: string;
|
|
37
|
+
}
|
|
38
|
+
export { ColorSwatch };
|
|
39
|
+
export interface ColorSwatchGroupProps extends ComponentProps<"div"> {
|
|
38
40
|
/** Visual gap between swatches. Maps to Tailwind's gap scale. */
|
|
39
41
|
gap?: "tight" | "default" | "loose";
|
|
40
42
|
/** Optional accessible label for the entire group (e.g. "Theme color"). */
|
|
41
43
|
label?: string;
|
|
42
|
-
/** Forwarded ref. */
|
|
43
|
-
ref?: Ref<HTMLDivElement>;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
declare function ColorSwatchGroup({ ref, className, children, gap, label, role, "aria-label": ariaLabelProp, ...props }: ColorSwatchGroupProps): ReactElement;
|
|
46
|
+
declare namespace ColorSwatchGroup {
|
|
47
|
+
var displayName: string;
|
|
48
|
+
}
|
|
49
|
+
export { ColorSwatchGroup };
|
|
46
50
|
export { colorSwatchVariants, colorSwatchSizeIds, colorSwatchShapeIds, colorSwatchVariantIds, };
|
|
47
51
|
export type { ColorSwatchSize, ColorSwatchShape, ColorSwatchVariant };
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { Check } from "lucide-react";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
|
-
import { forwardRef, } from "react";
|
|
6
5
|
import { cn } from "../../../lib/utils";
|
|
7
6
|
import { colorSwatchShapeIds, colorSwatchSizeIds, colorSwatchVariantIds, } from "./color-swatch-variants";
|
|
8
7
|
const colorSwatchVariants = cva("relative inline-flex shrink-0 items-center justify-center align-middle transition-[transform,box-shadow,opacity] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", {
|
|
@@ -77,7 +76,7 @@ function getContrastingCheckColor(color) {
|
|
|
77
76
|
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
78
77
|
return luminance > 0.6 ? "#0a0a0a" : "#ffffff";
|
|
79
78
|
}
|
|
80
|
-
function
|
|
79
|
+
function ColorSwatch({ ref, className, color, label, size, shape, variant, selected = false, disabled = false, onClick, onKeyDown, hideSelectedIcon = false, checkIconColor, style, role, tabIndex, "aria-label": ariaLabelProp, ...props }) {
|
|
81
80
|
const interactive = Boolean(onClick) && !disabled;
|
|
82
81
|
const ariaLabel = ariaLabelProp ?? label ?? color;
|
|
83
82
|
const resolvedSize = size ?? "default";
|
|
@@ -104,17 +103,17 @@ function ColorSwatchImpl({ className, color, label, size, shape, variant, select
|
|
|
104
103
|
disabled,
|
|
105
104
|
}), className), ...props, children: selected && !hideSelectedIcon && (_jsx(Check, { "aria-hidden": "true", className: cn("drop-shadow-sm", checkIconSizeClass[resolvedSize]), style: { color: iconColor }, strokeWidth: 3 })) }));
|
|
106
105
|
}
|
|
107
|
-
export const ColorSwatch = forwardRef(ColorSwatchImpl);
|
|
108
106
|
ColorSwatch.displayName = "ColorSwatch";
|
|
107
|
+
export { ColorSwatch };
|
|
109
108
|
const groupGapClass = {
|
|
110
109
|
tight: "gap-1",
|
|
111
110
|
default: "gap-2",
|
|
112
111
|
loose: "gap-3",
|
|
113
112
|
};
|
|
114
|
-
function
|
|
113
|
+
function ColorSwatchGroup({ ref, className, children, gap = "default", label, role, "aria-label": ariaLabelProp, ...props }) {
|
|
115
114
|
return (_jsx("div", { ref: ref, "data-slot": "color-swatch-group", role: role ?? "group", "aria-label": ariaLabelProp ?? label, className: cn("flex flex-wrap items-center", groupGapClass[gap], className), ...props, children: children }));
|
|
116
115
|
}
|
|
117
|
-
export const ColorSwatchGroup = forwardRef(ColorSwatchGroupImpl);
|
|
118
116
|
ColorSwatchGroup.displayName = "ColorSwatchGroup";
|
|
117
|
+
export { ColorSwatchGroup };
|
|
119
118
|
export { colorSwatchVariants, colorSwatchSizeIds, colorSwatchShapeIds, colorSwatchVariantIds, };
|
|
120
119
|
//# sourceMappingURL=color-swatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-swatch.js","sourceRoot":"","sources":["../../../../src/components/ui/color-swatch/color-swatch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"color-swatch.js","sourceRoot":"","sources":["../../../../src/components/ui/color-swatch/color-swatch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,8 @@ export * from "./checkbox";
|
|
|
72
72
|
export type * from "./checkbox";
|
|
73
73
|
export * from "./textarea";
|
|
74
74
|
export type * from "./textarea";
|
|
75
|
+
export * from "./prompt-input";
|
|
76
|
+
export type * from "./prompt-input";
|
|
75
77
|
export * from "./hover-card";
|
|
76
78
|
export type * from "./hover-card";
|
|
77
79
|
export * from "./radio-group";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,uBAAuB,CAAC;AAGtC,cAAc,aAAa,CAAC;AAG5B,cAAc,eAAe,CAAC;AAG9B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,WAAW,CAAC;AAG1B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC;AAG5B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,eAAe,CAAC;AAG9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,qBAAqB,CAAC;AAGpC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PromptInput, PromptInputTextarea, PromptInputToolbar, PromptInputActions, PromptInputAction, PromptInputSubmit, PromptInputCharCount, PromptInputHint, usePromptInput, promptInputSizeIds, promptInputVariantIds, } from "./prompt-input";
|
|
2
|
+
export type * from "./prompt-input";
|
|
3
|
+
export type * from "./prompt-input-variants";
|
|
4
|
+
export { PromptInput as default } from "./prompt-input";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { PromptInput, PromptInputTextarea, PromptInputToolbar, PromptInputActions, PromptInputAction, PromptInputSubmit, PromptInputCharCount, PromptInputHint, usePromptInput, promptInputSizeIds, promptInputVariantIds, } from "./prompt-input";
|
|
2
|
+
export { PromptInput as default } from "./prompt-input";
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/prompt-input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
export declare const promptInputVariantIds: readonly ["default", "elevated", "filled", "ghost"];
|
|
3
|
+
export type PromptInputVariant = (typeof promptInputVariantIds)[number];
|
|
4
|
+
export declare const promptInputSizeIds: readonly ["sm", "default", "lg"];
|
|
5
|
+
export type PromptInputSize = (typeof promptInputSizeIds)[number];
|
|
6
|
+
export declare const promptInputVariants: (props?: ({
|
|
7
|
+
variant?: "default" | "filled" | "ghost" | "elevated" | null | undefined;
|
|
8
|
+
size?: "sm" | "default" | "lg" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
|
+
export type PromptInputVariantProps = VariantProps<typeof promptInputVariants>;
|
|
11
|
+
export declare const promptInputTextareaSizeClass: {
|
|
12
|
+
sm: string;
|
|
13
|
+
default: string;
|
|
14
|
+
lg: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const promptInputToolbarSizeClass: {
|
|
17
|
+
sm: string;
|
|
18
|
+
default: string;
|
|
19
|
+
lg: string;
|
|
20
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
export const promptInputVariantIds = [
|
|
3
|
+
"default",
|
|
4
|
+
"elevated",
|
|
5
|
+
"filled",
|
|
6
|
+
"ghost",
|
|
7
|
+
];
|
|
8
|
+
export const promptInputSizeIds = ["sm", "default", "lg"];
|
|
9
|
+
export const promptInputVariants = cva("group/prompt-input relative flex w-full flex-col overflow-hidden ring-offset-background transition-colors focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-60", {
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "rounded-md border border-input bg-background",
|
|
13
|
+
elevated: "rounded-2xl border border-input bg-background shadow-md",
|
|
14
|
+
filled: "rounded-md border border-transparent bg-muted",
|
|
15
|
+
ghost: "rounded-md border border-transparent bg-transparent focus-within:ring-offset-0",
|
|
16
|
+
},
|
|
17
|
+
size: {
|
|
18
|
+
sm: "text-sm",
|
|
19
|
+
default: "text-sm",
|
|
20
|
+
lg: "text-base",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
variant: "default",
|
|
25
|
+
size: "default",
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
export const promptInputTextareaSizeClass = {
|
|
29
|
+
sm: "min-h-[44px] px-3 pt-2.5 pb-1 text-sm",
|
|
30
|
+
default: "min-h-[56px] px-3.5 pt-3 pb-1.5 text-sm",
|
|
31
|
+
lg: "min-h-[72px] px-4 pt-4 pb-2 text-base",
|
|
32
|
+
};
|
|
33
|
+
export const promptInputToolbarSizeClass = {
|
|
34
|
+
sm: "px-2 pb-1.5 pt-1 gap-1",
|
|
35
|
+
default: "px-2.5 pb-2 pt-1 gap-2",
|
|
36
|
+
lg: "px-3 pb-2.5 pt-1.5 gap-2",
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=prompt-input-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-input-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/prompt-input/prompt-input-variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;CAC6B,CAAC;AAGvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAsC,CAAC;AAG/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CACpC,yPAAyP,EACzP;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,8CAA8C;YACvD,QAAQ,EACN,yDAAyD;YAC3D,MAAM,EACJ,+CAA+C;YACjD,KAAK,EACH,gFAAgF;SACtC;QAC9C,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,SAAS;YAClB,EAAE,EAAE,WAAW;SAC0B;KAC5C;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAIF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,EAAE,EAAE,uCAAuC;IAC3C,OAAO,EAAE,yCAAyC;IAClD,EAAE,EAAE,uCAAuC;CACF,CAAC;AAE5C,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,wBAAwB;IAC5B,OAAO,EAAE,wBAAwB;IACjC,EAAE,EAAE,0BAA0B;CACW,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type FormHTMLAttributes, type HTMLAttributes, type ReactElement, type ReactNode, type Ref, type RefObject, type TextareaHTMLAttributes } from "react";
|
|
2
|
+
import { type ButtonProps } from "../button/button";
|
|
3
|
+
import { promptInputSizeIds, promptInputVariantIds, type PromptInputSize, type PromptInputVariant } from "./prompt-input-variants";
|
|
4
|
+
interface PromptInputContextValue {
|
|
5
|
+
value: string;
|
|
6
|
+
setValue: (next: string) => void;
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
maxLength?: number;
|
|
10
|
+
size: PromptInputSize;
|
|
11
|
+
variant: PromptInputVariant;
|
|
12
|
+
submit: () => void;
|
|
13
|
+
stop: () => void;
|
|
14
|
+
textareaRef: RefObject<HTMLTextAreaElement | null>;
|
|
15
|
+
}
|
|
16
|
+
export interface PromptInputProps extends Omit<FormHTMLAttributes<HTMLFormElement>, "onSubmit" | "onChange" | "children"> {
|
|
17
|
+
/** Controlled value. Omit to use uncontrolled mode with `defaultValue`. */
|
|
18
|
+
value?: string;
|
|
19
|
+
/** Uncontrolled initial value. */
|
|
20
|
+
defaultValue?: string;
|
|
21
|
+
/** Fires on every keystroke. */
|
|
22
|
+
onValueChange?: (next: string) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Fires when the user presses Enter (without Shift) or clicks the submit
|
|
25
|
+
* button. Receives the trimmed current value.
|
|
26
|
+
*/
|
|
27
|
+
onSubmit?: (value: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Fires when the user clicks the submit slot while `isLoading` is true —
|
|
30
|
+
* i.e. the button is showing its Stop state.
|
|
31
|
+
*/
|
|
32
|
+
onStop?: () => void;
|
|
33
|
+
/** Marks the whole surface as loading. Submit swaps to a Stop button. */
|
|
34
|
+
isLoading?: boolean;
|
|
35
|
+
/** Disables the whole surface. */
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
/** Optional hard character cap. Enter+submit are blocked when exceeded. */
|
|
38
|
+
maxLength?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Trim whitespace before dispatching `onSubmit` and validating "is empty".
|
|
41
|
+
* Default: true.
|
|
42
|
+
*/
|
|
43
|
+
trimOnSubmit?: boolean;
|
|
44
|
+
/** Visual style. */
|
|
45
|
+
variant?: PromptInputVariant;
|
|
46
|
+
/** Overall spacing / typography scale. */
|
|
47
|
+
size?: PromptInputSize;
|
|
48
|
+
children?: ReactNode;
|
|
49
|
+
ref?: Ref<HTMLFormElement>;
|
|
50
|
+
}
|
|
51
|
+
declare function PromptInput({ value: controlledValue, defaultValue, onValueChange, onSubmit, onStop, isLoading, disabled, maxLength, trimOnSubmit, variant, size, className, children, ref, ...formProps }: PromptInputProps): ReactElement;
|
|
52
|
+
declare namespace PromptInput {
|
|
53
|
+
var displayName: string;
|
|
54
|
+
}
|
|
55
|
+
export interface PromptInputTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "defaultValue" | "onChange"> {
|
|
56
|
+
/**
|
|
57
|
+
* Enable Enter-to-submit. Shift+Enter still inserts a newline.
|
|
58
|
+
* Default: true.
|
|
59
|
+
*/
|
|
60
|
+
submitOnEnter?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Maximum height (in pixels) that auto-resize will grow to before the
|
|
63
|
+
* textarea starts scrolling internally. Default: 240.
|
|
64
|
+
*/
|
|
65
|
+
maxHeightPx?: number;
|
|
66
|
+
}
|
|
67
|
+
declare function PromptInputTextarea({ className, submitOnEnter, maxHeightPx, onKeyDown, rows, ref: forwardedRef, ...props }: PromptInputTextareaProps & {
|
|
68
|
+
ref?: Ref<HTMLTextAreaElement>;
|
|
69
|
+
}): ReactElement;
|
|
70
|
+
declare namespace PromptInputTextarea {
|
|
71
|
+
var displayName: string;
|
|
72
|
+
}
|
|
73
|
+
export interface PromptInputToolbarProps extends HTMLAttributes<HTMLDivElement> {
|
|
74
|
+
ref?: Ref<HTMLDivElement>;
|
|
75
|
+
}
|
|
76
|
+
declare function PromptInputToolbar({ className, ref, ...props }: PromptInputToolbarProps): ReactElement;
|
|
77
|
+
declare namespace PromptInputToolbar {
|
|
78
|
+
var displayName: string;
|
|
79
|
+
}
|
|
80
|
+
export interface PromptInputActionsProps extends HTMLAttributes<HTMLDivElement> {
|
|
81
|
+
ref?: Ref<HTMLDivElement>;
|
|
82
|
+
}
|
|
83
|
+
declare function PromptInputActions({ className, ref, ...props }: PromptInputActionsProps): ReactElement;
|
|
84
|
+
declare namespace PromptInputActions {
|
|
85
|
+
var displayName: string;
|
|
86
|
+
}
|
|
87
|
+
export interface PromptInputActionProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
88
|
+
/** Required accessible label — actions are icon-only by default. */
|
|
89
|
+
"aria-label": string;
|
|
90
|
+
}
|
|
91
|
+
declare function PromptInputAction({ className, type, disabled, ref, ...props }: PromptInputActionProps & {
|
|
92
|
+
ref?: Ref<HTMLButtonElement>;
|
|
93
|
+
}): ReactElement;
|
|
94
|
+
declare namespace PromptInputAction {
|
|
95
|
+
var displayName: string;
|
|
96
|
+
}
|
|
97
|
+
export interface PromptInputSubmitProps extends Omit<ButtonProps, "type" | "children"> {
|
|
98
|
+
/** Content shown when the input is idle. Default: an up-arrow icon. */
|
|
99
|
+
children?: ReactNode;
|
|
100
|
+
/** Content shown when `isLoading` is true. Default: a stop-square icon. */
|
|
101
|
+
loadingChildren?: ReactNode;
|
|
102
|
+
/**
|
|
103
|
+
* Accessible label used when the button is in its idle send state.
|
|
104
|
+
* Default: "Send message".
|
|
105
|
+
*/
|
|
106
|
+
sendLabel?: string;
|
|
107
|
+
/**
|
|
108
|
+
* Accessible label used when the button is in its loading (stop) state.
|
|
109
|
+
* Default: "Stop generating".
|
|
110
|
+
*/
|
|
111
|
+
stopLabel?: string;
|
|
112
|
+
}
|
|
113
|
+
declare function PromptInputSubmit({ className, variant, size, children, loadingChildren, disabled, sendLabel, stopLabel, ...props }: PromptInputSubmitProps): ReactElement;
|
|
114
|
+
declare namespace PromptInputSubmit {
|
|
115
|
+
var displayName: string;
|
|
116
|
+
}
|
|
117
|
+
export interface PromptInputCharCountProps extends HTMLAttributes<HTMLSpanElement> {
|
|
118
|
+
/**
|
|
119
|
+
* Percentage (0-100) at which the count starts warning. Default: 90.
|
|
120
|
+
*/
|
|
121
|
+
warnAtPercent?: number;
|
|
122
|
+
/**
|
|
123
|
+
* Render prop to fully customise the display. Called with the raw and
|
|
124
|
+
* derived state — return the node to display inside the span.
|
|
125
|
+
*/
|
|
126
|
+
render?: (state: {
|
|
127
|
+
length: number;
|
|
128
|
+
maxLength: number | undefined;
|
|
129
|
+
remaining: number | undefined;
|
|
130
|
+
isOverLimit: boolean;
|
|
131
|
+
isNearLimit: boolean;
|
|
132
|
+
}) => ReactNode;
|
|
133
|
+
ref?: Ref<HTMLSpanElement>;
|
|
134
|
+
}
|
|
135
|
+
declare function PromptInputCharCount({ className, warnAtPercent, render, ref, ...props }: PromptInputCharCountProps): ReactElement | null;
|
|
136
|
+
declare namespace PromptInputCharCount {
|
|
137
|
+
var displayName: string;
|
|
138
|
+
}
|
|
139
|
+
export interface PromptInputHintProps extends HTMLAttributes<HTMLSpanElement> {
|
|
140
|
+
ref?: Ref<HTMLSpanElement>;
|
|
141
|
+
}
|
|
142
|
+
declare function PromptInputHint({ className, ref, ...props }: PromptInputHintProps): ReactElement;
|
|
143
|
+
declare namespace PromptInputHint {
|
|
144
|
+
var displayName: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Read the current `<PromptInput>` state from inside a custom child.
|
|
148
|
+
* Only callable inside a `<PromptInput>` tree.
|
|
149
|
+
*/
|
|
150
|
+
declare function usePromptInput(): PromptInputContextValue;
|
|
151
|
+
export { PromptInput, PromptInputTextarea, PromptInputToolbar, PromptInputActions, PromptInputAction, PromptInputSubmit, PromptInputCharCount, PromptInputHint, usePromptInput, promptInputSizeIds, promptInputVariantIds, };
|
|
152
|
+
export type { PromptInputSize, PromptInputVariant };
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
4
|
+
import { ArrowUp, Square } from "lucide-react";
|
|
5
|
+
import { cn } from "../../../lib/utils";
|
|
6
|
+
import { Button } from "../button/button";
|
|
7
|
+
import { promptInputSizeIds, promptInputTextareaSizeClass, promptInputToolbarSizeClass, promptInputVariantIds, promptInputVariants, } from "./prompt-input-variants";
|
|
8
|
+
const PromptInputContext = createContext(null);
|
|
9
|
+
function usePromptInputContext(component) {
|
|
10
|
+
const ctx = useContext(PromptInputContext);
|
|
11
|
+
if (ctx === null) {
|
|
12
|
+
throw new Error(`<${component}> must be rendered inside a <PromptInput> parent.`);
|
|
13
|
+
}
|
|
14
|
+
return ctx;
|
|
15
|
+
}
|
|
16
|
+
function PromptInput({ value: controlledValue, defaultValue, onValueChange, onSubmit, onStop, isLoading = false, disabled = false, maxLength, trimOnSubmit = true, variant = "default", size = "default", className, children, ref, ...formProps }) {
|
|
17
|
+
const isControlled = controlledValue !== undefined;
|
|
18
|
+
const [internalValue, setInternalValue] = useState(defaultValue ?? "");
|
|
19
|
+
const value = isControlled ? controlledValue : internalValue;
|
|
20
|
+
const setValue = useCallback((next) => {
|
|
21
|
+
if (!isControlled)
|
|
22
|
+
setInternalValue(next);
|
|
23
|
+
onValueChange?.(next);
|
|
24
|
+
}, [isControlled, onValueChange]);
|
|
25
|
+
const textareaRef = useRef(null);
|
|
26
|
+
const submit = useCallback(() => {
|
|
27
|
+
if (disabled)
|
|
28
|
+
return;
|
|
29
|
+
const outgoing = trimOnSubmit ? value.trim() : value;
|
|
30
|
+
if (outgoing.length === 0)
|
|
31
|
+
return;
|
|
32
|
+
if (maxLength !== undefined && outgoing.length > maxLength)
|
|
33
|
+
return;
|
|
34
|
+
onSubmit?.(outgoing);
|
|
35
|
+
}, [disabled, maxLength, onSubmit, trimOnSubmit, value]);
|
|
36
|
+
const stop = useCallback(() => {
|
|
37
|
+
onStop?.();
|
|
38
|
+
}, [onStop]);
|
|
39
|
+
const handleFormSubmit = useCallback((event) => {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
if (isLoading) {
|
|
42
|
+
stop();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
submit();
|
|
46
|
+
}, [isLoading, stop, submit]);
|
|
47
|
+
const contextValue = useMemo(() => ({
|
|
48
|
+
value,
|
|
49
|
+
setValue,
|
|
50
|
+
disabled,
|
|
51
|
+
isLoading,
|
|
52
|
+
maxLength,
|
|
53
|
+
size,
|
|
54
|
+
variant,
|
|
55
|
+
submit,
|
|
56
|
+
stop,
|
|
57
|
+
textareaRef,
|
|
58
|
+
}), [
|
|
59
|
+
value,
|
|
60
|
+
setValue,
|
|
61
|
+
disabled,
|
|
62
|
+
isLoading,
|
|
63
|
+
maxLength,
|
|
64
|
+
size,
|
|
65
|
+
variant,
|
|
66
|
+
submit,
|
|
67
|
+
stop,
|
|
68
|
+
]);
|
|
69
|
+
return (_jsx(PromptInputContext.Provider, { value: contextValue, children: _jsx("form", { ref: ref, "data-slot": "prompt-input", "data-variant": variant, "data-size": size, "data-loading": isLoading ? "true" : "false", "data-disabled": disabled ? "true" : "false", onSubmit: handleFormSubmit, className: cn(promptInputVariants({ variant, size }), className), ...formProps, children: children }) }));
|
|
70
|
+
}
|
|
71
|
+
PromptInput.displayName = "PromptInput";
|
|
72
|
+
function PromptInputTextarea({ className, submitOnEnter = true, maxHeightPx = 240, onKeyDown, rows = 1, ref: forwardedRef, ...props }) {
|
|
73
|
+
const ctx = usePromptInputContext("PromptInputTextarea");
|
|
74
|
+
const internalRef = ctx.textareaRef;
|
|
75
|
+
// Merge external ref if the consumer passed one.
|
|
76
|
+
const setRef = useCallback((node) => {
|
|
77
|
+
internalRef.current = node;
|
|
78
|
+
if (typeof forwardedRef === "function") {
|
|
79
|
+
forwardedRef(node);
|
|
80
|
+
}
|
|
81
|
+
else if (forwardedRef && typeof forwardedRef === "object") {
|
|
82
|
+
forwardedRef.current =
|
|
83
|
+
node;
|
|
84
|
+
}
|
|
85
|
+
}, [forwardedRef, internalRef]);
|
|
86
|
+
// Auto-resize: recompute height whenever the value changes.
|
|
87
|
+
useLayoutEffect(() => {
|
|
88
|
+
const el = internalRef.current;
|
|
89
|
+
if (el === null)
|
|
90
|
+
return;
|
|
91
|
+
el.style.height = "0px";
|
|
92
|
+
const nextHeight = Math.min(el.scrollHeight, maxHeightPx);
|
|
93
|
+
el.style.height = `${nextHeight}px`;
|
|
94
|
+
el.style.overflowY = el.scrollHeight > maxHeightPx ? "auto" : "hidden";
|
|
95
|
+
}, [ctx.value, maxHeightPx, internalRef]);
|
|
96
|
+
const handleChange = useCallback((event) => {
|
|
97
|
+
ctx.setValue(event.target.value);
|
|
98
|
+
}, [ctx]);
|
|
99
|
+
const handleKeyDown = useCallback((event) => {
|
|
100
|
+
onKeyDown?.(event);
|
|
101
|
+
if (event.defaultPrevented)
|
|
102
|
+
return;
|
|
103
|
+
if (!submitOnEnter)
|
|
104
|
+
return;
|
|
105
|
+
if (event.key !== "Enter")
|
|
106
|
+
return;
|
|
107
|
+
if (event.shiftKey || event.altKey || event.nativeEvent.isComposing) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
if (ctx.isLoading) {
|
|
112
|
+
ctx.stop();
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
ctx.submit();
|
|
116
|
+
}
|
|
117
|
+
}, [ctx, onKeyDown, submitOnEnter]);
|
|
118
|
+
return (_jsx("textarea", { ref: setRef, "data-slot": "prompt-input-textarea", value: ctx.value, onChange: handleChange, onKeyDown: handleKeyDown, disabled: ctx.disabled, rows: rows, maxLength: ctx.maxLength, className: cn("w-full resize-none bg-transparent text-foreground placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed", promptInputTextareaSizeClass[ctx.size], className), ...props }));
|
|
119
|
+
}
|
|
120
|
+
PromptInputTextarea.displayName = "PromptInputTextarea";
|
|
121
|
+
function PromptInputToolbar({ className, ref, ...props }) {
|
|
122
|
+
const ctx = usePromptInputContext("PromptInputToolbar");
|
|
123
|
+
return (_jsx("div", { ref: ref, "data-slot": "prompt-input-toolbar", className: cn("flex items-center justify-between", promptInputToolbarSizeClass[ctx.size], className), ...props }));
|
|
124
|
+
}
|
|
125
|
+
PromptInputToolbar.displayName = "PromptInputToolbar";
|
|
126
|
+
function PromptInputActions({ className, ref, ...props }) {
|
|
127
|
+
return (_jsx("div", { ref: ref, "data-slot": "prompt-input-actions", className: cn("flex items-center gap-1", className), ...props }));
|
|
128
|
+
}
|
|
129
|
+
PromptInputActions.displayName = "PromptInputActions";
|
|
130
|
+
function PromptInputAction({ className, type = "button", disabled, ref, ...props }) {
|
|
131
|
+
const ctx = usePromptInputContext("PromptInputAction");
|
|
132
|
+
const resolvedDisabled = disabled ?? ctx.disabled;
|
|
133
|
+
return (_jsx("button", { ref: ref, type: type, "data-slot": "prompt-input-action", disabled: resolvedDisabled, className: cn("inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50", className), ...props }));
|
|
134
|
+
}
|
|
135
|
+
PromptInputAction.displayName = "PromptInputAction";
|
|
136
|
+
function PromptInputSubmit({ className, variant, size, children, loadingChildren, disabled, sendLabel = "Send message", stopLabel = "Stop generating", ...props }) {
|
|
137
|
+
const ctx = usePromptInputContext("PromptInputSubmit");
|
|
138
|
+
const isEmpty = ctx.value.trim().length === 0 ||
|
|
139
|
+
(ctx.maxLength !== undefined && ctx.value.length > ctx.maxLength);
|
|
140
|
+
const idleDisabled = ctx.disabled || isEmpty;
|
|
141
|
+
const resolvedDisabled = ctx.isLoading
|
|
142
|
+
? ctx.disabled
|
|
143
|
+
: (disabled ?? idleDisabled);
|
|
144
|
+
const iconSizeClass = ctx.size === "lg" ? "h-4 w-4" : ctx.size === "sm" ? "h-3.5 w-3.5" : "h-4 w-4";
|
|
145
|
+
// When the caller passes custom idle or loading content (e.g. text like
|
|
146
|
+
// "Generate"), the icon-only "icon" size becomes a fixed 40x40 square that
|
|
147
|
+
// clips the label. Widen to a text-friendly size in that case; the container
|
|
148
|
+
// size (sm/default/lg) controls the exact button height.
|
|
149
|
+
const hasCustomContent = children !== undefined || loadingChildren !== undefined;
|
|
150
|
+
const defaultButtonSize = hasCustomContent
|
|
151
|
+
? ctx.size === "sm"
|
|
152
|
+
? "sm"
|
|
153
|
+
: ctx.size === "lg"
|
|
154
|
+
? "lg"
|
|
155
|
+
: "default"
|
|
156
|
+
: "icon";
|
|
157
|
+
return (_jsx(Button, { type: "submit", "data-slot": "prompt-input-submit", "data-state": ctx.isLoading ? "loading" : "idle", "aria-label": ctx.isLoading ? stopLabel : sendLabel, variant: variant ?? (ctx.isLoading ? "secondary" : "default"), size: size ?? defaultButtonSize, disabled: resolvedDisabled, className: cn("shrink-0", className), ...props, children: ctx.isLoading
|
|
158
|
+
? (loadingChildren ?? (_jsx(Square, { "aria-hidden": "true", className: cn(iconSizeClass, "fill-current") })))
|
|
159
|
+
: (children ?? (_jsx(ArrowUp, { "aria-hidden": "true", className: iconSizeClass }))) }));
|
|
160
|
+
}
|
|
161
|
+
PromptInputSubmit.displayName = "PromptInputSubmit";
|
|
162
|
+
function PromptInputCharCount({ className, warnAtPercent = 90, render, ref, ...props }) {
|
|
163
|
+
const ctx = usePromptInputContext("PromptInputCharCount");
|
|
164
|
+
const length = ctx.value.length;
|
|
165
|
+
const maxLength = ctx.maxLength;
|
|
166
|
+
const remaining = maxLength !== undefined ? maxLength - length : undefined;
|
|
167
|
+
const isOverLimit = maxLength !== undefined && length > maxLength;
|
|
168
|
+
const isNearLimit = maxLength !== undefined && length >= (maxLength * warnAtPercent) / 100;
|
|
169
|
+
if (maxLength === undefined && render === undefined) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const content = render !== undefined
|
|
173
|
+
? render({ length, maxLength, remaining, isOverLimit, isNearLimit })
|
|
174
|
+
: `${length}/${maxLength}`;
|
|
175
|
+
return (_jsx("span", { ref: ref, "data-slot": "prompt-input-char-count", "data-over-limit": isOverLimit ? "true" : "false", "data-near-limit": isNearLimit ? "true" : "false", "aria-live": "polite", className: cn("tabular-nums text-xs text-muted-foreground", isNearLimit && !isOverLimit && "text-amber-600 dark:text-amber-400", isOverLimit && "text-destructive", className), ...props, children: content }));
|
|
176
|
+
}
|
|
177
|
+
PromptInputCharCount.displayName = "PromptInputCharCount";
|
|
178
|
+
function PromptInputHint({ className, ref, ...props }) {
|
|
179
|
+
return (_jsx("span", { ref: ref, "data-slot": "prompt-input-hint", className: cn("text-xs text-muted-foreground", className), ...props }));
|
|
180
|
+
}
|
|
181
|
+
PromptInputHint.displayName = "PromptInputHint";
|
|
182
|
+
/* ------------------------------------------------------------------ */
|
|
183
|
+
/* Utility hook: consumers who want to reach into the parent state */
|
|
184
|
+
/* ------------------------------------------------------------------ */
|
|
185
|
+
/**
|
|
186
|
+
* Read the current `<PromptInput>` state from inside a custom child.
|
|
187
|
+
* Only callable inside a `<PromptInput>` tree.
|
|
188
|
+
*/
|
|
189
|
+
function usePromptInput() {
|
|
190
|
+
return usePromptInputContext("usePromptInput");
|
|
191
|
+
}
|
|
192
|
+
export { PromptInput, PromptInputTextarea, PromptInputToolbar, PromptInputActions, PromptInputAction, PromptInputSubmit, PromptInputCharCount, PromptInputHint, usePromptInput, promptInputSizeIds, promptInputVariantIds, };
|
|
193
|
+
//# sourceMappingURL=prompt-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-input.js","sourceRoot":"","sources":["../../../../src/components/ui/prompt-input/prompt-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type InputHTMLAttributes, type ReactNode } from "react";
|
|
1
|
+
import { type InputHTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
|
|
2
2
|
import { type ChipVariant } from "../../ui/chip/chip-variants";
|
|
3
3
|
import { tagsInputSizeIds, type TagsInputSize } from "./tags-input-variants";
|
|
4
4
|
declare const tagsInputContainerVariants: (props?: ({
|
|
@@ -6,6 +6,8 @@ declare const tagsInputContainerVariants: (props?: ({
|
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export type TagsInputValidator = (tag: string, existing: readonly string[]) => boolean;
|
|
8
8
|
export interface TagsInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "size" | "onChange"> {
|
|
9
|
+
/** Ref exposing the imperative `TagsInputHandle` (focus/clear). */
|
|
10
|
+
ref?: Ref<TagsInputHandle>;
|
|
9
11
|
/** Controlled list of tags. Provide alongside `onValueChange`. */
|
|
10
12
|
value?: readonly string[];
|
|
11
13
|
/** Initial tags for uncontrolled usage. */
|
|
@@ -61,7 +63,11 @@ export interface TagsInputHandle {
|
|
|
61
63
|
/** Programmatically clear all tags (also clears the draft). */
|
|
62
64
|
clear: () => void;
|
|
63
65
|
}
|
|
64
|
-
|
|
66
|
+
declare function TagsInput({ ref, value, defaultValue, onValueChange, onTagAdd, onTagRemove, size, chipVariant, chipLeading, delimiters, maxTags, allowDuplicates, trim, disabled, invalid, placeholder, ariaLabel, validate, className, inputClassName, renderTag, id, name, onKeyDown, onPaste, onFocus, onBlur, ...inputProps }: TagsInputProps): ReactElement;
|
|
67
|
+
declare namespace TagsInput {
|
|
68
|
+
var displayName: string;
|
|
69
|
+
}
|
|
70
|
+
export { TagsInput };
|
|
65
71
|
export { tagsInputContainerVariants, tagsInputSizeIds };
|
|
66
72
|
export type { TagsInputSize };
|
|
67
73
|
export default TagsInput;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useCallback, useId, useImperativeHandle, useMemo, useRef, useState, } from "react";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
5
|
import { cn } from "../../../lib/utils";
|
|
6
6
|
import { Chip } from "../../ui/chip/chip";
|
|
@@ -28,7 +28,7 @@ function defaultValidator(tag, existing) {
|
|
|
28
28
|
const lower = tag.toLowerCase();
|
|
29
29
|
return !existing.some((t) => t.toLowerCase() === lower);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function TagsInput({ ref, value, defaultValue, onValueChange, onTagAdd, onTagRemove, size = "default", chipVariant = "secondary", chipLeading, delimiters = ["Enter", ","], maxTags, allowDuplicates = false, trim = true, disabled = false, invalid = false, placeholder, ariaLabel, validate, className, inputClassName, renderTag, id, name, onKeyDown, onPaste, onFocus, onBlur, ...inputProps }) {
|
|
32
32
|
const isControlled = value !== undefined;
|
|
33
33
|
const [internalTags, setInternalTags] = useState(() => defaultValue ? [...defaultValue] : []);
|
|
34
34
|
const tags = isControlled ? value : internalTags;
|
|
@@ -41,7 +41,7 @@ function TagsInputImpl({ value, defaultValue, onValueChange, onTagAdd, onTagRemo
|
|
|
41
41
|
setInternalTags(next);
|
|
42
42
|
onValueChange?.(next);
|
|
43
43
|
}, [isControlled, onValueChange]);
|
|
44
|
-
useImperativeHandle(
|
|
44
|
+
useImperativeHandle(ref, () => ({
|
|
45
45
|
focus: () => inputRef.current?.focus(),
|
|
46
46
|
clear: () => {
|
|
47
47
|
commitTags([]);
|
|
@@ -141,8 +141,8 @@ function TagsInputImpl({ value, defaultValue, onValueChange, onTagAdd, onTagRemo
|
|
|
141
141
|
return (_jsx(Chip, { size: sizeToChipSize[size], variant: chipVariant, removable: !disabled, onRemove: remove, disabled: disabled, leading: chipLeading, "data-slot": "tags-input-tag", removeLabel: `Remove ${tag}`, children: tag }, `${tag}-${index}`));
|
|
142
142
|
}), _jsx("input", { ...inputProps, ref: inputRef, id: inputId, name: name, type: "text", disabled: disabled, "aria-label": ariaLabel, "aria-invalid": invalid || undefined, value: draft, onChange: (e) => setDraft(e.target.value), onKeyDown: handleKeyDown, onPaste: handlePaste, onFocus: onFocus, onBlur: onBlur, placeholder: tags.length === 0 ? placeholder : undefined, className: cn("min-w-24 flex-1 bg-transparent px-2 outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed", inputClassName) })] }));
|
|
143
143
|
}
|
|
144
|
-
export const TagsInput = forwardRef(TagsInputImpl);
|
|
145
144
|
TagsInput.displayName = "TagsInput";
|
|
145
|
+
export { TagsInput };
|
|
146
146
|
export { tagsInputContainerVariants, tagsInputSizeIds };
|
|
147
147
|
export default TagsInput;
|
|
148
148
|
//# sourceMappingURL=tags-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags-input.js","sourceRoot":"","sources":["../../../../src/components/ui/tags-input/tags-input.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"tags-input.js","sourceRoot":"","sources":["../../../../src/components/ui/tags-input/tags-input.tsx"],"names":[],"mappings":"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"}
|