@schemavaults/ui 0.44.2 → 0.46.1

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.
@@ -130,6 +130,8 @@ export * from "./number-input";
130
130
  export type * from "./number-input";
131
131
  export * from "./code-block";
132
132
  export type * from "./code-block";
133
+ export * from "./json-viewer";
134
+ export type * from "./json-viewer";
133
135
  export * from "./segmented-control";
134
136
  export type * from "./segmented-control";
135
137
  export * from "./marquee";
@@ -64,6 +64,7 @@ export * from "./timeline";
64
64
  export * from "./rating";
65
65
  export * from "./number-input";
66
66
  export * from "./code-block";
67
+ export * from "./json-viewer";
67
68
  export * from "./segmented-control";
68
69
  export * from "./marquee";
69
70
  export * from "./toggle";
@@ -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,WAAW,CAAC;AAG1B,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,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,YAAY,CAAC;AAG3B,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,qBAAqB,CAAC;AAGpC,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,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"}
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,WAAW,CAAC;AAG1B,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,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,YAAY,CAAC;AAG3B,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,qBAAqB,CAAC;AAGpC,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,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"}
@@ -0,0 +1,4 @@
1
+ export { JsonViewer, JsonViewer as default, jsonViewerVariants, } from "./json-viewer";
2
+ export type { JsonViewerProps, JsonValue } from "./json-viewer";
3
+ export { jsonViewerVariantIds, jsonViewerSizeIds, } from "./json-viewer-variants";
4
+ export type { JsonViewerVariant, JsonViewerSize, } from "./json-viewer-variants";
@@ -0,0 +1,3 @@
1
+ export { JsonViewer, JsonViewer as default, jsonViewerVariants, } from "./json-viewer";
2
+ export { jsonViewerVariantIds, jsonViewerSizeIds, } from "./json-viewer-variants";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/json-viewer/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"}
@@ -0,0 +1,4 @@
1
+ export declare const jsonViewerVariantIds: readonly ["default", "terminal", "subtle", "contrast"];
2
+ export type JsonViewerVariant = (typeof jsonViewerVariantIds)[number];
3
+ export declare const jsonViewerSizeIds: readonly ["sm", "md", "lg"];
4
+ export type JsonViewerSize = (typeof jsonViewerSizeIds)[number];
@@ -0,0 +1,12 @@
1
+ export const jsonViewerVariantIds = [
2
+ "default",
3
+ "terminal",
4
+ "subtle",
5
+ "contrast",
6
+ ];
7
+ export const jsonViewerSizeIds = [
8
+ "sm",
9
+ "md",
10
+ "lg",
11
+ ];
12
+ //# sourceMappingURL=json-viewer-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-viewer-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/json-viewer/json-viewer-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;CAC0B,CAAC;AAGvC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI;IACJ,IAAI;IACJ,IAAI;CACgC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import { type HTMLAttributes, type ReactElement, type Ref } from "react";
3
+ import { type JsonViewerSize, type JsonViewerVariant, jsonViewerSizeIds, jsonViewerVariantIds } from "./json-viewer-variants";
4
+ declare const jsonViewerVariants: (props?: ({
5
+ variant?: "default" | "subtle" | "terminal" | "contrast" | null | undefined;
6
+ size?: "sm" | "lg" | "md" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ type JsonPrimitive = string | number | boolean | null;
9
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
10
+ [key: string]: JsonValue;
11
+ };
12
+ export interface JsonViewerProps extends Omit<HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof jsonViewerVariants> {
13
+ /** The JSON-serializable value to render. */
14
+ value: JsonValue;
15
+ /** Optional title shown in the header. */
16
+ title?: string;
17
+ /**
18
+ * Expand nodes up to this depth by default. `Infinity` to expand all.
19
+ * @default 1
20
+ */
21
+ defaultExpandLevel?: number;
22
+ /** Show the copy-to-clipboard button. Defaults to true. */
23
+ showCopyButton?: boolean;
24
+ /** Show a header bar (only rendered when there is content to display). */
25
+ showHeader?: boolean;
26
+ /** Optional max-height for the body. Pass a CSS value e.g. "20rem". */
27
+ maxHeight?: string;
28
+ /** Show the number of items next to each object/array preview. */
29
+ showItemCount?: boolean;
30
+ /** Pretty-print indentation used by the copy button payload. Defaults to 2. */
31
+ copyIndent?: number;
32
+ /** Ref to the outermost wrapper. */
33
+ ref?: Ref<HTMLDivElement>;
34
+ }
35
+ declare function JsonViewer({ value, title, variant, size, defaultExpandLevel, showCopyButton, showHeader, maxHeight, showItemCount, copyIndent, className, ref, ...props }: JsonViewerProps): ReactElement;
36
+ declare namespace JsonViewer {
37
+ var displayName: string;
38
+ }
39
+ export { JsonViewer, jsonViewerVariants, jsonViewerVariantIds, jsonViewerSizeIds, };
40
+ export type { JsonViewerSize, JsonViewerVariant };
41
+ export default JsonViewer;
@@ -0,0 +1,202 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { ChevronRight } from "lucide-react";
5
+ import { memo, useCallback, useMemo, useState, } from "react";
6
+ import { cn } from "../../../lib/utils";
7
+ import { CopyButton } from "../../ui/copy-button";
8
+ import { jsonViewerSizeIds, jsonViewerVariantIds, } from "./json-viewer-variants";
9
+ const jsonViewerVariants = cva("relative overflow-hidden rounded-md border font-mono", {
10
+ variants: {
11
+ variant: {
12
+ default: "border-border bg-muted text-foreground",
13
+ terminal: "border-zinc-800 bg-zinc-950 text-zinc-100 dark:border-zinc-700",
14
+ subtle: "border-transparent bg-muted/60 text-muted-foreground",
15
+ contrast: "border-foreground/10 bg-foreground text-background",
16
+ },
17
+ size: {
18
+ sm: "text-xs",
19
+ md: "text-sm",
20
+ lg: "text-base",
21
+ },
22
+ },
23
+ defaultVariants: {
24
+ variant: "default",
25
+ size: "md",
26
+ },
27
+ });
28
+ const jsonViewerHeaderVariants = cva("flex items-center justify-between gap-2 border-b px-3 py-2", {
29
+ variants: {
30
+ variant: {
31
+ default: "border-border bg-background/40",
32
+ terminal: "border-zinc-800 bg-zinc-900/80 text-zinc-200",
33
+ subtle: "border-transparent bg-transparent",
34
+ contrast: "border-foreground/10 bg-foreground/5 text-background",
35
+ },
36
+ },
37
+ defaultVariants: { variant: "default" },
38
+ });
39
+ const jsonViewerBodyVariants = cva("overflow-auto", {
40
+ variants: {
41
+ size: {
42
+ sm: "px-3 py-2",
43
+ md: "px-4 py-3",
44
+ lg: "px-5 py-4",
45
+ },
46
+ },
47
+ defaultVariants: { size: "md" },
48
+ });
49
+ function JsonViewer({ value, title, variant, size, defaultExpandLevel = 1, showCopyButton = true, showHeader, maxHeight, showItemCount = true, copyIndent = 2, className, ref, ...props }) {
50
+ const resolvedVariant = variant ?? "default";
51
+ const resolvedSize = size ?? "md";
52
+ const copyPayload = useMemo(() => safeStringify(value, copyIndent), [value, copyIndent]);
53
+ const headerVisible = showHeader ?? (title !== undefined || showCopyButton);
54
+ return (_jsxs("div", { ref: ref, "data-slot": "json-viewer", "data-variant": resolvedVariant, "data-size": resolvedSize, className: cn(jsonViewerVariants({ variant, size }), className), ...props, children: [headerVisible && (_jsxs("div", { "data-slot": "json-viewer-header", className: cn(jsonViewerHeaderVariants({ variant: resolvedVariant })), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { "data-slot": "json-viewer-language", className: "rounded bg-foreground/10 px-1.5 py-0.5 font-mono text-[0.7em] font-semibold uppercase tracking-wide", children: "JSON" }), title !== undefined && (_jsx("span", { "data-slot": "json-viewer-title", className: "truncate font-sans text-[0.95em] font-medium opacity-90", children: title }))] }), showCopyButton && (_jsx(CopyButton, { value: copyPayload, size: "icon-sm", variant: "ghost", className: cn(resolvedVariant === "terminal" &&
55
+ "text-zinc-300 hover:bg-zinc-800 hover:text-zinc-100 data-[copied=true]:text-green-400", resolvedVariant === "contrast" &&
56
+ "text-background hover:bg-background/10 hover:text-background data-[copied=true]:text-background") }))] })), _jsx("div", { "data-slot": "json-viewer-body", className: cn(jsonViewerBodyVariants({ size: resolvedSize })), style: maxHeight !== undefined ? { maxHeight } : undefined, children: _jsx(JsonNode, { value: value, depth: 0, defaultExpandLevel: defaultExpandLevel, variant: resolvedVariant, showItemCount: showItemCount, isLast: true }) })] }));
57
+ }
58
+ JsonViewer.displayName = "JsonViewer";
59
+ const JsonNode = memo(function JsonNode({ value, depth, defaultExpandLevel, variant, showItemCount, propertyKey, isLast, }) {
60
+ const kind = getKind(value);
61
+ const isComposite = kind === "object" || kind === "array";
62
+ const [open, setOpen] = useState(depth < defaultExpandLevel);
63
+ const toggle = useCallback(() => {
64
+ setOpen((prev) => !prev);
65
+ }, []);
66
+ if (!isComposite) {
67
+ return (_jsxs("div", { className: "flex items-start whitespace-pre-wrap break-words leading-relaxed", children: [propertyKey !== undefined && (_jsx(PropertyKey, { name: propertyKey, variant: variant })), _jsx(PrimitiveValue, { value: value, variant: variant }), !isLast && _jsx(Punct, { variant: variant, children: "," })] }));
68
+ }
69
+ const items = kind === "array"
70
+ ? value.map((v, i) => [String(i), v])
71
+ : Object.entries(value);
72
+ const openBracket = kind === "array" ? "[" : "{";
73
+ const closeBracket = kind === "array" ? "]" : "}";
74
+ const empty = items.length === 0;
75
+ const itemCount = items.length;
76
+ return (_jsxs("div", { className: "leading-relaxed", children: [_jsxs("div", { className: "flex items-start whitespace-pre-wrap break-words", children: [_jsx("button", { type: "button", onClick: empty ? undefined : toggle, "aria-expanded": empty ? undefined : open, "aria-label": open ? "Collapse" : "Expand", "data-slot": "json-viewer-toggle", className: cn("mr-1 mt-[0.15em] inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm transition-colors", empty
77
+ ? "cursor-default opacity-30"
78
+ : "cursor-pointer opacity-60 hover:opacity-100 hover:bg-foreground/10"), children: _jsx(ChevronRight, { "aria-hidden": true, className: cn("h-3 w-3 transition-transform", open && !empty ? "rotate-90" : "rotate-0") }) }), propertyKey !== undefined && (_jsx(PropertyKey, { name: propertyKey, variant: variant })), _jsx(Punct, { variant: variant, children: openBracket }), empty ? (_jsx(Punct, { variant: variant, children: closeBracket })) : open ? null : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: toggle, "aria-label": "Expand", className: cn("mx-1 cursor-pointer italic opacity-70 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded-sm", getMutedClass(variant)), children: showItemCount
79
+ ? kind === "array"
80
+ ? `${itemCount} item${itemCount === 1 ? "" : "s"}`
81
+ : `${itemCount} ${itemCount === 1 ? "key" : "keys"}`
82
+ : "…" }), _jsx(Punct, { variant: variant, children: closeBracket })] })), !isLast && !open && _jsx(Punct, { variant: variant, children: "," })] }), open && !empty && (_jsx("div", { "data-slot": "json-viewer-children", className: cn("ml-[0.5rem] border-l pl-3", getGuideClass(variant)), children: items.map(([key, child], idx) => (_jsx(JsonNode, { value: child, depth: depth + 1, defaultExpandLevel: defaultExpandLevel, variant: variant, showItemCount: showItemCount, propertyKey: kind === "object" ? key : undefined, isLast: idx === items.length - 1 }, key))) })), open && !empty && (_jsxs("div", { className: "flex items-start whitespace-pre-wrap break-words", children: [_jsx("span", { className: "mr-1 inline-block w-4 shrink-0", "aria-hidden": true }), _jsx(Punct, { variant: variant, children: closeBracket }), !isLast && _jsx(Punct, { variant: variant, children: "," })] }))] }));
83
+ });
84
+ function getKind(value) {
85
+ if (value === null)
86
+ return "null";
87
+ if (Array.isArray(value))
88
+ return "array";
89
+ const t = typeof value;
90
+ if (t === "string" || t === "number" || t === "boolean")
91
+ return t;
92
+ return "object";
93
+ }
94
+ function PropertyKey({ name, variant, }) {
95
+ return (_jsxs(_Fragment, { children: [_jsx("span", { "data-slot": "json-viewer-key", className: cn("font-medium", getKeyClass(variant)), children: JSON.stringify(name) }), _jsx(Punct, { variant: variant, children: ":\u00A0" })] }));
96
+ }
97
+ function PrimitiveValue({ value, variant, }) {
98
+ if (value === null) {
99
+ return (_jsx("span", { "data-slot": "json-viewer-null", className: cn("italic", getNullClass(variant)), children: "null" }));
100
+ }
101
+ if (typeof value === "string") {
102
+ return (_jsx("span", { "data-slot": "json-viewer-string", className: getStringClass(variant), children: JSON.stringify(value) }));
103
+ }
104
+ if (typeof value === "number") {
105
+ return (_jsx("span", { "data-slot": "json-viewer-number", className: getNumberClass(variant), children: Number.isFinite(value) ? String(value) : JSON.stringify(value) }));
106
+ }
107
+ return (_jsx("span", { "data-slot": "json-viewer-boolean", className: getBooleanClass(variant), children: String(value) }));
108
+ }
109
+ function Punct({ variant, children, }) {
110
+ return (_jsx("span", { "aria-hidden": true, className: getPunctClass(variant), children: children }));
111
+ }
112
+ function getKeyClass(variant) {
113
+ switch (variant) {
114
+ case "terminal":
115
+ return "text-sky-300";
116
+ case "contrast":
117
+ return "text-background";
118
+ default:
119
+ return "text-foreground";
120
+ }
121
+ }
122
+ function getStringClass(variant) {
123
+ switch (variant) {
124
+ case "terminal":
125
+ return "text-emerald-300";
126
+ case "contrast":
127
+ return "text-background/90";
128
+ default:
129
+ return "text-emerald-700 dark:text-emerald-400";
130
+ }
131
+ }
132
+ function getNumberClass(variant) {
133
+ switch (variant) {
134
+ case "terminal":
135
+ return "text-amber-300";
136
+ case "contrast":
137
+ return "text-background/90";
138
+ default:
139
+ return "text-amber-700 dark:text-amber-400";
140
+ }
141
+ }
142
+ function getBooleanClass(variant) {
143
+ switch (variant) {
144
+ case "terminal":
145
+ return "text-violet-300";
146
+ case "contrast":
147
+ return "text-background/90";
148
+ default:
149
+ return "text-violet-700 dark:text-violet-400";
150
+ }
151
+ }
152
+ function getNullClass(variant) {
153
+ switch (variant) {
154
+ case "terminal":
155
+ return "text-zinc-400";
156
+ case "contrast":
157
+ return "text-background/60";
158
+ default:
159
+ return "text-muted-foreground";
160
+ }
161
+ }
162
+ function getPunctClass(variant) {
163
+ switch (variant) {
164
+ case "terminal":
165
+ return "text-zinc-400";
166
+ case "contrast":
167
+ return "text-background/60";
168
+ default:
169
+ return "text-muted-foreground";
170
+ }
171
+ }
172
+ function getMutedClass(variant) {
173
+ switch (variant) {
174
+ case "terminal":
175
+ return "text-zinc-400";
176
+ case "contrast":
177
+ return "text-background/70";
178
+ default:
179
+ return "text-muted-foreground";
180
+ }
181
+ }
182
+ function getGuideClass(variant) {
183
+ switch (variant) {
184
+ case "terminal":
185
+ return "border-zinc-800";
186
+ case "contrast":
187
+ return "border-background/15";
188
+ default:
189
+ return "border-border";
190
+ }
191
+ }
192
+ function safeStringify(value, indent) {
193
+ try {
194
+ return JSON.stringify(value, null, indent);
195
+ }
196
+ catch {
197
+ return "";
198
+ }
199
+ }
200
+ export { JsonViewer, jsonViewerVariants, jsonViewerVariantIds, jsonViewerSizeIds, };
201
+ export default JsonViewer;
202
+ //# sourceMappingURL=json-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-viewer.js","sourceRoot":"","sources":["../../../../src/components/ui/json-viewer/json-viewer.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.44.2",
3
+ "version": "0.46.1",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",
@@ -49,24 +49,21 @@
49
49
  },
50
50
  "devDependencies": {
51
51
  "semver": "7.7.2",
52
- "@storybook/addon-essentials": "8.6.17",
53
- "@storybook/addon-webpack5-compiler-swc": "3.0.0",
54
- "@storybook/blocks": "8.6.15",
55
- "@storybook/preview-api": "8.6.17",
56
- "@storybook/react": "8.6.17",
57
- "@storybook/react-webpack5": "8.6.17",
58
- "@storybook/test": "8.6.17",
52
+ "@storybook/addon-docs": "10.4.0",
53
+ "@storybook/addon-webpack5-compiler-swc": "4.0.3",
54
+ "@storybook/react": "10.4.0",
55
+ "@storybook/react-webpack5": "10.4.0",
59
56
  "@types/react": "19.2.14",
60
57
  "@types/react-dom": "19.2.3",
61
58
  "autoprefixer": "10.4.21",
62
59
  "base64url": "3.0.1",
63
60
  "buffer": "6.0.3",
64
61
  "bun-types": "1.3.11",
65
- "eslint-plugin-storybook": "0.12.0",
62
+ "eslint-plugin-storybook": "10.4.0",
66
63
  "ignore-loader": "0.1.2",
67
64
  "postcss": "8.5.12",
68
65
  "postcss-loader": "8.1.1",
69
- "storybook": "8.6.17",
66
+ "storybook": "10.4.0",
70
67
  "tailwindcss": "3.4.17",
71
68
  "tsc-alias": "1.8.16",
72
69
  "typescript": "5.9.3",