@schemavaults/ui 0.18.0 → 0.20.4

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.
@@ -0,0 +1,4 @@
1
+ export declare const copyButtonVariantIds: readonly ["default", "outline", "ghost", "subtle", "brand"];
2
+ export type CopyButtonVariant = (typeof copyButtonVariantIds)[number];
3
+ export declare const copyButtonSizeIds: readonly ["sm", "md", "lg", "icon-sm", "icon-md", "icon-lg"];
4
+ export type CopyButtonSize = (typeof copyButtonSizeIds)[number];
@@ -0,0 +1,16 @@
1
+ export const copyButtonVariantIds = [
2
+ "default",
3
+ "outline",
4
+ "ghost",
5
+ "subtle",
6
+ "brand",
7
+ ];
8
+ export const copyButtonSizeIds = [
9
+ "sm",
10
+ "md",
11
+ "lg",
12
+ "icon-sm",
13
+ "icon-md",
14
+ "icon-lg",
15
+ ];
16
+ //# sourceMappingURL=copy-button-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/copy-button/copy-button-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;CAC6B,CAAC;AAGvC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,SAAS;IACT,SAAS;CAC2B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import { type ButtonHTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
3
+ import { type CopyButtonSize, type CopyButtonVariant, copyButtonSizeIds, copyButtonVariantIds } from "./copy-button-variants";
4
+ declare const copyButtonVariants: (props?: ({
5
+ variant?: "default" | "ghost" | "outline" | "brand" | "subtle" | null | undefined;
6
+ size?: "sm" | "lg" | "md" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "onCopy">, VariantProps<typeof copyButtonVariants> {
9
+ /**
10
+ * The text value to copy to the clipboard.
11
+ */
12
+ value: string;
13
+ /**
14
+ * Duration, in milliseconds, that the "copied" state is shown after a
15
+ * successful copy before reverting to the idle state. Defaults to 2000.
16
+ */
17
+ resetDelay?: number;
18
+ /**
19
+ * Optional label rendered next to the icon in the idle state. When provided,
20
+ * the button automatically switches to a labelled layout. Use an "icon-*"
21
+ * size to render an icon-only button.
22
+ */
23
+ label?: ReactNode;
24
+ /**
25
+ * Optional label rendered next to the icon in the "copied" state. Defaults
26
+ * to "Copied!" when `label` is provided.
27
+ */
28
+ copiedLabel?: ReactNode;
29
+ /**
30
+ * Accessible label announced to screen readers in the idle state. Defaults
31
+ * to "Copy to clipboard".
32
+ */
33
+ ariaLabel?: string;
34
+ /**
35
+ * Accessible label announced to screen readers in the copied state. Defaults
36
+ * to "Copied to clipboard".
37
+ */
38
+ copiedAriaLabel?: string;
39
+ /**
40
+ * Callback fired after a copy attempt. Receives the success flag and the
41
+ * original value that was attempted to be copied.
42
+ */
43
+ onCopy?: (success: boolean, value: string) => void;
44
+ /**
45
+ * Optional override for the idle icon. Defaults to `<Copy />` from lucide.
46
+ */
47
+ icon?: ReactNode;
48
+ /**
49
+ * Optional override for the success icon. Defaults to `<Check />` from
50
+ * lucide.
51
+ */
52
+ copiedIcon?: ReactNode;
53
+ ref?: Ref<HTMLButtonElement>;
54
+ }
55
+ declare function CopyButton({ value, variant, size, resetDelay, label, copiedLabel, ariaLabel, copiedAriaLabel, onCopy, icon, copiedIcon, className, onClick, disabled, type, ref, ...props }: CopyButtonProps): ReactElement;
56
+ declare namespace CopyButton {
57
+ var displayName: string;
58
+ }
59
+ export { CopyButton, copyButtonVariants, copyButtonSizeIds, copyButtonVariantIds, };
60
+ export type { CopyButtonSize, CopyButtonVariant };
61
+ export default CopyButton;
@@ -0,0 +1,69 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { Check, Copy } from "lucide-react";
5
+ import { useCallback, useEffect, useRef, useState, } from "react";
6
+ import { cn } from "../../../lib/utils";
7
+ import { copyToClipboard } from "../../../lib/copyToClipboard";
8
+ import { copyButtonSizeIds, copyButtonVariantIds, } from "./copy-button-variants";
9
+ const copyButtonVariants = cva("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 data-[copied=true]:bg-primary/90",
13
+ outline: "border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground data-[copied=true]:border-schemavaults-brand-blue data-[copied=true]:text-schemavaults-brand-blue",
14
+ ghost: "text-muted-foreground hover:bg-accent hover:text-accent-foreground data-[copied=true]:text-schemavaults-brand-blue",
15
+ subtle: "bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground data-[copied=true]:text-schemavaults-brand-blue",
16
+ brand: "bg-schemavaults-brand-blue text-primary-foreground hover:bg-schemavaults-brand-blue/90",
17
+ },
18
+ size: {
19
+ sm: "h-8 rounded-md px-2.5 text-xs [&_svg]:size-3.5",
20
+ md: "h-9 px-3 text-sm [&_svg]:size-4",
21
+ lg: "h-10 rounded-md px-4 text-sm [&_svg]:size-4",
22
+ "icon-sm": "h-7 w-7 rounded-md [&_svg]:size-3.5",
23
+ "icon-md": "h-9 w-9 [&_svg]:size-4",
24
+ "icon-lg": "h-10 w-10 rounded-md [&_svg]:size-[18px]",
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ variant: "ghost",
29
+ size: "icon-md",
30
+ },
31
+ });
32
+ function CopyButton({ value, variant, size, resetDelay = 2000, label, copiedLabel, ariaLabel = "Copy to clipboard", copiedAriaLabel = "Copied to clipboard", onCopy, icon, copiedIcon, className, onClick, disabled, type = "button", ref, ...props }) {
33
+ const [copied, setCopied] = useState(false);
34
+ const timeoutRef = useRef(null);
35
+ useEffect(() => {
36
+ return () => {
37
+ if (timeoutRef.current !== null) {
38
+ clearTimeout(timeoutRef.current);
39
+ timeoutRef.current = null;
40
+ }
41
+ };
42
+ }, []);
43
+ const handleClick = useCallback(async (event) => {
44
+ onClick?.(event);
45
+ if (event.defaultPrevented)
46
+ return;
47
+ const success = await copyToClipboard(value);
48
+ onCopy?.(success, value);
49
+ if (!success)
50
+ return;
51
+ setCopied(true);
52
+ if (timeoutRef.current !== null)
53
+ clearTimeout(timeoutRef.current);
54
+ timeoutRef.current = setTimeout(() => {
55
+ setCopied(false);
56
+ timeoutRef.current = null;
57
+ }, resetDelay);
58
+ }, [onClick, onCopy, resetDelay, value]);
59
+ const resolvedIdleIcon = icon ?? _jsx(Copy, { "aria-hidden": "true" });
60
+ const resolvedCopiedIcon = copiedIcon ?? (_jsx(Check, { "aria-hidden": "true" }));
61
+ const hasLabel = label !== undefined && label !== null;
62
+ const effectiveCopiedLabel = copiedLabel !== undefined ? copiedLabel : hasLabel ? "Copied!" : null;
63
+ const currentAriaLabel = copied ? copiedAriaLabel : ariaLabel;
64
+ return (_jsxs("button", { ref: ref, type: type, "data-slot": "copy-button", "data-copied": copied ? "true" : "false", "aria-label": currentAriaLabel, "aria-live": "polite", disabled: disabled, onClick: handleClick, className: cn(copyButtonVariants({ variant, size }), className), ...props, children: [_jsx("span", { "aria-hidden": "true", className: "inline-flex items-center justify-center", children: copied ? resolvedCopiedIcon : resolvedIdleIcon }), hasLabel ? (_jsx("span", { children: copied ? effectiveCopiedLabel : label })) : null] }));
65
+ }
66
+ CopyButton.displayName = "CopyButton";
67
+ export { CopyButton, copyButtonVariants, copyButtonSizeIds, copyButtonVariantIds, };
68
+ export default CopyButton;
69
+ //# sourceMappingURL=copy-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button.js","sourceRoot":"","sources":["../../../../src/components/ui/copy-button/copy-button.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { CopyButton, CopyButton as default, copyButtonVariants, } from "./copy-button";
2
+ export type { CopyButtonProps } from "./copy-button";
3
+ export { copyButtonVariantIds, copyButtonSizeIds, } from "./copy-button-variants";
4
+ export type { CopyButtonVariant, CopyButtonSize, } from "./copy-button-variants";
@@ -0,0 +1,3 @@
1
+ export { CopyButton, CopyButton as default, copyButtonVariants, } from "./copy-button";
2
+ export { copyButtonVariantIds, copyButtonSizeIds, } from "./copy-button-variants";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/copy-button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,IAAI,OAAO,EACrB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC"}
@@ -100,11 +100,15 @@ export * from "./breadcrumb";
100
100
  export type * from "./breadcrumb";
101
101
  export * from "./kbd";
102
102
  export type * from "./kbd";
103
+ export * from "./copy-button";
104
+ export type * from "./copy-button";
103
105
  export * from "./spinner";
104
106
  export type * from "./spinner";
105
107
  export * from "./banner";
106
108
  export type * from "./banner";
107
109
  export * from "./empty-state";
108
110
  export type * from "./empty-state";
111
+ export * from "./stat-card";
112
+ export type * from "./stat-card";
109
113
  export * from "./timeline";
110
114
  export type * from "./timeline";
@@ -49,8 +49,10 @@ export * from "./switch";
49
49
  export * from "./progress-bar";
50
50
  export * from "./breadcrumb";
51
51
  export * from "./kbd";
52
+ export * from "./copy-button";
52
53
  export * from "./spinner";
53
54
  export * from "./banner";
54
55
  export * from "./empty-state";
56
+ export * from "./stat-card";
55
57
  export * from "./timeline";
56
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,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,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,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,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,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,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,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,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,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,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,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,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"}
@@ -0,0 +1,2 @@
1
+ export * from "./stat-card";
2
+ export type * from "./stat-card";
@@ -0,0 +1,2 @@
1
+ export * from "./stat-card";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/stat-card/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { HTMLAttributes, ReactElement, ReactNode, Ref } from "react";
3
+ export declare const statCardVariantIds: ["default", "muted", "primary", "destructive", "warning"];
4
+ export type StatCardVariantId = (typeof statCardVariantIds)[number];
5
+ export declare const statCardSizeIds: ["sm", "md", "lg"];
6
+ export type StatCardSizeId = (typeof statCardSizeIds)[number];
7
+ declare const statCardVariants: (props?: ({
8
+ variant?: "default" | "destructive" | "warning" | "primary" | "muted" | null | undefined;
9
+ size?: "sm" | "lg" | "md" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ export interface StatCardProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof statCardVariants> {
12
+ ref?: Ref<HTMLDivElement>;
13
+ }
14
+ declare function StatCard({ className, variant, size, ref, ...props }: StatCardProps): ReactElement;
15
+ declare namespace StatCard {
16
+ var displayName: string;
17
+ }
18
+ export interface StatCardHeaderProps extends HTMLAttributes<HTMLDivElement> {
19
+ ref?: Ref<HTMLDivElement>;
20
+ }
21
+ declare function StatCardHeader({ className, ref, ...props }: StatCardHeaderProps): ReactElement;
22
+ declare namespace StatCardHeader {
23
+ var displayName: string;
24
+ }
25
+ export interface StatCardLabelProps extends HTMLAttributes<HTMLParagraphElement> {
26
+ size?: StatCardSizeId;
27
+ ref?: Ref<HTMLParagraphElement>;
28
+ }
29
+ declare function StatCardLabel({ className, size, ref, ...props }: StatCardLabelProps): ReactElement;
30
+ declare namespace StatCardLabel {
31
+ var displayName: string;
32
+ }
33
+ declare const statCardIconVariants: (props?: ({
34
+ variant?: "default" | "destructive" | "warning" | "primary" | "muted" | null | undefined;
35
+ size?: "sm" | "lg" | "md" | null | undefined;
36
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
37
+ export interface StatCardIconProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof statCardIconVariants> {
38
+ ref?: Ref<HTMLDivElement>;
39
+ }
40
+ declare function StatCardIcon({ className, variant, size, ref, ...props }: StatCardIconProps): ReactElement;
41
+ declare namespace StatCardIcon {
42
+ var displayName: string;
43
+ }
44
+ export interface StatCardValueProps extends HTMLAttributes<HTMLDivElement> {
45
+ size?: StatCardSizeId;
46
+ loading?: boolean;
47
+ ref?: Ref<HTMLDivElement>;
48
+ }
49
+ declare function StatCardValue({ className, size, loading, children, ref, ...props }: StatCardValueProps): ReactElement;
50
+ declare namespace StatCardValue {
51
+ var displayName: string;
52
+ }
53
+ export interface StatCardDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {
54
+ ref?: Ref<HTMLParagraphElement>;
55
+ }
56
+ declare function StatCardDescription({ className, ref, ...props }: StatCardDescriptionProps): ReactElement;
57
+ declare namespace StatCardDescription {
58
+ var displayName: string;
59
+ }
60
+ export declare const statCardTrendDirections: ["up", "down", "neutral"];
61
+ export type StatCardTrendDirection = (typeof statCardTrendDirections)[number];
62
+ export type StatCardTrendIntent = "positive" | "negative" | "neutral";
63
+ declare const statCardTrendVariants: (props?: ({
64
+ intent?: "positive" | "neutral" | "negative" | null | undefined;
65
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
66
+ export interface StatCardTrendProps extends HTMLAttributes<HTMLSpanElement> {
67
+ direction?: StatCardTrendDirection;
68
+ /**
69
+ * Override the colour intent. Defaults to mapping `up` -> positive,
70
+ * `down` -> negative, `neutral` -> neutral. Useful when an upward trend
71
+ * is actually bad (e.g. error rate).
72
+ */
73
+ intent?: StatCardTrendIntent;
74
+ /**
75
+ * Optional icon shown before the children. If omitted, a default arrow
76
+ * icon for the direction is rendered.
77
+ */
78
+ icon?: ReactNode;
79
+ /**
80
+ * If true, hide the default arrow icon entirely.
81
+ */
82
+ hideIcon?: boolean;
83
+ ref?: Ref<HTMLSpanElement>;
84
+ }
85
+ declare function StatCardTrend({ className, direction, intent, icon, hideIcon, children, ref, ...props }: StatCardTrendProps): ReactElement;
86
+ declare namespace StatCardTrend {
87
+ var displayName: string;
88
+ }
89
+ export interface StatCardFooterProps extends HTMLAttributes<HTMLDivElement> {
90
+ ref?: Ref<HTMLDivElement>;
91
+ }
92
+ declare function StatCardFooter({ className, ref, ...props }: StatCardFooterProps): ReactElement;
93
+ declare namespace StatCardFooter {
94
+ var displayName: string;
95
+ }
96
+ export { StatCard, StatCardHeader, StatCardLabel, StatCardIcon, StatCardValue, StatCardDescription, StatCardTrend, StatCardFooter, statCardVariants, statCardIconVariants, statCardTrendVariants, };
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../../../lib/utils";
5
+ import { Skeleton } from "../skeleton/skeleton";
6
+ export const statCardVariantIds = [
7
+ "default",
8
+ "muted",
9
+ "primary",
10
+ "destructive",
11
+ "warning",
12
+ ];
13
+ export const statCardSizeIds = ["sm", "md", "lg"];
14
+ const statCardVariants = cva("relative flex w-full flex-col rounded-lg border shadow-sm transition-colors", {
15
+ variants: {
16
+ variant: {
17
+ default: "bg-card text-card-foreground border-border",
18
+ muted: "bg-muted/40 text-foreground border-border",
19
+ primary: "bg-primary/5 text-foreground border-primary/30 dark:bg-primary/10",
20
+ destructive: "bg-destructive/5 text-foreground border-destructive/40 dark:border-destructive",
21
+ warning: "bg-warning/5 text-foreground border-warning/40 dark:border-warning",
22
+ },
23
+ size: {
24
+ sm: "gap-1 p-3",
25
+ md: "gap-1.5 p-4",
26
+ lg: "gap-2 p-6",
27
+ },
28
+ },
29
+ defaultVariants: {
30
+ variant: "default",
31
+ size: "md",
32
+ },
33
+ });
34
+ function StatCard({ className, variant, size, ref, ...props }) {
35
+ return (_jsx("div", { ref: ref, "data-slot": "stat-card", className: cn(statCardVariants({ variant, size }), className), ...props }));
36
+ }
37
+ StatCard.displayName = "StatCard";
38
+ function StatCardHeader({ className, ref, ...props }) {
39
+ return (_jsx("div", { ref: ref, "data-slot": "stat-card-header", className: cn("flex w-full items-start justify-between gap-2", className), ...props }));
40
+ }
41
+ StatCardHeader.displayName = "StatCardHeader";
42
+ const statCardLabelSizes = {
43
+ sm: "text-xs",
44
+ md: "text-sm",
45
+ lg: "text-sm",
46
+ };
47
+ function StatCardLabel({ className, size = "md", ref, ...props }) {
48
+ return (_jsx("p", { ref: ref, "data-slot": "stat-card-label", className: cn("font-medium text-muted-foreground leading-none", statCardLabelSizes[size], className), ...props }));
49
+ }
50
+ StatCardLabel.displayName = "StatCardLabel";
51
+ const statCardIconVariants = cva("flex shrink-0 items-center justify-center rounded-md [&>svg]:shrink-0", {
52
+ variants: {
53
+ variant: {
54
+ default: "bg-muted text-muted-foreground",
55
+ muted: "bg-background text-muted-foreground",
56
+ primary: "bg-primary/10 text-primary dark:text-primary-foreground",
57
+ destructive: "bg-destructive/10 text-destructive",
58
+ warning: "bg-warning/15 text-warning",
59
+ },
60
+ size: {
61
+ sm: "size-7 [&>svg]:size-4",
62
+ md: "size-9 [&>svg]:size-5",
63
+ lg: "size-11 [&>svg]:size-6",
64
+ },
65
+ },
66
+ defaultVariants: {
67
+ variant: "default",
68
+ size: "md",
69
+ },
70
+ });
71
+ function StatCardIcon({ className, variant, size, ref, ...props }) {
72
+ return (_jsx("div", { ref: ref, "aria-hidden": "true", "data-slot": "stat-card-icon", className: cn(statCardIconVariants({ variant, size }), className), ...props }));
73
+ }
74
+ StatCardIcon.displayName = "StatCardIcon";
75
+ const statCardValueSizes = {
76
+ sm: "text-xl",
77
+ md: "text-2xl",
78
+ lg: "text-3xl",
79
+ };
80
+ function StatCardValue({ className, size = "md", loading = false, children, ref, ...props }) {
81
+ if (loading) {
82
+ return (_jsx(Skeleton, { "data-slot": "stat-card-value-skeleton", className: cn("mt-1", size === "sm" && "h-6 w-16", size === "md" && "h-7 w-20", size === "lg" && "h-9 w-28", className) }));
83
+ }
84
+ return (_jsx("div", { ref: ref, "data-slot": "stat-card-value", className: cn("font-semibold tabular-nums leading-tight tracking-tight", statCardValueSizes[size], className), ...props, children: children }));
85
+ }
86
+ StatCardValue.displayName = "StatCardValue";
87
+ function StatCardDescription({ className, ref, ...props }) {
88
+ return (_jsx("p", { ref: ref, "data-slot": "stat-card-description", className: cn("text-xs text-muted-foreground leading-snug", className), ...props }));
89
+ }
90
+ StatCardDescription.displayName = "StatCardDescription";
91
+ export const statCardTrendDirections = [
92
+ "up",
93
+ "down",
94
+ "neutral",
95
+ ];
96
+ const statCardTrendVariants = cva("inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-xs font-medium tabular-nums [&>svg]:size-3", {
97
+ variants: {
98
+ intent: {
99
+ positive: "bg-primary/10 text-primary dark:bg-primary/20 dark:text-primary-foreground",
100
+ negative: "bg-destructive/10 text-destructive",
101
+ neutral: "bg-muted text-muted-foreground",
102
+ },
103
+ },
104
+ defaultVariants: {
105
+ intent: "neutral",
106
+ },
107
+ });
108
+ function defaultIntentForDirection(direction) {
109
+ switch (direction) {
110
+ case "up":
111
+ return "positive";
112
+ case "down":
113
+ return "negative";
114
+ default:
115
+ return "neutral";
116
+ }
117
+ }
118
+ function DefaultTrendIcon({ direction, }) {
119
+ if (direction === "up") {
120
+ return (_jsx("svg", { viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 7.5L6 4.5L9 7.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
121
+ }
122
+ if (direction === "down") {
123
+ return (_jsx("svg", { viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 4.5L6 7.5L9 4.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
124
+ }
125
+ return (_jsx("svg", { viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 6H9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
126
+ }
127
+ function StatCardTrend({ className, direction = "neutral", intent, icon, hideIcon = false, children, ref, ...props }) {
128
+ const resolvedIntent = intent ?? defaultIntentForDirection(direction);
129
+ return (_jsxs("span", { ref: ref, "data-slot": "stat-card-trend", "data-direction": direction, className: cn(statCardTrendVariants({ intent: resolvedIntent }), className), ...props, children: [hideIcon ? null : (icon ?? _jsx(DefaultTrendIcon, { direction: direction })), children] }));
130
+ }
131
+ StatCardTrend.displayName = "StatCardTrend";
132
+ function StatCardFooter({ className, ref, ...props }) {
133
+ return (_jsx("div", { ref: ref, "data-slot": "stat-card-footer", className: cn("mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground", className), ...props }));
134
+ }
135
+ StatCardFooter.displayName = "StatCardFooter";
136
+ export { StatCard, StatCardHeader, StatCardLabel, StatCardIcon, StatCardValue, StatCardDescription, StatCardTrend, StatCardFooter, statCardVariants, statCardIconVariants, statCardTrendVariants, };
137
+ //# sourceMappingURL=stat-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../../../src/components/ui/stat-card/stat-card.tsx"],"names":[],"mappings":"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"}
@@ -2,13 +2,18 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { AnimatePresence, m } from "framer-motion";
4
4
  import { useStepperContext } from "./useStepperContext";
5
+ // Caller contract: <Stepper> (which renders <StepperBody />) must be rendered
6
+ // inside a parent that establishes a bounded vertical flex column — e.g.
7
+ // <div className="h-full flex flex-col"> or a `grow flex flex-col` subtree
8
+ // inside a flex-column ancestor with a defined height. Without a bounded
9
+ // ancestor, `flex-1` has nothing to grow into and the body collapses to 0.
5
10
  export function StepperBody() {
6
11
  const stepperContext = useStepperContext();
7
12
  if (!stepperContext) {
8
13
  throw new Error("StepperFooter not within StepperContext!");
9
14
  }
10
15
  const { activeStep, steps } = stepperContext;
11
- return (_jsx("div", { className: "\n flex flex-col\n w-full h-[40vh]\n justify-start items-start\n overflow-x-hidden\n schemavaults-stepper-body\n no-scrollbar\n ", children: _jsx(AnimatePresence, { initial: false, mode: "wait", children: steps.map((step, step_index) => {
16
+ return (_jsx("div", { className: "\n flex flex-col\n w-full flex-1 min-h-0\n justify-start items-start\n overflow-x-hidden\n schemavaults-stepper-body\n no-scrollbar\n ", children: _jsx(AnimatePresence, { initial: false, mode: "wait", children: steps.map((step, step_index) => {
12
17
  if (step_index !== activeStep) {
13
18
  return null;
14
19
  }
@@ -17,8 +22,9 @@ export function StepperBody() {
17
22
  // const activeStepDataRef = ActiveStep.data_ref;
18
23
  return (_jsx(m.div, { initial: { opacity: 0, x: activeStep > step_index ? 100 : -100 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: activeStep > step_index ? -100 : 100 }, transition: { duration: 0.3 }, style: {
19
24
  width: "100%",
20
- overflowY: "scroll",
21
- height: "40vh",
25
+ overflowY: "auto",
26
+ minHeight: 0,
27
+ flex: 1,
22
28
  position: "relative",
23
29
  top: 0,
24
30
  left: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"stepper-body.js","sourceRoot":"","sources":["../../../../src/components/ui/stepper/stepper-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxD,MAAM,UAAU,WAAW;IACzB,MAAM,cAAc,GAAG,iBAAiB,EAAgB,CAAC;IACzD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;IAE7C,OAAO,CACL,cACE,SAAS,EAAC,iLAOT,YAED,KAAC,eAAe,IAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,UAAkB,EAAa,EAAE;gBACjD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,UAAU,GAAuB,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzD,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,CAAC;gBAErD,iDAAiD;gBAEjD,OAAO,CACL,KAAC,CAAC,CAAC,GAAG,IAEJ,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAChE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAC7B,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC7D,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC7B,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM;wBACb,SAAS,EAAE,QAAQ;wBACnB,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE,UAAU;wBACpB,GAAG,EAAE,CAAC;wBACN,IAAI,EAAE,CAAC;qBACR,YAED,KAAC,mBAAmB,IAElB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,oBAAoB,IAH1B,QAAQ,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,CAK3D,IApBG,QAAQ,UAAU,CAAC,EAAE,EAAE,CAqBtB,CACT,CAAC;YACJ,CAAC,CAAC,GACc,GACd,CACP,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"stepper-body.js","sourceRoot":"","sources":["../../../../src/components/ui/stepper/stepper-body.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxD,8EAA8E;AAC9E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,UAAU,WAAW;IACzB,MAAM,cAAc,GAAG,iBAAiB,EAAgB,CAAC;IACzD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;IAE7C,OAAO,CACL,cACE,SAAS,EAAC,uLAOT,YAED,KAAC,eAAe,IAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,UAAkB,EAAa,EAAE;gBACjD,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,UAAU,GAAuB,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzD,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,CAAC;gBAErD,iDAAiD;gBAEjD,OAAO,CACL,KAAC,CAAC,CAAC,GAAG,IAEJ,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAChE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAC7B,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC7D,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC7B,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM;wBACb,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,CAAC;wBACZ,IAAI,EAAE,CAAC;wBACP,QAAQ,EAAE,UAAU;wBACpB,GAAG,EAAE,CAAC;wBACN,IAAI,EAAE,CAAC;qBACR,YAED,KAAC,mBAAmB,IAElB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,oBAAoB,IAH1B,QAAQ,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,CAK3D,IArBG,QAAQ,UAAU,CAAC,EAAE,EAAE,CAsBtB,CACT,CAAC;YACJ,CAAC,CAAC,GACc,GACd,CACP,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -22,6 +22,6 @@ export function Stepper({ steps, state, footer_decorator, setCurrentStep, getCur
22
22
  getCurrentStep,
23
23
  });
24
24
  }, [state, canGoBack, getCurrentStep]);
25
- return (_jsx(StepperProvider, { steps: steps, activeStep: activeStep, canGoNext: canGoNextFn, canGoBack: canGoBackFn, setCurrentStep: setCurrentStep, children: _jsxs("div", { className: "flex flex-col w-full grow gap-2", children: [_jsx(StepsIndicator, {}), _jsx(Separator, {}), _jsx(StepperBody, {}), _jsx(Separator, {}), _jsx(StepperFooter, { decorator: footer_decorator, FinalStepSubmitButton: FinalStepSubmitButton, state: state, getCurrentStep: getCurrentStep })] }) }, `stepper-${id}`));
25
+ return (_jsx(StepperProvider, { steps: steps, activeStep: activeStep, canGoNext: canGoNextFn, canGoBack: canGoBackFn, setCurrentStep: setCurrentStep, children: _jsxs("div", { className: "flex flex-col w-full grow min-h-0 gap-2", children: [_jsx(StepsIndicator, {}), _jsx(Separator, {}), _jsx(StepperBody, {}), _jsx(Separator, {}), _jsx(StepperFooter, { decorator: footer_decorator, FinalStepSubmitButton: FinalStepSubmitButton, state: state, getCurrentStep: getCurrentStep })] }) }, `stepper-${id}`));
26
26
  }
27
27
  //# sourceMappingURL=stepper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../../src/components/ui/stepper/stepper.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAqB,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAKzC,MAAM,UAAU,OAAO,CAGrB,EACA,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,EAAE,EACF,SAAS,EACT,SAAS,EACT,qBAAqB,GACkB;IACvC,MAAM,UAAU,GAAW,OAAO,CAAC,GAAW,EAAE;QAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAY,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,SAAS,CAAC;YACf,KAAK;YACL,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAY,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,SAAS,CAAC;YACf,KAAK;YACL,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvC,OAAO,CACL,KAAC,eAAe,IAEd,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,WAAW,EACtB,cAAc,EAAE,cAAc,YAE9B,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,cAAc,KAAG,EAElB,KAAC,SAAS,KAAG,EAEb,KAAC,WAAW,KAAiB,EAE7B,KAAC,SAAS,KAAG,EAEb,KAAC,aAAa,IACZ,SAAS,EAAE,gBAAgB,EAC3B,qBAAqB,EAAE,qBAAqB,EAC5C,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,GAC9B,IACE,IAtBD,WAAW,EAAE,EAAE,CAuBJ,CACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../../src/components/ui/stepper/stepper.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAqB,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAKzC,MAAM,UAAU,OAAO,CAGrB,EACA,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,EAAE,EACF,SAAS,EACT,SAAS,EACT,qBAAqB,GACkB;IACvC,MAAM,UAAU,GAAW,OAAO,CAAC,GAAW,EAAE;QAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAY,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,SAAS,CAAC;YACf,KAAK;YACL,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAY,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,SAAS,CAAC;YACf,KAAK;YACL,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvC,OAAO,CACL,KAAC,eAAe,IAEd,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,WAAW,EACtB,cAAc,EAAE,cAAc,YAE9B,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,cAAc,KAAG,EAElB,KAAC,SAAS,KAAG,EAEb,KAAC,WAAW,KAAiB,EAE7B,KAAC,SAAS,KAAG,EAEb,KAAC,aAAa,IACZ,SAAS,EAAE,gBAAgB,EAC3B,qBAAqB,EAAE,qBAAqB,EAC5C,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,GAC9B,IACE,IAtBD,WAAW,EAAE,EAAE,CAuBJ,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Write `value` to the user's clipboard. Returns true if the write succeeded.
3
+ *
4
+ * Prefers the async `navigator.clipboard.writeText` API when available in a
5
+ * secure context, and falls back to a transient `<textarea>` + `execCommand`
6
+ * path for older browsers or insecure contexts (e.g. http://). Returns false
7
+ * if both paths fail or if called outside of a browser environment.
8
+ */
9
+ export declare function copyToClipboard(value: string): Promise<boolean>;
10
+ export default copyToClipboard;
@@ -0,0 +1,50 @@
1
+ function insecureContextCopyToClipboard(value) {
2
+ if (typeof document === "undefined")
3
+ return false;
4
+ const textarea = document.createElement("textarea");
5
+ textarea.value = value;
6
+ textarea.setAttribute("readonly", "");
7
+ textarea.style.position = "fixed";
8
+ textarea.style.top = "0";
9
+ textarea.style.left = "0";
10
+ textarea.style.opacity = "0";
11
+ textarea.style.pointerEvents = "none";
12
+ document.body.appendChild(textarea);
13
+ textarea.select();
14
+ textarea.setSelectionRange(0, value.length);
15
+ const succeeded = document.execCommand("copy");
16
+ document.body.removeChild(textarea);
17
+ return succeeded;
18
+ }
19
+ /**
20
+ * Write `value` to the user's clipboard. Returns true if the write succeeded.
21
+ *
22
+ * Prefers the async `navigator.clipboard.writeText` API when available in a
23
+ * secure context, and falls back to a transient `<textarea>` + `execCommand`
24
+ * path for older browsers or insecure contexts (e.g. http://). Returns false
25
+ * if both paths fail or if called outside of a browser environment.
26
+ */
27
+ export async function copyToClipboard(value) {
28
+ if (typeof navigator !== "undefined" &&
29
+ navigator.clipboard &&
30
+ typeof navigator.clipboard.writeText === "function" &&
31
+ typeof window !== "undefined" &&
32
+ window.isSecureContext !== false) {
33
+ try {
34
+ await navigator.clipboard.writeText(value);
35
+ return true;
36
+ }
37
+ catch {
38
+ console.error("Failed to use navigator.clipboard.writeText to copy content to clipboard!");
39
+ // Fall through to the textarea-based fallback below.
40
+ }
41
+ }
42
+ try {
43
+ return insecureContextCopyToClipboard(value);
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ export default copyToClipboard;
50
+ //# sourceMappingURL=copyToClipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyToClipboard.js","sourceRoot":"","sources":["../../src/lib/copyToClipboard.ts"],"names":[],"mappings":"AAAA,SAAS,8BAA8B,CAAC,KAAa;IACnD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,QAAQ,GAAwB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAY,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,IACE,OAAO,SAAS,KAAK,WAAW;QAChC,SAAS,CAAC,SAAS;QACnB,OAAO,SAAS,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU;QACnD,OAAO,MAAM,KAAK,WAAW;QAC7B,MAAM,CAAC,eAAe,KAAK,KAAK,EAChC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;YACF,qDAAqD;QACvD,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,eAAe,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.18.0",
3
+ "version": "0.20.4",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",