@elabs-ai/components-ui 5.2.0 → 5.3.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.
- package/dist/{chunk-SSQG36MH.js → chunk-34CYSZ2F.js} +2 -2
- package/dist/chunk-34CYSZ2F.js.map +1 -0
- package/dist/{chunk-AR5PJ5ZR.js → chunk-3GJLYUZ6.js} +2 -2
- package/dist/{chunk-QF6UWWDY.js → chunk-C4FZWPI4.js} +1 -1
- package/dist/{chunk-QF6UWWDY.js.map → chunk-C4FZWPI4.js.map} +1 -1
- package/dist/{chunk-QXXHK34V.js → chunk-CF7YSCCA.js} +1 -1
- package/dist/chunk-CF7YSCCA.js.map +1 -0
- package/dist/{chunk-I2C5RZ4S.js → chunk-U7ADXWTI.js} +2 -14
- package/dist/chunk-U7ADXWTI.js.map +1 -0
- package/dist/components/attribution-panel/attribution-panel.js +2 -2
- package/dist/components/attribution-panel/attributions.generated.js +1 -1
- package/dist/components/attribution-panel/index.js +2 -2
- package/dist/components/metric-card/index.js +1 -1
- package/dist/components/metric-card/metric-card.js +1 -1
- package/dist/components/spec-playground/index.js +2 -2
- package/dist/components/spec-playground/locate-json-path.js +1 -1
- package/dist/components/spec-playground/spec-playground.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/package.json +3 -3
- package/src/components/attribution-panel/attributions.generated.ts +2 -14
- package/src/components/metric-card/metric-card.tsx +1 -1
- package/src/components/spec-playground/locate-json-path.ts +1 -1
- package/src/components/spec-playground/spec-playground.tsx +1 -1
- package/src/decoration.stories.tsx +9 -1
- package/src/illustrations/illustrations.stories.tsx +8 -0
- package/src/motion.stories.tsx +9 -1
- package/dist/chunk-I2C5RZ4S.js.map +0 -1
- package/dist/chunk-QXXHK34V.js.map +0 -1
- package/dist/chunk-SSQG36MH.js.map +0 -1
- /package/dist/{chunk-AR5PJ5ZR.js.map → chunk-3GJLYUZ6.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
lineOfParseError,
|
|
4
4
|
locateJsonPath,
|
|
5
5
|
offsetOfLine
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-C4FZWPI4.js";
|
|
7
7
|
import {
|
|
8
8
|
DropdownMenu,
|
|
9
9
|
DropdownMenuContent,
|
|
@@ -223,4 +223,4 @@ export {
|
|
|
223
223
|
DEFAULT_SPEC_PLAYGROUND_LABELS,
|
|
224
224
|
SpecPlayground
|
|
225
225
|
};
|
|
226
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-34CYSZ2F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/spec-playground/spec-playground.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { Braces, ChevronDown, CircleAlert, CircleCheck, RotateCcw } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useControllableState } from \"../../lib/use-controllable-state\";\nimport { Badge } from \"../badge\";\nimport { Button } from \"../button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../dropdown-menu\";\nimport { Textarea } from \"../textarea\";\nimport { lineOfParseError, locateJsonPath, offsetOfLine } from \"./locate-json-path\";\n\n/** One problem a validator reports — the shape the A2UI validator uses. */\nexport interface SpecPlaygroundError {\n /** JSON-path-like address of the problem (`root.children[2].props.label`, `$.tiles[0]`). */\n path: string;\n /** The validator's machine-readable code (`missing-prop`, `overlap`, …). */\n code: string;\n message: string;\n}\n\n/** What `validate` returns: the typed spec, or the validator's own errors. */\nexport type SpecPlaygroundValidation<TSpec> =\n | { ok: true; spec: TSpec }\n | { ok: false; errors: readonly SpecPlaygroundError[] };\n\n/** An entry in the `Load example` menu. */\nexport interface SpecPlaygroundExample {\n id: string;\n label: string;\n /** The JSON text loaded into the editor. */\n value: string;\n}\n\n/** The playground's status: what the last validated text turned out to be. */\nexport type SpecPlaygroundStatus = \"valid\" | \"invalid\" | \"parse-error\";\n\n/** Every string the playground renders — pass your own to localize it. */\nexport interface SpecPlaygroundLabels {\n /** Accessible name of the default textarea editor. */\n editor: string;\n /** Accessible name of the rendered-result region. */\n preview: string;\n /** Accessible name of the error list. */\n errors: string;\n /** Trigger of the examples menu. */\n loadExample: string;\n /** Resets the editor to its initial text. */\n reset: string;\n /** Status chip: the text validates. */\n valid: string;\n /** Status chip: the validator reported `count` errors. */\n errorCount: (count: number) => string;\n /** Status chip: the text is not JSON. */\n parseError: string;\n /** Shown over the render when it is the last valid spec, not the current text. */\n showingLastValid: string;\n /** Shown in the render pane before any text has validated. */\n nothingValid: string;\n /** Suffix naming the editor line an error points at. */\n line: (line: number) => string;\n}\n\nexport const DEFAULT_SPEC_PLAYGROUND_LABELS: SpecPlaygroundLabels = {\n editor: \"Spec (JSON)\",\n preview: \"Rendered result\",\n errors: \"Problems\",\n loadExample: \"Load example\",\n reset: \"Reset\",\n valid: \"Valid\",\n errorCount: (count) => (count === 1 ? \"1 error\" : `${count} errors`),\n parseError: \"Parse error\",\n showingLastValid: \"Showing last valid\",\n nothingValid: \"Nothing valid to render yet.\",\n line: (line) => `line ${line}`,\n};\n\nexport interface SpecPlaygroundProps<TSpec> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** The JSON text (controlled). */\n value?: string;\n /** Initial JSON text (uncontrolled); also what `Reset` restores. Default: the first example. */\n defaultValue?: string;\n /** Called with the new text on every edit, example load and reset. */\n onChange?: (value: string) => void;\n /** Checks the parsed JSON; the errors shown are exactly the ones it returns. */\n validate: (json: unknown) => SpecPlaygroundValidation<TSpec>;\n /** Renders a validated spec. */\n render: (spec: TSpec) => ReactNode;\n /** Entries of the `Load example` menu (the menu is hidden without any). */\n examples?: readonly SpecPlaygroundExample[];\n /**\n * The editor. Bind it to `value`/`onChange` yourself. Default: a `Textarea`, so the\n * playground works without a code editor.\n */\n editor?: ReactNode;\n /**\n * Called when an error is chosen, with the editor line its path resolves to — move a custom\n * editor's caret there. The default textarea handles this itself.\n */\n onErrorSelect?: (error: SpecPlaygroundError, line: number | undefined) => void;\n /** Milliseconds between the last edit and validation. Default 250. */\n debounceMs?: number;\n labels?: Partial<SpecPlaygroundLabels>;\n}\n\ntype Checked<TSpec> =\n | { status: \"valid\"; spec: TSpec; errors: readonly SpecPlaygroundError[] }\n | { status: \"invalid\" | \"parse-error\"; errors: readonly SpecPlaygroundError[] };\n\nfunction check<TSpec>(\n text: string,\n validate: (json: unknown) => SpecPlaygroundValidation<TSpec>,\n): Checked<TSpec> {\n let json: unknown;\n try {\n json = JSON.parse(text);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return { status: \"parse-error\", errors: [{ path: \"\", code: \"parse-error\", message }] };\n }\n const result = validate(json);\n return result.ok\n ? { status: \"valid\", spec: result.spec, errors: [] }\n : { status: \"invalid\", errors: result.errors };\n}\n\nfunction SpecPlaygroundInner<TSpec>(\n {\n value: valueProp,\n defaultValue,\n onChange,\n validate,\n render,\n examples = [],\n editor,\n onErrorSelect,\n debounceMs = 250,\n labels: labelsProp,\n className,\n ...props\n }: SpecPlaygroundProps<TSpec>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const labels = { ...DEFAULT_SPEC_PLAYGROUND_LABELS, ...labelsProp };\n const initial = defaultValue ?? examples[0]?.value ?? \"\";\n const [resetValue] = useState(initial);\n const [value, setValue] = useControllableState(valueProp, initial, onChange);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // Validation trails the text by `debounceMs`; the first render validates immediately.\n const [settled, setSettled] = useState(value);\n useEffect(() => {\n if (settled === value) return;\n const timer = setTimeout(() => setSettled(value), debounceMs);\n return () => clearTimeout(timer);\n }, [value, settled, debounceMs]);\n\n const checked = useMemo(() => check(settled, validate), [settled, validate]);\n\n // The last spec that validated — kept on screen while the current text does not.\n const lastValidRef = useRef<{ spec: TSpec } | null>(null);\n if (checked.status === \"valid\") lastValidRef.current = { spec: checked.spec };\n const shown = checked.status === \"valid\" ? { spec: checked.spec } : lastValidRef.current;\n const stale = checked.status !== \"valid\" && shown !== null;\n\n const lineOf = (error: SpecPlaygroundError) =>\n error.code === \"parse-error\"\n ? lineOfParseError(settled, error.message)\n : locateJsonPath(settled, error.path);\n\n const selectError = (error: SpecPlaygroundError) => {\n const line = lineOf(error);\n if (onErrorSelect) return onErrorSelect(error, line);\n const textarea = textareaRef.current;\n if (!textarea) return;\n const offset = line === undefined ? 0 : offsetOfLine(textarea.value, line);\n textarea.focus();\n textarea.setSelectionRange(offset, offset);\n };\n\n const errorListId = `${props.id ?? \"spec-playground\"}-errors`;\n const hasErrors = checked.errors.length > 0;\n\n return (\n <div\n ref={ref}\n data-slot=\"spec-playground\"\n data-status={checked.status}\n className={cn(\"grid min-w-0 gap-4 lg:grid-cols-2\", className)}\n {...props}\n >\n <div data-slot=\"spec-playground-source\" className=\"flex min-w-0 flex-col gap-3\">\n <div data-slot=\"spec-playground-toolbar\" className=\"flex flex-wrap items-center gap-2\">\n <span role=\"status\" aria-live=\"polite\" className=\"me-auto\">\n <Badge\n data-slot=\"spec-playground-status\"\n data-status={checked.status}\n variant={\n checked.status === \"valid\"\n ? \"success\"\n : checked.status === \"invalid\"\n ? \"destructive\"\n : \"warning\"\n }\n className=\"gap-1\"\n >\n {checked.status === \"valid\" ? (\n <CircleCheck aria-hidden=\"true\" size={14} />\n ) : checked.status === \"invalid\" ? (\n <CircleAlert aria-hidden=\"true\" size={14} />\n ) : (\n <Braces aria-hidden=\"true\" size={14} />\n )}\n {checked.status === \"valid\"\n ? labels.valid\n : checked.status === \"invalid\"\n ? labels.errorCount(checked.errors.length)\n : labels.parseError}\n </Badge>\n </span>\n {examples.length > 0 ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" data-slot=\"spec-playground-examples\">\n {labels.loadExample}\n <ChevronDown aria-hidden=\"true\" size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {examples.map((example) => (\n <DropdownMenuItem\n key={example.id}\n data-example-id={example.id}\n onSelect={() => setValue(example.value)}\n >\n {example.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-slot=\"spec-playground-reset\"\n onClick={() => setValue(resetValue)}\n >\n <RotateCcw aria-hidden=\"true\" size={14} />\n {labels.reset}\n </Button>\n </div>\n <div data-slot=\"spec-playground-editor\" className=\"min-h-80 min-w-0\">\n {editor ?? (\n <Textarea\n ref={textareaRef}\n data-slot=\"spec-playground-textarea\"\n aria-label={labels.editor}\n aria-invalid={hasErrors || undefined}\n aria-describedby={hasErrors ? errorListId : undefined}\n spellCheck={false}\n value={value}\n onChange={(event) => setValue(event.target.value)}\n className=\"h-80 min-h-80 resize-y font-mono text-code\"\n />\n )}\n </div>\n {hasErrors ? (\n <ol\n id={errorListId}\n aria-label={labels.errors}\n data-slot=\"spec-playground-errors\"\n className=\"flex flex-col gap-1\"\n >\n {checked.errors.map((error) => {\n const line = lineOf(error);\n return (\n <li key={`${error.path}|${error.code}|${error.message}`}>\n <button\n type=\"button\"\n data-slot=\"spec-playground-error\"\n data-path={error.path}\n data-code={error.code}\n onClick={() => selectError(error)}\n className=\"focus-ring flex w-full min-w-0 flex-wrap items-baseline gap-x-2 rounded-md border-s-2 border-s-destructive px-2 py-1 text-start text-caption hover:bg-muted\"\n >\n {error.path ? <code className=\"font-mono text-code\">{error.path}</code> : null}\n <span className=\"font-mono text-code text-destructive-text\">{error.code}</span>\n <span className=\"min-w-0 break-words text-muted-foreground\">\n {error.message}\n </span>\n {line !== undefined ? (\n <span className=\"text-meta text-muted-foreground\">{labels.line(line)}</span>\n ) : null}\n </button>\n </li>\n );\n })}\n </ol>\n ) : null}\n </div>\n <section\n aria-label={labels.preview}\n data-slot=\"spec-playground-preview\"\n data-stale={stale ? \"\" : undefined}\n className=\"flex min-w-0 flex-col gap-2\"\n >\n {stale ? (\n <Badge variant=\"outline\" data-slot=\"spec-playground-stale\" className=\"self-start\">\n {labels.showingLastValid}\n </Badge>\n ) : null}\n {shown ? (\n render(shown.spec)\n ) : (\n <p className=\"text-caption text-muted-foreground\">{labels.nothingValid}</p>\n )}\n </section>\n </div>\n );\n}\n\n/**\n * A live spec editor: JSON on the left, what it renders on the right (stacked below 1024 px).\n * Edits are validated after a short pause by the host's own `validate`; its errors are listed\n * under the editor (`path · code · message`, click to jump to the line) and the render keeps\n * the last valid spec, marked as such, until the text validates again. The editor, validator\n * and renderer all come from the host — this component owns only the loop between them.\n */\nexport const SpecPlayground = forwardRef(SpecPlaygroundInner) as <TSpec>(\n props: SpecPlaygroundProps<TSpec> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n(SpecPlayground as { displayName?: string }).displayName = \"SpecPlayground\";\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-IVEDMK5U.js";
|
|
5
5
|
import {
|
|
6
6
|
ATTRIBUTIONS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-U7ADXWTI.js";
|
|
8
8
|
import {
|
|
9
9
|
Badge
|
|
10
10
|
} from "./chunk-HNLYRHAU.js";
|
|
@@ -113,4 +113,4 @@ export {
|
|
|
113
113
|
CATEGORY_LABEL,
|
|
114
114
|
AttributionPanel
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-3GJLYUZ6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/spec-playground/locate-json-path.ts"],"sourcesContent":["/**\n * Map a validator's error `path` onto a line of the JSON text it came from, so clicking an\n * error can put the caret there. Paths are JSON-path-like and tolerant of both house styles:\n * `root.children[2].props.variant` (A2UI) and `$.tiles[3].layout.w` (
|
|
1
|
+
{"version":3,"sources":["../src/components/spec-playground/locate-json-path.ts"],"sourcesContent":["/**\n * Map a validator's error `path` onto a line of the JSON text it came from, so clicking an\n * error can put the caret there. Paths are JSON-path-like and tolerant of both house styles:\n * `root.children[2].props.variant` (A2UI) and `$.tiles[3].layout.w` (any tile spec).\n *\n * The scanner is deliberately small: it walks well-formed JSON, recording where each key or\n * array element starts, and returns the DEEPEST prefix of the path that exists — a\n * `missing` prop's path points at a key that is not there, so its owning object is the best\n * place to land. Malformed text returns `undefined` (the caller shows the error without a line).\n */\n\ntype Segment = string | number;\n\n/** Split `$.a.b[2].c` / `root.children[0]` / `a/b/0` into segments. */\nexport function parseJsonPath(path: string): Segment[] {\n const segments: Segment[] = [];\n const re = /\\[(\\d+)\\]|([^.[\\]/]+)/g;\n let match: RegExpExecArray | null;\n while ((match = re.exec(path)) !== null) {\n if (match[1] !== undefined) segments.push(Number(match[1]));\n else if (match[2] !== undefined && match[2] !== \"$\") {\n const key = match[2];\n segments.push(/^\\d+$/.test(key) ? Number(key) : key);\n }\n }\n return segments;\n}\n\nclass Scanner {\n i = 0;\n constructor(\n readonly text: string,\n readonly target: Segment[],\n ) {}\n /** Offset of the deepest matched prefix, and how many segments it matched. */\n best = { offset: 0, depth: 0 };\n\n ws() {\n while (this.i < this.text.length && /\\s/.test(this.text[this.i]!)) this.i++;\n }\n\n string(): string {\n const start = this.i;\n this.i++; // opening quote\n while (this.i < this.text.length && this.text[this.i] !== '\"') {\n if (this.text[this.i] === \"\\\\\") this.i++;\n this.i++;\n }\n this.i++; // closing quote\n return JSON.parse(this.text.slice(start, this.i)) as string;\n }\n\n value(depth: number, onPath: boolean) {\n this.ws();\n const ch = this.text[this.i];\n if (ch === \"{\") return this.object(depth, onPath);\n if (ch === \"[\") return this.array(depth, onPath);\n if (ch === '\"') return void this.string();\n while (this.i < this.text.length && !/[,\\]}\\s]/.test(this.text[this.i]!)) this.i++;\n }\n\n private mark(depth: number, offset: number) {\n if (depth > this.best.depth) this.best = { offset, depth };\n }\n\n object(depth: number, onPath: boolean) {\n this.i++; // {\n for (;;) {\n this.ws();\n if (this.text[this.i] === \"}\") return void this.i++;\n const keyStart = this.i;\n const key = this.string();\n const hit = onPath && this.target[depth] === key;\n if (hit) this.mark(depth + 1, keyStart);\n this.ws();\n this.i++; // :\n this.value(depth + 1, hit);\n this.ws();\n if (this.text[this.i] === \",\") this.i++;\n else if (this.text[this.i] === \"}\") return void this.i++;\n else throw new Error(\"malformed\");\n }\n }\n\n array(depth: number, onPath: boolean) {\n this.i++; // [\n let index = 0;\n for (;;) {\n this.ws();\n if (this.text[this.i] === \"]\") return void this.i++;\n const hit = onPath && this.target[depth] === index;\n if (hit) this.mark(depth + 1, this.i);\n this.value(depth + 1, hit);\n this.ws();\n index++;\n if (this.text[this.i] === \",\") this.i++;\n else if (this.text[this.i] === \"]\") return void this.i++;\n else throw new Error(\"malformed\");\n }\n }\n}\n\n/** 1-based line of `offset` in `text`. */\nexport function lineOfOffset(text: string, offset: number): number {\n let line = 1;\n for (let i = 0; i < offset && i < text.length; i++) if (text[i] === \"\\n\") line++;\n return line;\n}\n\n/** 0-based offset where 1-based `line` starts in `text`. */\nexport function offsetOfLine(text: string, line: number): number {\n let current = 1;\n for (let i = 0; i < text.length; i++) {\n if (current === line) return i;\n if (text[i] === \"\\n\") current++;\n }\n return current === line ? text.length : 0;\n}\n\n/**\n * The 1-based line in `text` that best matches `path` — the deepest existing prefix, the\n * document root's line when nothing below it matches — or `undefined` for text that is not\n * well-formed JSON.\n */\nexport function locateJsonPath(text: string, path: string): number | undefined {\n const scanner = new Scanner(text, parseJsonPath(path));\n try {\n scanner.ws();\n const rootOffset = scanner.i;\n scanner.value(0, true);\n return lineOfOffset(text, scanner.best.depth > 0 ? scanner.best.offset : rootOffset);\n } catch {\n return undefined;\n }\n}\n\n/** The line a `JSON.parse` error message points at (`position 42`, `line 3 column 5`), if any. */\nexport function lineOfParseError(text: string, message: string): number | undefined {\n const lineCol = /line (\\d+) column \\d+/.exec(message);\n if (lineCol) return Number(lineCol[1]);\n const position = /position (\\d+)/.exec(message);\n if (position) return lineOfOffset(text, Number(position[1]));\n return undefined;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/metric-card/metric-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes, type ReactNode, forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Card, CardContent } from \"../card\";\nimport { CopyableValue } from \"../copyable-value\";\nimport { Skeleton } from \"../skeleton\";\nimport { useLocale } from \"../locale-provider\";\nimport { cn } from \"../../lib/cn\";\nimport {\n type NumberFormat,\n type ResolvedNumberFormat,\n resolveNumberFormat,\n} from \"../../lib/compact-number\";\n\n/**\n * Applies a {@link ResolvedNumberFormat}'s `prefix`/`suffix`/`parens` on top\n * of the plain `Intl` string `formatNumber` produces — the two things Intl\n * itself cannot render (RM-109). Twin of `formatResolvedChartValue`\n * (`packages/charts/src/charts/chart-formatters.ts`).\n */\nfunction formatResolvedNumber(\n resolved: ResolvedNumberFormat,\n formatNumber: (n: number, opts?: Intl.NumberFormatOptions) => string,\n value: number,\n): string {\n const numeric = formatNumber(resolved.parens ? Math.abs(value) : value, resolved.options);\n const signed = resolved.parens && value < 0 ? `(${numeric})` : numeric;\n return `${resolved.prefix}${signed}${resolved.suffix}`;\n}\n\n/*\n * ADR 0012: this is the ONE KPI tile — `@elabs-ai/components-charts` re-exports it.\n * RM-072 adds `size` (sm | md | lg) for dashboard tiles and a `sparkline`\n * slot under the value. `ui` never imports `charts`: the host passes the\n * `<Sparkline …/>` element in.\n */\n\n/*\n * `emphasis` — size/weight/space ONLY, no new hue (research 11 §B.5 KPI-1/5):\n * `headline` is the answer-leading rung (`text-kpi`, ~32px); `default` stays\n * calm on the intermediate 1.5rem reading rung (the pre-#188 step between\n * `title` and `kpi` — no app role exists there, same precedent as the prose\n * h1/h3 rungs; baselined in the text-scale ratchet).\n */\nconst metricValueVariants = cva(\"tabular-nums text-foreground\", {\n variants: {\n emphasis: {\n default: \"text-2xl font-semibold tracking-tight\",\n headline: \"text-kpi\",\n },\n /* `md` adds nothing (today's rungs); `sm`/`lg` override the size via `cn()`. */\n size: {\n sm: \"text-title\",\n md: \"\",\n lg: \"text-kpi\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricContentVariants = cva(\"space-y-2\", {\n variants: {\n emphasis: {\n default: \"p-5\",\n headline: \"p-6\",\n },\n size: {\n sm: \"space-y-1 p-3\",\n md: \"\",\n lg: \"p-6\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricSparklineVariants = cva(\"\", {\n variants: {\n size: {\n /* never rendered — `sm` drops the slot; kept so the axis is total */\n sm: \"\",\n md: \"pt-1\",\n lg: \"min-h-12 pt-2\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport type MetricCardEmphasis = NonNullable<VariantProps<typeof metricValueVariants>[\"emphasis\"]>;\n\n/**\n * Tile tier (RM-072). `sm`: label + value only (no icon, delta, description,\n * sparkline, visual or evidence); `md`: the default tile; `lg`: the kpi value\n * rung with more room for the `sparkline` slot.\n */\nexport type MetricCardSize = NonNullable<VariantProps<typeof metricValueVariants>[\"size\"]>;\n\n/**\n * How a NUMERIC `value` is rendered. A function takes over completely.\n *\n * `\"compact\"` is the default because a KPI tile is a small box and\n * `50012102.632741` does not fit in one — the exact figure stays one click\n * away via `CopyableValue`. Anything that is not a `number` (a string, an\n * element) is passed through untouched, so every existing call site is\n * unaffected.\n *\n * Also accepts the object form (RM-109, `NumberFormatSpec` —\n * `{ decimals, abbreviate, sign, prefix, suffix, … }`,\n * `packages/ui/src/lib/compact-number.ts`) for a tile that needs e.g.\n * `{ decimals: 1, suffix: \"%\" }` without hand-formatting the string itself.\n * The two preset-string cases render byte-for-byte as before this type\n * widened — only a spec OBJECT argument reaches the new code path.\n */\nexport type MetricCardValueFormat = NumberFormat | ((value: number) => ReactNode);\n\nexport interface MetricCardProps\n extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof metricValueVariants> {\n label: ReactNode;\n value: ReactNode;\n /**\n * How to render a NUMERIC `value`. Default: `\"compact\"`. Ignored for every\n * other `ReactNode` — a string you already formatted is rendered verbatim.\n */\n valueFormat?: MetricCardValueFormat;\n /** ISO 4217 code for `valueFormat: \"currency\"`. Default: `\"USD\"`. */\n currency?: string;\n /**\n * Offer the exact figure on click when a numeric `value` was shortened.\n * Default: `true`. Turning it off leaves a compacted number with no way back\n * to its digits, so only do that when the tile is decorative.\n */\n copyExactValue?: boolean;\n /** Secondary line under the value — sublabel / context. */\n description?: ReactNode;\n /** Signed change, e.g. \"+12.4%\". Direction colors it. */\n delta?: string;\n deltaDirection?: \"up\" | \"down\" | \"neutral\";\n /** Whether \"up\" is good (green) — flip for metrics where down is good. */\n positiveIsGood?: boolean;\n icon?: ReactNode;\n /** Optional inline visual shown under the value/description. */\n visual?: ReactNode;\n /**\n * Trend slot rendered directly under the value (RM-072) — pass a\n * `<Sparkline …/>` from `@elabs-ai/components-charts`. Hidden at `size=\"sm\"`.\n */\n sparkline?: ReactNode;\n /**\n * Optional grounding footer (research 11 §B.5 KPI-3) — connects a cited\n * figure to its source (e.g. an `EvidenceChip` from `@elabs-ai/components-ai`). Rendered\n * subdued (`text-meta text-muted-foreground`) under the tile body.\n */\n evidence?: ReactNode;\n /**\n * Loading vs ready — renders a layout-shaped skeleton (matching the real\n * box height) instead of the value/label/delta text. Default: `false`.\n */\n loading?: boolean;\n /**\n * Whether this tile announces its own `loading` state via a live region.\n * Set to `false` when several tiles are composed inside a container that\n * already announces once for the whole region (e.g. a loading\n * `MetricGrid`) — see loading-states.md §a11y (\"one live region per\n * region, not per box\"). Default: `true`.\n */\n announceLoading?: boolean;\n}\n\n/** Compact KPI tile for dashboards. */\nexport const MetricCard = forwardRef<HTMLDivElement, MetricCardProps>(function MetricCard(\n {\n label,\n value,\n valueFormat = \"compact\",\n currency,\n copyExactValue = true,\n description,\n delta,\n deltaDirection = \"neutral\",\n positiveIsGood = true,\n icon,\n visual,\n sparkline,\n evidence,\n emphasis,\n size,\n loading = false,\n announceLoading = true,\n className,\n ...props\n },\n ref,\n) {\n const { t, formatNumber } = useLocale();\n\n // Formatting applies to NUMBERS only. Every shipped call site passes a string\n // it formatted itself, so this branch is inert for them — that is what makes\n // a new default safe.\n const isNumeric = typeof value === \"number\";\n const formattedValue: ReactNode = !isNumeric\n ? value\n : typeof valueFormat === \"function\"\n ? valueFormat(value)\n : formatResolvedNumber(\n resolveNumberFormat(valueFormat, value, currency),\n formatNumber,\n value,\n );\n // Only offer the exact figure when the display actually differs from it —\n // a button around a value that was never shortened is noise.\n const showsExact = isNumeric && String(formattedValue) === String(value);\n const canCopyExact =\n isNumeric && copyExactValue && typeof valueFormat !== \"function\" && !showsExact;\n\n const good =\n deltaDirection === \"up\" ? positiveIsGood : deltaDirection === \"down\" ? !positiveIsGood : null;\n const deltaColor =\n good === null ? \"text-muted-foreground\" : good ? \"text-success-text\" : \"text-destructive-text\";\n // Stable, theme-agnostic polarity hook. High decoration reveals a non-color\n // polarity glyph from this attribute (decoration.css); chromatic themes ignore it\n // and use color. Issue #162.\n const polarity = good === null ? \"neutral\" : good ? \"good\" : \"bad\";\n const arrow = deltaDirection === \"up\" ? \"↑\" : deltaDirection === \"down\" ? \"↓\" : \"\";\n // Direction is conveyed visually by the arrow glyph + color; give AT a single\n // unambiguous name (\"up 12.4%, favorable\") since neither the glyph nor color is a\n // reliable signal (high decoration / high-contrast collapse the hue) — and good/bad\n // polarity is otherwise invisible to AT. See accessibility.md, #162.\n const directionLabel = deltaDirection === \"up\" ? \"up\" : deltaDirection === \"down\" ? \"down\" : \"\";\n const polarityLabel = good === null ? \"\" : good ? \", favorable\" : \", unfavorable\";\n // `sm` is label + value only: every secondary row is dropped (RM-072).\n const compact = size === \"sm\";\n const valueClassName = cn(metricValueVariants({ emphasis, size }));\n\n return (\n <Card ref={ref} className={cn(\"overflow-hidden\", className)} {...props}>\n <CardContent\n className={cn(metricContentVariants({ emphasis, size }))}\n {...(loading && announceLoading ? { role: \"status\", \"aria-live\": \"polite\" as const } : {})}\n >\n {loading && announceLoading ? (\n <span className=\"sr-only\">{t(\"ui.metricCard.loading\")}</span>\n ) : null}\n <div className=\"flex items-center justify-between\">\n {loading ? (\n <Skeleton className=\"h-4 w-24\" />\n ) : (\n /* `min-w-0` + `truncate`, not just the text utility: a flex child's\n default `min-width: auto` refuses to shrink below its content, so\n without it the label OVERFLOWS the row and `Card`'s own\n `overflow-hidden` hard-clips it — characters lost mid-word, no\n ellipsis, no title. Measured on a 230px pane: \"Awaiting approval\"\n rendered as \"Awaiting approva\". See interaction-guidelines.md\n § Content handling (\"flex children need `min-w-0`\"). `title` only\n when the label is a string — there is nothing to put in the\n attribute otherwise, and the ellipsis needs a way back to the\n full words. */\n <span\n className=\"min-w-0 truncate text-body font-medium text-muted-foreground\"\n title={typeof label === \"string\" ? label : undefined}\n >\n {label}\n </span>\n )}\n {/* `shrink-0`: the icon is a fixed 16px mark, so the LABEL is what\n gives way when the row runs out of width. */}\n {icon && !compact ? (\n <span className=\"shrink-0 text-muted-foreground [&_svg]:size-4\">{icon}</span>\n ) : null}\n </div>\n <div className=\"flex items-baseline gap-2\">\n {loading ? (\n <Skeleton className={emphasis === \"headline\" ? \"h-9 w-28\" : \"h-8 w-24\"} />\n ) : canCopyExact ? (\n <CopyableValue\n className={valueClassName}\n // Two tiles in one grid can compact to the same display (\"$1.2M\"),\n // and the visible label is a sibling node the button's name does\n // not include — so without this a screen-reader user tabbing the\n // grid hears the identical name twice. A non-string label has no\n // text to borrow; the default hint stands.\n hint={\n typeof label === \"string\" ? `${label}, ${t(\"ui.copyableValue.hint\")}` : undefined\n }\n value={String(value)}\n >\n {formattedValue}\n </CopyableValue>\n ) : (\n <span className={valueClassName}>{formattedValue}</span>\n )}\n {delta && !compact ? (\n loading ? (\n <Skeleton className=\"h-4 w-14\" />\n ) : (\n <span\n data-polarity={polarity}\n className={cn(\"text-meta tabular-nums\", deltaColor)}\n aria-label={\n directionLabel ? `${directionLabel} ${delta}${polarityLabel}` : undefined\n }\n >\n {arrow ? <span aria-hidden=\"true\">{arrow} </span> : null}\n {delta}\n </span>\n )\n ) : null}\n </div>\n {sparkline && !compact ? (\n <div className={metricSparklineVariants({ size })}>\n {loading ? <Skeleton className=\"h-8 w-full\" /> : sparkline}\n </div>\n ) : null}\n {description && !compact ? (\n loading ? (\n <Skeleton className=\"h-3 w-32\" />\n ) : (\n <p className=\"text-meta font-normal text-muted-foreground\">{description}</p>\n )\n ) : null}\n {visual && !compact ? (\n <div className=\"pt-1\">{loading ? <Skeleton className=\"h-8 w-full\" /> : visual}</div>\n ) : null}\n {evidence && !compact ? (\n <div className=\"pt-1 text-meta font-normal text-muted-foreground\">\n {loading ? <Skeleton className=\"h-3 w-24\" /> : evidence}\n </div>\n ) : null}\n </CardContent>\n </Card>\n );\n});\n"],"mappings":"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","names":["MetricCard"]}
|
|
@@ -334,7 +334,7 @@ var ATTRIBUTIONS = [
|
|
|
334
334
|
license: "MIT",
|
|
335
335
|
copyright: "Claud\xE9ric Demers",
|
|
336
336
|
url: "https://www.npmjs.com/package/@dnd-kit/core",
|
|
337
|
-
usedBy: ["@elabs-ai/components-
|
|
337
|
+
usedBy: ["@elabs-ai/components-data"],
|
|
338
338
|
required: false,
|
|
339
339
|
note: null
|
|
340
340
|
},
|
|
@@ -1501,22 +1501,10 @@ var ATTRIBUTIONS = [
|
|
|
1501
1501
|
usedBy: ["@elabs-ai/components-ai"],
|
|
1502
1502
|
required: false,
|
|
1503
1503
|
note: null
|
|
1504
|
-
},
|
|
1505
|
-
{
|
|
1506
|
-
id: "zustand",
|
|
1507
|
-
category: "dependency",
|
|
1508
|
-
name: "zustand",
|
|
1509
|
-
version: "5.0.15",
|
|
1510
|
-
license: "MIT",
|
|
1511
|
-
copyright: "Paul Henschel",
|
|
1512
|
-
url: "https://www.npmjs.com/package/zustand",
|
|
1513
|
-
usedBy: ["@elabs-ai/components-charts"],
|
|
1514
|
-
required: false,
|
|
1515
|
-
note: null
|
|
1516
1504
|
}
|
|
1517
1505
|
];
|
|
1518
1506
|
|
|
1519
1507
|
export {
|
|
1520
1508
|
ATTRIBUTIONS
|
|
1521
1509
|
};
|
|
1522
|
-
//# sourceMappingURL=chunk-
|
|
1510
|
+
//# sourceMappingURL=chunk-U7ADXWTI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/attribution-panel/attributions.generated.ts"],"sourcesContent":["// GENERATED by scripts/gen-attributions.mjs — DO NOT EDIT BY HAND.\n// Run `pnpm gen` after changing a dependency, a vendored font, or\n// scripts/attributions.sources.json. `pnpm gen:check` fails on a stale copy.\n//\n// 123 entries (data: 4, source: 20, font: 2, dependency: 97).\n\nimport type { Attribution } from \"./attribution-types\";\n\nexport const ATTRIBUTIONS: readonly Attribution[] = [\n {\n version: null,\n note: \"Default light/dark basemap styles and tiles (positron / dark-matter).\",\n id: \"carto\",\n category: \"data\",\n name: \"CARTO\",\n license: \"CARTO basemap terms\",\n copyright: \"© CARTO\",\n url: \"https://carto.com/about-carto/\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"Map data behind the default Carto basemap. ODbL obliges the credit wherever the tiles are shown.\",\n id: \"openstreetmap\",\n category: \"data\",\n name: \"OpenStreetMap\",\n license: \"ODbL-1.0\",\n copyright: \"© OpenStreetMap contributors\",\n url: \"https://www.openstreetmap.org/copyright\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"The `countries-110m` TopoJSON build of Natural Earth that `world-fixture.ts` was converted from (once, offline — no TopoJSON decoder ships). ISC requires the copyright notice.\",\n id: \"world-atlas\",\n category: \"data\",\n name: \"world-atlas\",\n license: \"ISC\",\n copyright: \"Copyright 2013-2024 Michael Bostock\",\n url: \"https://github.com/topojson/world-atlas\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: true,\n },\n {\n version: null,\n note: 'The 1:110m admin-0 country outlines behind `ChoroplethChart`\\'s bundled \"world\" fixture (packages/charts/src/charts/choropleth/world-fixture.ts). Public domain, so the credit is courtesy, not an obligation.',\n id: \"natural-earth\",\n category: \"data\",\n name: \"Natural Earth\",\n license: \"public-domain\",\n copyright: \"Public domain (Natural Earth terms of use)\",\n url: \"https://www.naturalearthdata.com/about/terms-of-use/\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Vendored into @elabs-ai/components-ai and rewired onto brand-ui primitives and tokens. Apache-2.0, NOT MIT: §4 obliges us to carry the notice and to state that we modified the files.\",\n id: \"vercel-ai-elements\",\n category: \"source\",\n name: \"AI Elements\",\n license: \"Apache-2.0\",\n copyright: \"Copyright 2023 Vercel, Inc.\",\n url: \"https://github.com/vercel/ai-elements\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: true,\n },\n {\n version: null,\n note: \"The ShimmeringText component, from the ncdai shadcn registry. Its TRADEMARK.md grants no right to the author's name or brand assets — the code is adopted, the branding is not.\",\n id: \"shimmering-text\",\n category: \"source\",\n name: \"@ncdai/shimmering-text\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Chánh Đại\",\n url: \"https://github.com/ncdai/chanhdai.com\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The pluggable adapter-registry architecture behind the file viewer (ADR 0024).\",\n id: \"anyview\",\n category: \"source\",\n name: \"anyview\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 harshpreet931\",\n url: \"https://github.com/harshpreet931/anyview\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The message-part grouping design behind part-groups.ts, re-expressed in this library's idiom.\",\n id: \"assistant-ui\",\n category: \"source\",\n name: \"assistant-ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 AgentbaseAI Inc.\",\n url: \"https://github.com/assistant-ui/assistant-ui\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n },\n {\n version: null,\n note: \"Sample datasets in the bar / composed / candlestick chart stories. Attributed to bklit-ui (MIT, the charts library) rather than the archived bklit app (CC BY-NC 4.0) — see the note in ATTRIBUTION.md.\",\n id: \"bklit-ui\",\n category: \"source\",\n name: \"Bklit UI\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 uixmat\",\n url: \"https://github.com/bklit/bklit-ui\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Agent-session UI logic re-expressed on our tokens: the line-level diff model and its screen-reader polarity prefixes, the scoped N-option permission anatomy, the slash-palette prefix-filter/clamp behaviour, the turn-status elapsed formatter, the hook/lifecycle event line, and the grouped keyboard-shortcuts sheet. No upstream code, styling or terminal palette is shipped.\",\n id: \"brainless\",\n category: \"source\",\n name: \"brainless\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Ben Swerdlow\",\n url: \"https://github.com/theswerd/brainless\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-ui\", \"@elabs-ai/components-terminal\"],\n required: false,\n },\n {\n version: null,\n note: \"The view-state seam and chrome-part inversion the viewer adopted (ADR 0026). Its LICENSE.md carries two copyright lines; both are reproduced.\",\n id: \"extend-hq-ui\",\n category: \"source\",\n name: \"extend-hq/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 CrowdView Inc, dba Extend; portions Copyright (c) 2023 shadcn\",\n url: \"https://github.com/extend-hq/ui\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The eXtensible Event Stream interchange format fromXes reads: a <log> of <trace>s of <event>s, each carrying typed key/value attributes, plus <classifier> and lifecycle:transition. Only the format is implemented, by a hand-rolled tokenizer; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"xes-ieee-1849\",\n category: \"source\",\n name: \"IEEE 1849-2016 (XES)\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© IEEE\",\n url: \"https://standards.ieee.org/ieee/1849/6811/\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"The editorial chart gallery behind the 2026-09-04 charts gap analysis: 71 files across the charts and tokens packages cite it as the source of a value, a mark shape or a composition (unit decomposition, hairline furniture, the sequential/diverging ramps, the reveal timing), and three copy-own registry blocks (chart-editorial-hourglass, -patchwork, -almanac) reproduce three of its gallery cards' DATA-SHAPE DESCRIPTIONS from that same analysis' one-line prose. No code was copied verbatim — each was re-expressed onto this repo's tokens and primitives. Its LICENSE is PolyForm Noncommercial 1.0.0, read verbatim from the upstream file; GitHub's own detection reports NOASSERTION, which is why nothing flagged it earlier. The licence's Required Notice slot is left at the template's example value, so upstream states no copyright holder and none is claimed here. Noncommercial-only is unresolved for a repo headed for public release — a licensing decision for the maintainer, not something attribution settles.\",\n id: \"lieflat-charts\",\n category: \"source\",\n name: \"lieflat-charts\",\n license: \"PolyForm-Noncommercial-1.0.0\",\n copyright: null,\n url: \"https://github.com/larashero3-dotcom/lieflat-charts\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"The live-axis tick-interval picker behind live-y-axis.tsx. Upstream now names that function niceTimeInterval.\",\n id: \"liveline\",\n category: \"source\",\n name: \"Liveline\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025-2026 Benji Taylor\",\n url: \"https://github.com/benjitaylor/liveline\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The MapLibre component set @elabs-ai/components-maps was adapted from (ADR 0015).\",\n id: \"mapcn\",\n category: \"source\",\n name: \"mapcn\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Anmoldeep Singh\",\n url: \"https://github.com/AnmolSaini16/mapcn\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: false,\n },\n {\n version: null,\n note: \"The @milkdown/react integration is vendored under markdown-editor/milkdown-react/ and adapted; Milkdown itself is also a runtime dependency.\",\n id: \"milkdown\",\n category: \"source\",\n name: \"Milkdown\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2020-present Mirone\",\n url: \"https://github.com/Milkdown/milkdown\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n },\n {\n version: null,\n note: \"The Object-Centric Event Log 2.0 JSON serialization fromOcel reads (objectTypes, objects, events, relationships). Only the format is implemented; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"ocel-2-0\",\n category: \"source\",\n name: \"OCEL 2.0 specification\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© the OCEL 2.0 specification authors\",\n url: \"https://doi.org/10.48550/arXiv.2403.01975\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Algorithm shape for the framework-free process-mining core: which aggregates a directly-follows graph carries (discoverGraph) and how traces are grouped into variants (extractVariants), with durationStats as their shared summary; and the token-based replay procedure behind tokenReplay (produced/consumed/missing/remaining counting, silent-transition enabling before forcing missing tokens); and the object-centric directly-follows graph (discoverObjectCentricGraph): one directly-follows graph per object type, shared activities merged into one node with per-type counts, edges kept per type. Re-typed in TypeScript from the published algorithms, not copied.\",\n id: \"pm4js\",\n category: \"source\",\n name: \"pm4js\",\n license: \"BSD-3-Clause\",\n copyright: \"Copyright 2021 Alessandro Berti\",\n url: \"https://github.com/pm4js/pm4js-core\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Beyond the npm dependency below, the shipped dist of react-scroll-area and react-select is modified in patches/ — disclosed here so the change is not invisible.\",\n id: \"radix-primitives-patched\",\n category: \"source\",\n name: \"Radix UI Primitives (patched)\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2022 WorkOS\",\n url: \"https://github.com/radix-ui/primitives\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The owned-source component model and many primitive implementations; the registry is shadcn-compatible (ADR 0001).\",\n id: \"shadcn-ui\",\n category: \"source\",\n name: \"shadcn/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2023 shadcn\",\n url: \"https://github.com/shadcn-ui/ui\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The stacked, layered elevation-ramp technique behind the shadow tokens (ADR 0020).\",\n id: \"shadow-plugin\",\n category: \"source\",\n name: \"shadow-plugin\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Florian Kiem\",\n url: \"https://github.com/flornkm/shadow-plugin\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"world-countries.json, fetched at runtime by the stat-card-choropleth-01 registry block. Its LICENSE names no holder, and upstream traces the file to johan/world.geo.json, which calls its own legal status dubious — the block already carries a TODO to self-host a clean source.\",\n id: \"subyfly-topojson\",\n category: \"source\",\n name: \"subyfly/topojson\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2016\",\n url: \"https://github.com/subyfly/topojson\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"The composition-patterns skill behind the component-api rule's compound-component conventions. The repo declares NO licence and ships no LICENSE file — credited by link, with no licence claimed.\",\n id: \"vercel-agent-skills\",\n category: \"source\",\n name: \"vercel-labs/agent-skills\",\n license: \"No licence declared\",\n copyright: null,\n url: \"https://github.com/vercel-labs/agent-skills\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"Adopted delta-only into the repo's interaction-guidelines rule. Governance, not shipped code.\",\n id: \"web-interface-guidelines\",\n category: \"source\",\n name: \"Web Interface Guidelines\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Vercel Labs\",\n url: \"https://github.com/vercel-labs/web-interface-guidelines\",\n usedBy: [],\n required: false,\n },\n {\n id: \"font:inter\",\n category: \"font\",\n name: \"Inter\",\n version: null,\n license: \"OFL-1.1\",\n copyright: \"Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)\",\n url: \"https://github.com/rsms/inter\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"font:source-code-pro\",\n category: \"font\",\n name: \"Source Code Pro\",\n version: null,\n license: \"OFL-1.1\",\n copyright:\n \"Copyright 2010-2020 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved.\",\n url: \"https://github.com/adobe-fonts/source-code-pro\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"@dagrejs/dagre\",\n category: \"dependency\",\n name: \"@dagrejs/dagre\",\n version: \"3.0.0\",\n license: \"MIT\",\n copyright: \"Chris Pettitt\",\n url: \"https://www.npmjs.com/package/@dagrejs/dagre\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/core\",\n category: \"dependency\",\n name: \"@dnd-kit/core\",\n version: \"6.3.1\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/core\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/sortable\",\n category: \"dependency\",\n name: \"@dnd-kit/sortable\",\n version: \"10.0.0\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/sortable\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/utilities\",\n category: \"dependency\",\n name: \"@dnd-kit/utilities\",\n version: \"3.2.2\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/utilities\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@milkdown/kit\",\n category: \"dependency\",\n name: \"@milkdown/kit\",\n version: \"7.21.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@milkdown/kit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@number-flow/react\",\n category: \"dependency\",\n name: \"@number-flow/react\",\n version: \"0.5.14\",\n license: \"MIT\",\n copyright: \"Maxwell Barvian\",\n url: \"https://www.npmjs.com/package/@number-flow/react\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@prosemirror-adapter/react\",\n category: \"dependency\",\n name: \"@prosemirror-adapter/react\",\n version: \"0.5.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@prosemirror-adapter/react\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-accordion\",\n category: \"dependency\",\n name: \"@radix-ui/react-accordion\",\n version: \"1.2.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-accordion\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-alert-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-alert-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-alert-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-aspect-ratio\",\n category: \"dependency\",\n name: \"@radix-ui/react-aspect-ratio\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-aspect-ratio\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-avatar\",\n category: \"dependency\",\n name: \"@radix-ui/react-avatar\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-avatar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-checkbox\",\n category: \"dependency\",\n name: \"@radix-ui/react-checkbox\",\n version: \"1.3.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-checkbox\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-collapsible\",\n category: \"dependency\",\n name: \"@radix-ui/react-collapsible\",\n version: \"1.1.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-collapsible\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-context-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-context-menu\",\n version: \"2.2.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-context-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-direction\",\n category: \"dependency\",\n name: \"@radix-ui/react-direction\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-direction\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dropdown-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-dropdown-menu\",\n version: \"2.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dropdown-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-hover-card\",\n category: \"dependency\",\n name: \"@radix-ui/react-hover-card\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-hover-card\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-label\",\n category: \"dependency\",\n name: \"@radix-ui/react-label\",\n version: \"2.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-label\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-menubar\",\n category: \"dependency\",\n name: \"@radix-ui/react-menubar\",\n version: \"1.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-menubar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-navigation-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-navigation-menu\",\n version: \"1.2.14\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-navigation-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-popover\",\n category: \"dependency\",\n name: \"@radix-ui/react-popover\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-popover\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-progress\",\n category: \"dependency\",\n name: \"@radix-ui/react-progress\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-progress\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-radio-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-radio-group\",\n version: \"1.3.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-radio-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-scroll-area\",\n category: \"dependency\",\n name: \"@radix-ui/react-scroll-area\",\n version: \"1.2.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-scroll-area\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-select\",\n category: \"dependency\",\n name: \"@radix-ui/react-select\",\n version: \"2.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-select\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-separator\",\n category: \"dependency\",\n name: \"@radix-ui/react-separator\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-separator\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slider\",\n category: \"dependency\",\n name: \"@radix-ui/react-slider\",\n version: \"1.3.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slider\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slot\",\n category: \"dependency\",\n name: \"@radix-ui/react-slot\",\n version: \"1.2.4\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slot\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-switch\",\n category: \"dependency\",\n name: \"@radix-ui/react-switch\",\n version: \"1.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-switch\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tabs\",\n category: \"dependency\",\n name: \"@radix-ui/react-tabs\",\n version: \"1.1.13\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tabs\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle\",\n version: \"1.1.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle-group\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toolbar\",\n category: \"dependency\",\n name: \"@radix-ui/react-toolbar\",\n version: \"1.1.19\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toolbar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tooltip\",\n category: \"dependency\",\n name: \"@radix-ui/react-tooltip\",\n version: \"1.2.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tooltip\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-use-controllable-state\",\n category: \"dependency\",\n name: \"@radix-ui/react-use-controllable-state\",\n version: \"1.2.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-use-controllable-state\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/cjk\",\n category: \"dependency\",\n name: \"@streamdown/cjk\",\n version: \"1.0.3\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/cjk\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/code\",\n category: \"dependency\",\n name: \"@streamdown/code\",\n version: \"1.1.1\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/code\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/math\",\n category: \"dependency\",\n name: \"@streamdown/math\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/math\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/mermaid\",\n category: \"dependency\",\n name: \"@streamdown/mermaid\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/mermaid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-table\",\n category: \"dependency\",\n name: \"@tanstack/react-table\",\n version: \"8.21.3\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-table\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-virtual\",\n category: \"dependency\",\n name: \"@tanstack/react-virtual\",\n version: \"3.14.2\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-virtual\",\n usedBy: [\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"@visx/brush\",\n category: \"dependency\",\n name: \"@visx/brush\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/brush\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/curve\",\n category: \"dependency\",\n name: \"@visx/curve\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/curve\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/event\",\n category: \"dependency\",\n name: \"@visx/event\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/event\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/geo\",\n category: \"dependency\",\n name: \"@visx/geo\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@nschnierer\",\n url: \"https://www.npmjs.com/package/@visx/geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/gradient\",\n category: \"dependency\",\n name: \"@visx/gradient\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/gradient\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/grid\",\n category: \"dependency\",\n name: \"@visx/grid\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/grid\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/group\",\n category: \"dependency\",\n name: \"@visx/group\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/group\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/pattern\",\n category: \"dependency\",\n name: \"@visx/pattern\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/pattern\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/responsive\",\n category: \"dependency\",\n name: \"@visx/responsive\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/responsive\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/sankey\",\n category: \"dependency\",\n name: \"@visx/sankey\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@jacksonhardaker\",\n url: \"https://www.npmjs.com/package/@visx/sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/scale\",\n category: \"dependency\",\n name: \"@visx/scale\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@visx/scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/shape\",\n category: \"dependency\",\n name: \"@visx/shape\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/zoom\",\n category: \"dependency\",\n name: \"@visx/zoom\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/zoom\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"ansi-to-react\",\n category: \"dependency\",\n name: \"ansi-to-react\",\n version: \"6.2.6\",\n license: \"BSD-3-Clause\",\n copyright: \"Kyle Kelley\",\n url: \"https://www.npmjs.com/package/ansi-to-react\",\n usedBy: [\"@elabs-ai/components-terminal\"],\n required: false,\n note: null,\n },\n {\n id: \"class-variance-authority\",\n category: \"dependency\",\n name: \"class-variance-authority\",\n version: \"0.7.1\",\n license: \"Apache-2.0\",\n copyright: \"Joe Bell\",\n url: \"https://www.npmjs.com/package/class-variance-authority\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"clsx\",\n category: \"dependency\",\n name: \"clsx\",\n version: \"2.1.1\",\n license: \"MIT\",\n copyright: \"Luke Edwards\",\n url: \"https://www.npmjs.com/package/clsx\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"cmdk\",\n category: \"dependency\",\n name: \"cmdk\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: \"Paco\",\n url: \"https://www.npmjs.com/package/cmdk\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-array\",\n category: \"dependency\",\n name: \"d3-array\",\n version: \"3.2.4\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-array\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-force\",\n category: \"dependency\",\n name: \"d3-force\",\n version: \"3.0.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-force\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-geo\",\n category: \"dependency\",\n name: \"d3-geo\",\n version: \"3.1.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-hierarchy\",\n category: \"dependency\",\n name: \"d3-hierarchy\",\n version: \"3.1.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-hierarchy\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-sankey\",\n category: \"dependency\",\n name: \"d3-sankey\",\n version: \"0.12.3\",\n license: \"BSD-3-Clause\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-scale\",\n category: \"dependency\",\n name: \"d3-scale\",\n version: \"4.0.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-shape\",\n category: \"dependency\",\n name: \"d3-shape\",\n version: \"3.2.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n version: \"0.12.0\",\n note: \"elkjs adapter — RM-067. The Eclipse Layout Kernel, behind layoutFlowElk. An OPTIONAL peer dependency, so the derived dependency list (plain `dependencies` only) cannot see it; it is credited here instead. Never bundled into the package: loaded with import() from the host's own install, and used under EPL-2.0. The licence text (LICENSE.md) names no holder; the copyright line is read verbatim from the header of elkjs's own lib/elk-api.d.ts.\",\n id: \"elkjs\",\n category: \"dependency\",\n name: \"elkjs\",\n license: \"EPL-2.0 OR GPL-3.0-or-later\",\n copyright: \"Copyright (c) 2019 TypeFox and others\",\n url: \"https://github.com/kieler/elkjs\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n },\n {\n id: \"embla-carousel-react\",\n category: \"dependency\",\n name: \"embla-carousel-react\",\n version: \"8.6.0\",\n license: \"MIT\",\n copyright: \"David Jerleke\",\n url: \"https://www.npmjs.com/package/embla-carousel-react\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"input-otp\",\n category: \"dependency\",\n name: \"input-otp\",\n version: \"1.4.2\",\n license: \"MIT\",\n copyright: \"Guilherme Rodz\",\n url: \"https://www.npmjs.com/package/input-otp\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"js-yaml\",\n category: \"dependency\",\n name: \"js-yaml\",\n version: \"4.2.0\",\n license: \"MIT\",\n copyright: \"Vladimir Zapparov\",\n url: \"https://www.npmjs.com/package/js-yaml\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"katex\",\n category: \"dependency\",\n name: \"katex\",\n version: \"0.16.47\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/katex\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"lucide-react\",\n category: \"dependency\",\n name: \"lucide-react\",\n version: \"0.577.0\",\n license: \"ISC\",\n copyright: \"Eric Fennis\",\n url: \"https://www.npmjs.com/package/lucide-react\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-flow\",\n \"@elabs-ai/components-maps\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"mdast-util-directive\",\n category: \"dependency\",\n name: \"mdast-util-directive\",\n version: \"3.1.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/mdast-util-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"mermaid\",\n category: \"dependency\",\n name: \"mermaid\",\n version: \"11.15.0\",\n license: \"MIT\",\n copyright: \"Knut Sveidqvist\",\n url: \"https://www.npmjs.com/package/mermaid\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"micromark-extension-directive\",\n category: \"dependency\",\n name: \"micromark-extension-directive\",\n version: \"4.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/micromark-extension-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"motion\",\n category: \"dependency\",\n name: \"motion\",\n version: \"12.40.0\",\n license: \"MIT\",\n copyright: \"Matt Perry\",\n url: \"https://www.npmjs.com/package/motion\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"nanoid\",\n category: \"dependency\",\n name: \"nanoid\",\n version: \"5.1.11\",\n license: \"MIT\",\n copyright: \"Andrey Sitnik\",\n url: \"https://www.npmjs.com/package/nanoid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-day-picker\",\n category: \"dependency\",\n name: \"react-day-picker\",\n version: \"9.14.0\",\n license: \"MIT\",\n copyright: \"Giampaolo Bellavite\",\n url: \"https://www.npmjs.com/package/react-day-picker\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-jsx-parser\",\n category: \"dependency\",\n name: \"react-jsx-parser\",\n version: \"2.4.1\",\n license: \"MIT\",\n copyright: \"Troy Alford\",\n url: \"https://www.npmjs.com/package/react-jsx-parser\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-resizable-panels\",\n category: \"dependency\",\n name: \"react-resizable-panels\",\n version: \"2.1.9\",\n license: \"MIT\",\n copyright: \"Brian Vaughn\",\n url: \"https://www.npmjs.com/package/react-resizable-panels\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-use-measure\",\n category: \"dependency\",\n name: \"react-use-measure\",\n version: \"2.1.7\",\n license: \"MIT\",\n copyright: \"Paul Henschel\",\n url: \"https://www.npmjs.com/package/react-use-measure\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-directive\",\n category: \"dependency\",\n name: \"remark-directive\",\n version: \"4.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-frontmatter\",\n category: \"dependency\",\n name: \"remark-frontmatter\",\n version: \"5.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-frontmatter\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-gfm\",\n category: \"dependency\",\n name: \"remark-gfm\",\n version: \"4.0.1\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-gfm\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-math\",\n category: \"dependency\",\n name: \"remark-math\",\n version: \"6.0.0\",\n license: \"MIT\",\n copyright: \"Junyoung Choi\",\n url: \"https://www.npmjs.com/package/remark-math\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-parse\",\n category: \"dependency\",\n name: \"remark-parse\",\n version: \"11.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-parse\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"shiki\",\n category: \"dependency\",\n name: \"shiki\",\n version: \"3.23.0\",\n license: \"MIT\",\n copyright: \"Pine Wu; Anthony Fu\",\n url: \"https://www.npmjs.com/package/shiki\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"sonner\",\n category: \"dependency\",\n name: \"sonner\",\n version: \"1.7.4\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/sonner\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"streamdown\",\n category: \"dependency\",\n name: \"streamdown\",\n version: \"2.5.0\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/streamdown\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"tailwind-merge\",\n category: \"dependency\",\n name: \"tailwind-merge\",\n version: \"2.6.1\",\n license: \"MIT\",\n copyright: \"Dany Castillo\",\n url: \"https://www.npmjs.com/package/tailwind-merge\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"tokenlens\",\n category: \"dependency\",\n name: \"tokenlens\",\n version: \"1.3.1\",\n license: \"MIT\",\n copyright: \"Nicklas Scharpff\",\n url: \"https://www.npmjs.com/package/tokenlens\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"tw-animate-css\",\n category: \"dependency\",\n name: \"tw-animate-css\",\n version: \"1.4.0\",\n license: \"MIT\",\n copyright: \"Luca Bosin\",\n url: \"https://www.npmjs.com/package/tw-animate-css\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n note: null,\n },\n {\n id: \"unified\",\n category: \"dependency\",\n name: \"unified\",\n version: \"11.0.5\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unified\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"unist-util-visit\",\n category: \"dependency\",\n name: \"unist-util-visit\",\n version: \"5.1.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unist-util-visit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"use-stick-to-bottom\",\n category: \"dependency\",\n name: \"use-stick-to-bottom\",\n version: \"1.1.6\",\n license: \"MIT\",\n copyright: \"Sam Denty\",\n url: \"https://www.npmjs.com/package/use-stick-to-bottom\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"vaul\",\n category: \"dependency\",\n name: \"vaul\",\n version: \"1.1.2\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/vaul\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"zod\",\n category: \"dependency\",\n name: \"zod\",\n version: \"3.25.76\",\n license: \"MIT\",\n copyright: \"Colin McDonnell\",\n url: \"https://www.npmjs.com/package/zod\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n] as const;\n"],"mappings":"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","names":[]}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
AttributionPanel,
|
|
5
5
|
CATEGORY_LABEL
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-3GJLYUZ6.js";
|
|
7
7
|
import "../../chunk-V2S5DINS.js";
|
|
8
8
|
import "../../chunk-IVEDMK5U.js";
|
|
9
9
|
import {
|
|
10
10
|
ATTRIBUTIONS
|
|
11
|
-
} from "../../chunk-
|
|
11
|
+
} from "../../chunk-U7ADXWTI.js";
|
|
12
12
|
import "../../chunk-I6O6ACCH.js";
|
|
13
13
|
import "../../chunk-HNLYRHAU.js";
|
|
14
14
|
import "../../chunk-6ROQKB4U.js";
|
|
@@ -3,12 +3,12 @@ import "../../chunk-4UWOADYM.js";
|
|
|
3
3
|
import {
|
|
4
4
|
AttributionPanel,
|
|
5
5
|
CATEGORY_LABEL
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-3GJLYUZ6.js";
|
|
7
7
|
import "../../chunk-V2S5DINS.js";
|
|
8
8
|
import "../../chunk-IVEDMK5U.js";
|
|
9
9
|
import {
|
|
10
10
|
ATTRIBUTIONS
|
|
11
|
-
} from "../../chunk-
|
|
11
|
+
} from "../../chunk-U7ADXWTI.js";
|
|
12
12
|
import "../../chunk-I6O6ACCH.js";
|
|
13
13
|
import "../../chunk-HNLYRHAU.js";
|
|
14
14
|
import "../../chunk-6ROQKB4U.js";
|
|
@@ -3,8 +3,8 @@ import "../../chunk-AA3SPDJU.js";
|
|
|
3
3
|
import {
|
|
4
4
|
DEFAULT_SPEC_PLAYGROUND_LABELS,
|
|
5
5
|
SpecPlayground
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
} from "../../chunk-34CYSZ2F.js";
|
|
7
|
+
import "../../chunk-C4FZWPI4.js";
|
|
8
8
|
import "../../chunk-HDDXP2J7.js";
|
|
9
9
|
import "../../chunk-ZSYT5H6U.js";
|
|
10
10
|
import "../../chunk-5LCN5Q2L.js";
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import {
|
|
4
4
|
DEFAULT_SPEC_PLAYGROUND_LABELS,
|
|
5
5
|
SpecPlayground
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
} from "../../chunk-34CYSZ2F.js";
|
|
7
|
+
import "../../chunk-C4FZWPI4.js";
|
|
8
8
|
import "../../chunk-HDDXP2J7.js";
|
|
9
9
|
import "../../chunk-ZSYT5H6U.js";
|
|
10
10
|
import "../../chunk-5LCN5Q2L.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -7682,7 +7682,7 @@ interface SurfaceTourProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
|
7682
7682
|
*/
|
|
7683
7683
|
declare const SurfaceTour: react.ForwardRefExoticComponent<SurfaceTourProps & react.RefAttributes<HTMLElement>>;
|
|
7684
7684
|
|
|
7685
|
-
/** One problem a validator reports — the shape
|
|
7685
|
+
/** One problem a validator reports — the shape the A2UI validator uses. */
|
|
7686
7686
|
interface SpecPlaygroundError {
|
|
7687
7687
|
/** JSON-path-like address of the problem (`root.children[2].props.label`, `$.tiles[0]`). */
|
|
7688
7688
|
path: string;
|
package/dist/index.js
CHANGED
|
@@ -200,8 +200,8 @@ import "./chunk-AA3SPDJU.js";
|
|
|
200
200
|
import {
|
|
201
201
|
DEFAULT_SPEC_PLAYGROUND_LABELS,
|
|
202
202
|
SpecPlayground
|
|
203
|
-
} from "./chunk-
|
|
204
|
-
import "./chunk-
|
|
203
|
+
} from "./chunk-34CYSZ2F.js";
|
|
204
|
+
import "./chunk-C4FZWPI4.js";
|
|
205
205
|
import "./chunk-5P4BSHIG.js";
|
|
206
206
|
import {
|
|
207
207
|
SliderNumber
|
|
@@ -363,7 +363,7 @@ import {
|
|
|
363
363
|
import "./chunk-QODOFLHL.js";
|
|
364
364
|
import {
|
|
365
365
|
MetricCard
|
|
366
|
-
} from "./chunk-
|
|
366
|
+
} from "./chunk-CF7YSCCA.js";
|
|
367
367
|
import "./chunk-LDOCY4SU.js";
|
|
368
368
|
import "./chunk-YK4H7VWM.js";
|
|
369
369
|
import {
|
|
@@ -834,7 +834,7 @@ import "./chunk-4UWOADYM.js";
|
|
|
834
834
|
import {
|
|
835
835
|
AttributionPanel,
|
|
836
836
|
CATEGORY_LABEL
|
|
837
|
-
} from "./chunk-
|
|
837
|
+
} from "./chunk-3GJLYUZ6.js";
|
|
838
838
|
import "./chunk-V2S5DINS.js";
|
|
839
839
|
import {
|
|
840
840
|
ScrollArea,
|
|
@@ -842,7 +842,7 @@ import {
|
|
|
842
842
|
} from "./chunk-IVEDMK5U.js";
|
|
843
843
|
import {
|
|
844
844
|
ATTRIBUTIONS
|
|
845
|
-
} from "./chunk-
|
|
845
|
+
} from "./chunk-U7ADXWTI.js";
|
|
846
846
|
import "./chunk-OEPN373X.js";
|
|
847
847
|
import {
|
|
848
848
|
Avatar,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elabs-ai/components-ui",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"react": "^18.2.0 || ^19.0.0",
|
|
82
82
|
"react-dom": "^18.2.0 || ^19.0.0",
|
|
83
83
|
"react-hook-form": "^7.54.2",
|
|
84
|
-
"@elabs-ai/components-tokens": "^5.
|
|
84
|
+
"@elabs-ai/components-tokens": "^5.3.1"
|
|
85
85
|
},
|
|
86
86
|
"peerDependenciesMeta": {
|
|
87
87
|
"@hookform/resolvers": {
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"vitest": "^3.0.2",
|
|
114
114
|
"zod": "^3.24.1",
|
|
115
115
|
"@elabs-ai/components-eslint-config": "0.1.0",
|
|
116
|
-
"@elabs-ai/components-tokens": "5.
|
|
116
|
+
"@elabs-ai/components-tokens": "5.3.1",
|
|
117
117
|
"@elabs-ai/components-typescript-config": "0.1.0"
|
|
118
118
|
},
|
|
119
119
|
"scripts": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Run `pnpm gen` after changing a dependency, a vendored font, or
|
|
3
3
|
// scripts/attributions.sources.json. `pnpm gen:check` fails on a stale copy.
|
|
4
4
|
//
|
|
5
|
-
//
|
|
5
|
+
// 123 entries (data: 4, source: 20, font: 2, dependency: 97).
|
|
6
6
|
|
|
7
7
|
import type { Attribution } from "./attribution-types";
|
|
8
8
|
|
|
@@ -340,7 +340,7 @@ export const ATTRIBUTIONS: readonly Attribution[] = [
|
|
|
340
340
|
license: "MIT",
|
|
341
341
|
copyright: "Claudéric Demers",
|
|
342
342
|
url: "https://www.npmjs.com/package/@dnd-kit/core",
|
|
343
|
-
usedBy: ["@elabs-ai/components-
|
|
343
|
+
usedBy: ["@elabs-ai/components-data"],
|
|
344
344
|
required: false,
|
|
345
345
|
note: null,
|
|
346
346
|
},
|
|
@@ -1508,16 +1508,4 @@ export const ATTRIBUTIONS: readonly Attribution[] = [
|
|
|
1508
1508
|
required: false,
|
|
1509
1509
|
note: null,
|
|
1510
1510
|
},
|
|
1511
|
-
{
|
|
1512
|
-
id: "zustand",
|
|
1513
|
-
category: "dependency",
|
|
1514
|
-
name: "zustand",
|
|
1515
|
-
version: "5.0.15",
|
|
1516
|
-
license: "MIT",
|
|
1517
|
-
copyright: "Paul Henschel",
|
|
1518
|
-
url: "https://www.npmjs.com/package/zustand",
|
|
1519
|
-
usedBy: ["@elabs-ai/components-charts"],
|
|
1520
|
-
required: false,
|
|
1521
|
-
note: null,
|
|
1522
|
-
},
|
|
1523
1511
|
] as const;
|
|
@@ -31,7 +31,7 @@ function formatResolvedNumber(
|
|
|
31
31
|
|
|
32
32
|
/*
|
|
33
33
|
* ADR 0012: this is the ONE KPI tile — `@elabs-ai/components-charts` re-exports it.
|
|
34
|
-
* RM-072 adds `size` (sm | md | lg) for dashboard
|
|
34
|
+
* RM-072 adds `size` (sm | md | lg) for dashboard tiles and a `sparkline`
|
|
35
35
|
* slot under the value. `ui` never imports `charts`: the host passes the
|
|
36
36
|
* `<Sparkline …/>` element in.
|
|
37
37
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Map a validator's error `path` onto a line of the JSON text it came from, so clicking an
|
|
3
3
|
* error can put the caret there. Paths are JSON-path-like and tolerant of both house styles:
|
|
4
|
-
* `root.children[2].props.variant` (A2UI) and `$.tiles[3].layout.w` (
|
|
4
|
+
* `root.children[2].props.variant` (A2UI) and `$.tiles[3].layout.w` (any tile spec).
|
|
5
5
|
*
|
|
6
6
|
* The scanner is deliberately small: it walks well-formed JSON, recording where each key or
|
|
7
7
|
* array element starts, and returns the DEEPEST prefix of the path that exists — a
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
import { Textarea } from "../textarea";
|
|
27
27
|
import { lineOfParseError, locateJsonPath, offsetOfLine } from "./locate-json-path";
|
|
28
28
|
|
|
29
|
-
/** One problem a validator reports — the shape
|
|
29
|
+
/** One problem a validator reports — the shape the A2UI validator uses. */
|
|
30
30
|
export interface SpecPlaygroundError {
|
|
31
31
|
/** JSON-path-like address of the problem (`root.children[2].props.label`, `$.tiles[0]`). */
|
|
32
32
|
path: string;
|
|
@@ -38,7 +38,15 @@ import { Input } from "./components/input";
|
|
|
38
38
|
const meta = {
|
|
39
39
|
title: "Foundations/Decoration",
|
|
40
40
|
tags: ["autodocs"],
|
|
41
|
-
parameters: {
|
|
41
|
+
parameters: {
|
|
42
|
+
layout: "padded",
|
|
43
|
+
docs: {
|
|
44
|
+
description: {
|
|
45
|
+
component:
|
|
46
|
+
"The decoration dial: one 0–10 setting that adds or removes background texture and chart-fill expressiveness across a whole subtree, without touching controls.",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
42
50
|
} satisfies Meta;
|
|
43
51
|
export default meta;
|
|
44
52
|
|
|
@@ -35,6 +35,14 @@ const meta = {
|
|
|
35
35
|
title: "States/Illustrations",
|
|
36
36
|
component: Demo,
|
|
37
37
|
tags: ["autodocs"],
|
|
38
|
+
parameters: {
|
|
39
|
+
docs: {
|
|
40
|
+
description: {
|
|
41
|
+
component:
|
|
42
|
+
"The illustration set behind the empty, error and loading states: token-coloured, legible at small sizes and matched to both themes.",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
38
46
|
argTypes: {
|
|
39
47
|
size: {
|
|
40
48
|
control: "text",
|
package/src/motion.stories.tsx
CHANGED
|
@@ -138,7 +138,15 @@ function MotionDemo() {
|
|
|
138
138
|
const meta = {
|
|
139
139
|
title: "Foundations/Motion",
|
|
140
140
|
tags: ["autodocs"],
|
|
141
|
-
parameters: {
|
|
141
|
+
parameters: {
|
|
142
|
+
layout: "centered",
|
|
143
|
+
docs: {
|
|
144
|
+
description: {
|
|
145
|
+
component:
|
|
146
|
+
"The motion system: duration and easing tokens that every transition uses, scaled by the person's motion preference down to none.",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
142
150
|
} satisfies Meta;
|
|
143
151
|
|
|
144
152
|
export default meta;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/attribution-panel/attributions.generated.ts"],"sourcesContent":["// GENERATED by scripts/gen-attributions.mjs — DO NOT EDIT BY HAND.\n// Run `pnpm gen` after changing a dependency, a vendored font, or\n// scripts/attributions.sources.json. `pnpm gen:check` fails on a stale copy.\n//\n// 124 entries (data: 4, source: 20, font: 2, dependency: 98).\n\nimport type { Attribution } from \"./attribution-types\";\n\nexport const ATTRIBUTIONS: readonly Attribution[] = [\n {\n version: null,\n note: \"Default light/dark basemap styles and tiles (positron / dark-matter).\",\n id: \"carto\",\n category: \"data\",\n name: \"CARTO\",\n license: \"CARTO basemap terms\",\n copyright: \"© CARTO\",\n url: \"https://carto.com/about-carto/\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"Map data behind the default Carto basemap. ODbL obliges the credit wherever the tiles are shown.\",\n id: \"openstreetmap\",\n category: \"data\",\n name: \"OpenStreetMap\",\n license: \"ODbL-1.0\",\n copyright: \"© OpenStreetMap contributors\",\n url: \"https://www.openstreetmap.org/copyright\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"The `countries-110m` TopoJSON build of Natural Earth that `world-fixture.ts` was converted from (once, offline — no TopoJSON decoder ships). ISC requires the copyright notice.\",\n id: \"world-atlas\",\n category: \"data\",\n name: \"world-atlas\",\n license: \"ISC\",\n copyright: \"Copyright 2013-2024 Michael Bostock\",\n url: \"https://github.com/topojson/world-atlas\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: true,\n },\n {\n version: null,\n note: 'The 1:110m admin-0 country outlines behind `ChoroplethChart`\\'s bundled \"world\" fixture (packages/charts/src/charts/choropleth/world-fixture.ts). Public domain, so the credit is courtesy, not an obligation.',\n id: \"natural-earth\",\n category: \"data\",\n name: \"Natural Earth\",\n license: \"public-domain\",\n copyright: \"Public domain (Natural Earth terms of use)\",\n url: \"https://www.naturalearthdata.com/about/terms-of-use/\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Vendored into @elabs-ai/components-ai and rewired onto brand-ui primitives and tokens. Apache-2.0, NOT MIT: §4 obliges us to carry the notice and to state that we modified the files.\",\n id: \"vercel-ai-elements\",\n category: \"source\",\n name: \"AI Elements\",\n license: \"Apache-2.0\",\n copyright: \"Copyright 2023 Vercel, Inc.\",\n url: \"https://github.com/vercel/ai-elements\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: true,\n },\n {\n version: null,\n note: \"The ShimmeringText component, from the ncdai shadcn registry. Its TRADEMARK.md grants no right to the author's name or brand assets — the code is adopted, the branding is not.\",\n id: \"shimmering-text\",\n category: \"source\",\n name: \"@ncdai/shimmering-text\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Chánh Đại\",\n url: \"https://github.com/ncdai/chanhdai.com\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The pluggable adapter-registry architecture behind the file viewer (ADR 0024).\",\n id: \"anyview\",\n category: \"source\",\n name: \"anyview\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 harshpreet931\",\n url: \"https://github.com/harshpreet931/anyview\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The message-part grouping design behind part-groups.ts, re-expressed in this library's idiom.\",\n id: \"assistant-ui\",\n category: \"source\",\n name: \"assistant-ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 AgentbaseAI Inc.\",\n url: \"https://github.com/assistant-ui/assistant-ui\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n },\n {\n version: null,\n note: \"Sample datasets in the bar / composed / candlestick chart stories. Attributed to bklit-ui (MIT, the charts library) rather than the archived bklit app (CC BY-NC 4.0) — see the note in ATTRIBUTION.md.\",\n id: \"bklit-ui\",\n category: \"source\",\n name: \"Bklit UI\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 uixmat\",\n url: \"https://github.com/bklit/bklit-ui\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Agent-session UI logic re-expressed on our tokens: the line-level diff model and its screen-reader polarity prefixes, the scoped N-option permission anatomy, the slash-palette prefix-filter/clamp behaviour, the turn-status elapsed formatter, the hook/lifecycle event line, and the grouped keyboard-shortcuts sheet. No upstream code, styling or terminal palette is shipped.\",\n id: \"brainless\",\n category: \"source\",\n name: \"brainless\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Ben Swerdlow\",\n url: \"https://github.com/theswerd/brainless\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-ui\", \"@elabs-ai/components-terminal\"],\n required: false,\n },\n {\n version: null,\n note: \"The view-state seam and chrome-part inversion the viewer adopted (ADR 0026). Its LICENSE.md carries two copyright lines; both are reproduced.\",\n id: \"extend-hq-ui\",\n category: \"source\",\n name: \"extend-hq/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 CrowdView Inc, dba Extend; portions Copyright (c) 2023 shadcn\",\n url: \"https://github.com/extend-hq/ui\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The eXtensible Event Stream interchange format fromXes reads: a <log> of <trace>s of <event>s, each carrying typed key/value attributes, plus <classifier> and lifecycle:transition. Only the format is implemented, by a hand-rolled tokenizer; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"xes-ieee-1849\",\n category: \"source\",\n name: \"IEEE 1849-2016 (XES)\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© IEEE\",\n url: \"https://standards.ieee.org/ieee/1849/6811/\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"The editorial chart gallery behind the 2026-09-04 charts gap analysis: 71 files across the charts and tokens packages cite it as the source of a value, a mark shape or a composition (unit decomposition, hairline furniture, the sequential/diverging ramps, the reveal timing), and three copy-own registry blocks (chart-editorial-hourglass, -patchwork, -almanac) reproduce three of its gallery cards' DATA-SHAPE DESCRIPTIONS from that same analysis' one-line prose. No code was copied verbatim — each was re-expressed onto this repo's tokens and primitives. Its LICENSE is PolyForm Noncommercial 1.0.0, read verbatim from the upstream file; GitHub's own detection reports NOASSERTION, which is why nothing flagged it earlier. The licence's Required Notice slot is left at the template's example value, so upstream states no copyright holder and none is claimed here. Noncommercial-only is unresolved for a repo headed for public release — a licensing decision for the maintainer, not something attribution settles.\",\n id: \"lieflat-charts\",\n category: \"source\",\n name: \"lieflat-charts\",\n license: \"PolyForm-Noncommercial-1.0.0\",\n copyright: null,\n url: \"https://github.com/larashero3-dotcom/lieflat-charts\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"The live-axis tick-interval picker behind live-y-axis.tsx. Upstream now names that function niceTimeInterval.\",\n id: \"liveline\",\n category: \"source\",\n name: \"Liveline\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025-2026 Benji Taylor\",\n url: \"https://github.com/benjitaylor/liveline\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The MapLibre component set @elabs-ai/components-maps was adapted from (ADR 0015).\",\n id: \"mapcn\",\n category: \"source\",\n name: \"mapcn\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Anmoldeep Singh\",\n url: \"https://github.com/AnmolSaini16/mapcn\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: false,\n },\n {\n version: null,\n note: \"The @milkdown/react integration is vendored under markdown-editor/milkdown-react/ and adapted; Milkdown itself is also a runtime dependency.\",\n id: \"milkdown\",\n category: \"source\",\n name: \"Milkdown\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2020-present Mirone\",\n url: \"https://github.com/Milkdown/milkdown\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n },\n {\n version: null,\n note: \"The Object-Centric Event Log 2.0 JSON serialization fromOcel reads (objectTypes, objects, events, relationships). Only the format is implemented; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"ocel-2-0\",\n category: \"source\",\n name: \"OCEL 2.0 specification\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© the OCEL 2.0 specification authors\",\n url: \"https://doi.org/10.48550/arXiv.2403.01975\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Algorithm shape for the framework-free process-mining core: which aggregates a directly-follows graph carries (discoverGraph) and how traces are grouped into variants (extractVariants), with durationStats as their shared summary; and the token-based replay procedure behind tokenReplay (produced/consumed/missing/remaining counting, silent-transition enabling before forcing missing tokens); and the object-centric directly-follows graph (discoverObjectCentricGraph): one directly-follows graph per object type, shared activities merged into one node with per-type counts, edges kept per type. Re-typed in TypeScript from the published algorithms, not copied.\",\n id: \"pm4js\",\n category: \"source\",\n name: \"pm4js\",\n license: \"BSD-3-Clause\",\n copyright: \"Copyright 2021 Alessandro Berti\",\n url: \"https://github.com/pm4js/pm4js-core\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Beyond the npm dependency below, the shipped dist of react-scroll-area and react-select is modified in patches/ — disclosed here so the change is not invisible.\",\n id: \"radix-primitives-patched\",\n category: \"source\",\n name: \"Radix UI Primitives (patched)\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2022 WorkOS\",\n url: \"https://github.com/radix-ui/primitives\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The owned-source component model and many primitive implementations; the registry is shadcn-compatible (ADR 0001).\",\n id: \"shadcn-ui\",\n category: \"source\",\n name: \"shadcn/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2023 shadcn\",\n url: \"https://github.com/shadcn-ui/ui\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The stacked, layered elevation-ramp technique behind the shadow tokens (ADR 0020).\",\n id: \"shadow-plugin\",\n category: \"source\",\n name: \"shadow-plugin\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Florian Kiem\",\n url: \"https://github.com/flornkm/shadow-plugin\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"world-countries.json, fetched at runtime by the stat-card-choropleth-01 registry block. Its LICENSE names no holder, and upstream traces the file to johan/world.geo.json, which calls its own legal status dubious — the block already carries a TODO to self-host a clean source.\",\n id: \"subyfly-topojson\",\n category: \"source\",\n name: \"subyfly/topojson\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2016\",\n url: \"https://github.com/subyfly/topojson\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"The composition-patterns skill behind the component-api rule's compound-component conventions. The repo declares NO licence and ships no LICENSE file — credited by link, with no licence claimed.\",\n id: \"vercel-agent-skills\",\n category: \"source\",\n name: \"vercel-labs/agent-skills\",\n license: \"No licence declared\",\n copyright: null,\n url: \"https://github.com/vercel-labs/agent-skills\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"Adopted delta-only into the repo's interaction-guidelines rule. Governance, not shipped code.\",\n id: \"web-interface-guidelines\",\n category: \"source\",\n name: \"Web Interface Guidelines\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Vercel Labs\",\n url: \"https://github.com/vercel-labs/web-interface-guidelines\",\n usedBy: [],\n required: false,\n },\n {\n id: \"font:inter\",\n category: \"font\",\n name: \"Inter\",\n version: null,\n license: \"OFL-1.1\",\n copyright: \"Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)\",\n url: \"https://github.com/rsms/inter\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"font:source-code-pro\",\n category: \"font\",\n name: \"Source Code Pro\",\n version: null,\n license: \"OFL-1.1\",\n copyright:\n \"Copyright 2010-2020 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved.\",\n url: \"https://github.com/adobe-fonts/source-code-pro\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"@dagrejs/dagre\",\n category: \"dependency\",\n name: \"@dagrejs/dagre\",\n version: \"3.0.0\",\n license: \"MIT\",\n copyright: \"Chris Pettitt\",\n url: \"https://www.npmjs.com/package/@dagrejs/dagre\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/core\",\n category: \"dependency\",\n name: \"@dnd-kit/core\",\n version: \"6.3.1\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/core\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/sortable\",\n category: \"dependency\",\n name: \"@dnd-kit/sortable\",\n version: \"10.0.0\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/sortable\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/utilities\",\n category: \"dependency\",\n name: \"@dnd-kit/utilities\",\n version: \"3.2.2\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/utilities\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@milkdown/kit\",\n category: \"dependency\",\n name: \"@milkdown/kit\",\n version: \"7.21.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@milkdown/kit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@number-flow/react\",\n category: \"dependency\",\n name: \"@number-flow/react\",\n version: \"0.5.14\",\n license: \"MIT\",\n copyright: \"Maxwell Barvian\",\n url: \"https://www.npmjs.com/package/@number-flow/react\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@prosemirror-adapter/react\",\n category: \"dependency\",\n name: \"@prosemirror-adapter/react\",\n version: \"0.5.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@prosemirror-adapter/react\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-accordion\",\n category: \"dependency\",\n name: \"@radix-ui/react-accordion\",\n version: \"1.2.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-accordion\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-alert-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-alert-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-alert-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-aspect-ratio\",\n category: \"dependency\",\n name: \"@radix-ui/react-aspect-ratio\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-aspect-ratio\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-avatar\",\n category: \"dependency\",\n name: \"@radix-ui/react-avatar\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-avatar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-checkbox\",\n category: \"dependency\",\n name: \"@radix-ui/react-checkbox\",\n version: \"1.3.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-checkbox\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-collapsible\",\n category: \"dependency\",\n name: \"@radix-ui/react-collapsible\",\n version: \"1.1.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-collapsible\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-context-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-context-menu\",\n version: \"2.2.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-context-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-direction\",\n category: \"dependency\",\n name: \"@radix-ui/react-direction\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-direction\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dropdown-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-dropdown-menu\",\n version: \"2.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dropdown-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-hover-card\",\n category: \"dependency\",\n name: \"@radix-ui/react-hover-card\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-hover-card\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-label\",\n category: \"dependency\",\n name: \"@radix-ui/react-label\",\n version: \"2.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-label\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-menubar\",\n category: \"dependency\",\n name: \"@radix-ui/react-menubar\",\n version: \"1.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-menubar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-navigation-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-navigation-menu\",\n version: \"1.2.14\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-navigation-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-popover\",\n category: \"dependency\",\n name: \"@radix-ui/react-popover\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-popover\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-progress\",\n category: \"dependency\",\n name: \"@radix-ui/react-progress\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-progress\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-radio-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-radio-group\",\n version: \"1.3.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-radio-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-scroll-area\",\n category: \"dependency\",\n name: \"@radix-ui/react-scroll-area\",\n version: \"1.2.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-scroll-area\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-select\",\n category: \"dependency\",\n name: \"@radix-ui/react-select\",\n version: \"2.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-select\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-separator\",\n category: \"dependency\",\n name: \"@radix-ui/react-separator\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-separator\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slider\",\n category: \"dependency\",\n name: \"@radix-ui/react-slider\",\n version: \"1.3.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slider\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slot\",\n category: \"dependency\",\n name: \"@radix-ui/react-slot\",\n version: \"1.2.4\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slot\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-switch\",\n category: \"dependency\",\n name: \"@radix-ui/react-switch\",\n version: \"1.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-switch\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tabs\",\n category: \"dependency\",\n name: \"@radix-ui/react-tabs\",\n version: \"1.1.13\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tabs\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle\",\n version: \"1.1.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle-group\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toolbar\",\n category: \"dependency\",\n name: \"@radix-ui/react-toolbar\",\n version: \"1.1.19\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toolbar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tooltip\",\n category: \"dependency\",\n name: \"@radix-ui/react-tooltip\",\n version: \"1.2.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tooltip\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-use-controllable-state\",\n category: \"dependency\",\n name: \"@radix-ui/react-use-controllable-state\",\n version: \"1.2.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-use-controllable-state\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/cjk\",\n category: \"dependency\",\n name: \"@streamdown/cjk\",\n version: \"1.0.3\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/cjk\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/code\",\n category: \"dependency\",\n name: \"@streamdown/code\",\n version: \"1.1.1\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/code\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/math\",\n category: \"dependency\",\n name: \"@streamdown/math\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/math\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/mermaid\",\n category: \"dependency\",\n name: \"@streamdown/mermaid\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/mermaid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-table\",\n category: \"dependency\",\n name: \"@tanstack/react-table\",\n version: \"8.21.3\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-table\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-virtual\",\n category: \"dependency\",\n name: \"@tanstack/react-virtual\",\n version: \"3.14.2\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-virtual\",\n usedBy: [\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"@visx/brush\",\n category: \"dependency\",\n name: \"@visx/brush\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/brush\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/curve\",\n category: \"dependency\",\n name: \"@visx/curve\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/curve\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/event\",\n category: \"dependency\",\n name: \"@visx/event\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/event\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/geo\",\n category: \"dependency\",\n name: \"@visx/geo\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@nschnierer\",\n url: \"https://www.npmjs.com/package/@visx/geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/gradient\",\n category: \"dependency\",\n name: \"@visx/gradient\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/gradient\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/grid\",\n category: \"dependency\",\n name: \"@visx/grid\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/grid\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/group\",\n category: \"dependency\",\n name: \"@visx/group\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/group\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/pattern\",\n category: \"dependency\",\n name: \"@visx/pattern\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/pattern\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/responsive\",\n category: \"dependency\",\n name: \"@visx/responsive\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/responsive\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/sankey\",\n category: \"dependency\",\n name: \"@visx/sankey\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@jacksonhardaker\",\n url: \"https://www.npmjs.com/package/@visx/sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/scale\",\n category: \"dependency\",\n name: \"@visx/scale\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@visx/scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/shape\",\n category: \"dependency\",\n name: \"@visx/shape\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/zoom\",\n category: \"dependency\",\n name: \"@visx/zoom\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/zoom\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"ansi-to-react\",\n category: \"dependency\",\n name: \"ansi-to-react\",\n version: \"6.2.6\",\n license: \"BSD-3-Clause\",\n copyright: \"Kyle Kelley\",\n url: \"https://www.npmjs.com/package/ansi-to-react\",\n usedBy: [\"@elabs-ai/components-terminal\"],\n required: false,\n note: null,\n },\n {\n id: \"class-variance-authority\",\n category: \"dependency\",\n name: \"class-variance-authority\",\n version: \"0.7.1\",\n license: \"Apache-2.0\",\n copyright: \"Joe Bell\",\n url: \"https://www.npmjs.com/package/class-variance-authority\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"clsx\",\n category: \"dependency\",\n name: \"clsx\",\n version: \"2.1.1\",\n license: \"MIT\",\n copyright: \"Luke Edwards\",\n url: \"https://www.npmjs.com/package/clsx\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"cmdk\",\n category: \"dependency\",\n name: \"cmdk\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: \"Paco\",\n url: \"https://www.npmjs.com/package/cmdk\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-array\",\n category: \"dependency\",\n name: \"d3-array\",\n version: \"3.2.4\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-array\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-force\",\n category: \"dependency\",\n name: \"d3-force\",\n version: \"3.0.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-force\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-geo\",\n category: \"dependency\",\n name: \"d3-geo\",\n version: \"3.1.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-hierarchy\",\n category: \"dependency\",\n name: \"d3-hierarchy\",\n version: \"3.1.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-hierarchy\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-sankey\",\n category: \"dependency\",\n name: \"d3-sankey\",\n version: \"0.12.3\",\n license: \"BSD-3-Clause\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-scale\",\n category: \"dependency\",\n name: \"d3-scale\",\n version: \"4.0.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-shape\",\n category: \"dependency\",\n name: \"d3-shape\",\n version: \"3.2.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n version: \"0.12.0\",\n note: \"elkjs adapter — RM-067. The Eclipse Layout Kernel, behind layoutFlowElk. An OPTIONAL peer dependency, so the derived dependency list (plain `dependencies` only) cannot see it; it is credited here instead. Never bundled into the package: loaded with import() from the host's own install, and used under EPL-2.0. The licence text (LICENSE.md) names no holder; the copyright line is read verbatim from the header of elkjs's own lib/elk-api.d.ts.\",\n id: \"elkjs\",\n category: \"dependency\",\n name: \"elkjs\",\n license: \"EPL-2.0 OR GPL-3.0-or-later\",\n copyright: \"Copyright (c) 2019 TypeFox and others\",\n url: \"https://github.com/kieler/elkjs\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n },\n {\n id: \"embla-carousel-react\",\n category: \"dependency\",\n name: \"embla-carousel-react\",\n version: \"8.6.0\",\n license: \"MIT\",\n copyright: \"David Jerleke\",\n url: \"https://www.npmjs.com/package/embla-carousel-react\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"input-otp\",\n category: \"dependency\",\n name: \"input-otp\",\n version: \"1.4.2\",\n license: \"MIT\",\n copyright: \"Guilherme Rodz\",\n url: \"https://www.npmjs.com/package/input-otp\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"js-yaml\",\n category: \"dependency\",\n name: \"js-yaml\",\n version: \"4.2.0\",\n license: \"MIT\",\n copyright: \"Vladimir Zapparov\",\n url: \"https://www.npmjs.com/package/js-yaml\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"katex\",\n category: \"dependency\",\n name: \"katex\",\n version: \"0.16.47\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/katex\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"lucide-react\",\n category: \"dependency\",\n name: \"lucide-react\",\n version: \"0.577.0\",\n license: \"ISC\",\n copyright: \"Eric Fennis\",\n url: \"https://www.npmjs.com/package/lucide-react\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-flow\",\n \"@elabs-ai/components-maps\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"mdast-util-directive\",\n category: \"dependency\",\n name: \"mdast-util-directive\",\n version: \"3.1.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/mdast-util-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"mermaid\",\n category: \"dependency\",\n name: \"mermaid\",\n version: \"11.15.0\",\n license: \"MIT\",\n copyright: \"Knut Sveidqvist\",\n url: \"https://www.npmjs.com/package/mermaid\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"micromark-extension-directive\",\n category: \"dependency\",\n name: \"micromark-extension-directive\",\n version: \"4.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/micromark-extension-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"motion\",\n category: \"dependency\",\n name: \"motion\",\n version: \"12.40.0\",\n license: \"MIT\",\n copyright: \"Matt Perry\",\n url: \"https://www.npmjs.com/package/motion\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"nanoid\",\n category: \"dependency\",\n name: \"nanoid\",\n version: \"5.1.11\",\n license: \"MIT\",\n copyright: \"Andrey Sitnik\",\n url: \"https://www.npmjs.com/package/nanoid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-day-picker\",\n category: \"dependency\",\n name: \"react-day-picker\",\n version: \"9.14.0\",\n license: \"MIT\",\n copyright: \"Giampaolo Bellavite\",\n url: \"https://www.npmjs.com/package/react-day-picker\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-jsx-parser\",\n category: \"dependency\",\n name: \"react-jsx-parser\",\n version: \"2.4.1\",\n license: \"MIT\",\n copyright: \"Troy Alford\",\n url: \"https://www.npmjs.com/package/react-jsx-parser\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-resizable-panels\",\n category: \"dependency\",\n name: \"react-resizable-panels\",\n version: \"2.1.9\",\n license: \"MIT\",\n copyright: \"Brian Vaughn\",\n url: \"https://www.npmjs.com/package/react-resizable-panels\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-use-measure\",\n category: \"dependency\",\n name: \"react-use-measure\",\n version: \"2.1.7\",\n license: \"MIT\",\n copyright: \"Paul Henschel\",\n url: \"https://www.npmjs.com/package/react-use-measure\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-directive\",\n category: \"dependency\",\n name: \"remark-directive\",\n version: \"4.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-frontmatter\",\n category: \"dependency\",\n name: \"remark-frontmatter\",\n version: \"5.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-frontmatter\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-gfm\",\n category: \"dependency\",\n name: \"remark-gfm\",\n version: \"4.0.1\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-gfm\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-math\",\n category: \"dependency\",\n name: \"remark-math\",\n version: \"6.0.0\",\n license: \"MIT\",\n copyright: \"Junyoung Choi\",\n url: \"https://www.npmjs.com/package/remark-math\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-parse\",\n category: \"dependency\",\n name: \"remark-parse\",\n version: \"11.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-parse\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"shiki\",\n category: \"dependency\",\n name: \"shiki\",\n version: \"3.23.0\",\n license: \"MIT\",\n copyright: \"Pine Wu; Anthony Fu\",\n url: \"https://www.npmjs.com/package/shiki\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"sonner\",\n category: \"dependency\",\n name: \"sonner\",\n version: \"1.7.4\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/sonner\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"streamdown\",\n category: \"dependency\",\n name: \"streamdown\",\n version: \"2.5.0\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/streamdown\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"tailwind-merge\",\n category: \"dependency\",\n name: \"tailwind-merge\",\n version: \"2.6.1\",\n license: \"MIT\",\n copyright: \"Dany Castillo\",\n url: \"https://www.npmjs.com/package/tailwind-merge\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"tokenlens\",\n category: \"dependency\",\n name: \"tokenlens\",\n version: \"1.3.1\",\n license: \"MIT\",\n copyright: \"Nicklas Scharpff\",\n url: \"https://www.npmjs.com/package/tokenlens\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"tw-animate-css\",\n category: \"dependency\",\n name: \"tw-animate-css\",\n version: \"1.4.0\",\n license: \"MIT\",\n copyright: \"Luca Bosin\",\n url: \"https://www.npmjs.com/package/tw-animate-css\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n note: null,\n },\n {\n id: \"unified\",\n category: \"dependency\",\n name: \"unified\",\n version: \"11.0.5\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unified\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"unist-util-visit\",\n category: \"dependency\",\n name: \"unist-util-visit\",\n version: \"5.1.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unist-util-visit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"use-stick-to-bottom\",\n category: \"dependency\",\n name: \"use-stick-to-bottom\",\n version: \"1.1.6\",\n license: \"MIT\",\n copyright: \"Sam Denty\",\n url: \"https://www.npmjs.com/package/use-stick-to-bottom\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"vaul\",\n category: \"dependency\",\n name: \"vaul\",\n version: \"1.1.2\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/vaul\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"zod\",\n category: \"dependency\",\n name: \"zod\",\n version: \"3.25.76\",\n license: \"MIT\",\n copyright: \"Colin McDonnell\",\n url: \"https://www.npmjs.com/package/zod\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"zustand\",\n category: \"dependency\",\n name: \"zustand\",\n version: \"5.0.15\",\n license: \"MIT\",\n copyright: \"Paul Henschel\",\n url: \"https://www.npmjs.com/package/zustand\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n] as const;\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/metric-card/metric-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes, type ReactNode, forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Card, CardContent } from \"../card\";\nimport { CopyableValue } from \"../copyable-value\";\nimport { Skeleton } from \"../skeleton\";\nimport { useLocale } from \"../locale-provider\";\nimport { cn } from \"../../lib/cn\";\nimport {\n type NumberFormat,\n type ResolvedNumberFormat,\n resolveNumberFormat,\n} from \"../../lib/compact-number\";\n\n/**\n * Applies a {@link ResolvedNumberFormat}'s `prefix`/`suffix`/`parens` on top\n * of the plain `Intl` string `formatNumber` produces — the two things Intl\n * itself cannot render (RM-109). Twin of `formatResolvedChartValue`\n * (`packages/charts/src/charts/chart-formatters.ts`).\n */\nfunction formatResolvedNumber(\n resolved: ResolvedNumberFormat,\n formatNumber: (n: number, opts?: Intl.NumberFormatOptions) => string,\n value: number,\n): string {\n const numeric = formatNumber(resolved.parens ? Math.abs(value) : value, resolved.options);\n const signed = resolved.parens && value < 0 ? `(${numeric})` : numeric;\n return `${resolved.prefix}${signed}${resolved.suffix}`;\n}\n\n/*\n * ADR 0012: this is the ONE KPI tile — `@elabs-ai/components-charts` re-exports it.\n * RM-072 adds `size` (sm | md | lg) for dashboard-sheet tiles and a `sparkline`\n * slot under the value. `ui` never imports `charts`: the host passes the\n * `<Sparkline …/>` element in.\n */\n\n/*\n * `emphasis` — size/weight/space ONLY, no new hue (research 11 §B.5 KPI-1/5):\n * `headline` is the answer-leading rung (`text-kpi`, ~32px); `default` stays\n * calm on the intermediate 1.5rem reading rung (the pre-#188 step between\n * `title` and `kpi` — no app role exists there, same precedent as the prose\n * h1/h3 rungs; baselined in the text-scale ratchet).\n */\nconst metricValueVariants = cva(\"tabular-nums text-foreground\", {\n variants: {\n emphasis: {\n default: \"text-2xl font-semibold tracking-tight\",\n headline: \"text-kpi\",\n },\n /* `md` adds nothing (today's rungs); `sm`/`lg` override the size via `cn()`. */\n size: {\n sm: \"text-title\",\n md: \"\",\n lg: \"text-kpi\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricContentVariants = cva(\"space-y-2\", {\n variants: {\n emphasis: {\n default: \"p-5\",\n headline: \"p-6\",\n },\n size: {\n sm: \"space-y-1 p-3\",\n md: \"\",\n lg: \"p-6\",\n },\n },\n defaultVariants: { emphasis: \"default\", size: \"md\" },\n});\n\nconst metricSparklineVariants = cva(\"\", {\n variants: {\n size: {\n /* never rendered — `sm` drops the slot; kept so the axis is total */\n sm: \"\",\n md: \"pt-1\",\n lg: \"min-h-12 pt-2\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport type MetricCardEmphasis = NonNullable<VariantProps<typeof metricValueVariants>[\"emphasis\"]>;\n\n/**\n * Tile tier (RM-072). `sm`: label + value only (no icon, delta, description,\n * sparkline, visual or evidence); `md`: the default tile; `lg`: the kpi value\n * rung with more room for the `sparkline` slot.\n */\nexport type MetricCardSize = NonNullable<VariantProps<typeof metricValueVariants>[\"size\"]>;\n\n/**\n * How a NUMERIC `value` is rendered. A function takes over completely.\n *\n * `\"compact\"` is the default because a KPI tile is a small box and\n * `50012102.632741` does not fit in one — the exact figure stays one click\n * away via `CopyableValue`. Anything that is not a `number` (a string, an\n * element) is passed through untouched, so every existing call site is\n * unaffected.\n *\n * Also accepts the object form (RM-109, `NumberFormatSpec` —\n * `{ decimals, abbreviate, sign, prefix, suffix, … }`,\n * `packages/ui/src/lib/compact-number.ts`) for a tile that needs e.g.\n * `{ decimals: 1, suffix: \"%\" }` without hand-formatting the string itself.\n * The two preset-string cases render byte-for-byte as before this type\n * widened — only a spec OBJECT argument reaches the new code path.\n */\nexport type MetricCardValueFormat = NumberFormat | ((value: number) => ReactNode);\n\nexport interface MetricCardProps\n extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof metricValueVariants> {\n label: ReactNode;\n value: ReactNode;\n /**\n * How to render a NUMERIC `value`. Default: `\"compact\"`. Ignored for every\n * other `ReactNode` — a string you already formatted is rendered verbatim.\n */\n valueFormat?: MetricCardValueFormat;\n /** ISO 4217 code for `valueFormat: \"currency\"`. Default: `\"USD\"`. */\n currency?: string;\n /**\n * Offer the exact figure on click when a numeric `value` was shortened.\n * Default: `true`. Turning it off leaves a compacted number with no way back\n * to its digits, so only do that when the tile is decorative.\n */\n copyExactValue?: boolean;\n /** Secondary line under the value — sublabel / context. */\n description?: ReactNode;\n /** Signed change, e.g. \"+12.4%\". Direction colors it. */\n delta?: string;\n deltaDirection?: \"up\" | \"down\" | \"neutral\";\n /** Whether \"up\" is good (green) — flip for metrics where down is good. */\n positiveIsGood?: boolean;\n icon?: ReactNode;\n /** Optional inline visual shown under the value/description. */\n visual?: ReactNode;\n /**\n * Trend slot rendered directly under the value (RM-072) — pass a\n * `<Sparkline …/>` from `@elabs-ai/components-charts`. Hidden at `size=\"sm\"`.\n */\n sparkline?: ReactNode;\n /**\n * Optional grounding footer (research 11 §B.5 KPI-3) — connects a cited\n * figure to its source (e.g. an `EvidenceChip` from `@elabs-ai/components-ai`). Rendered\n * subdued (`text-meta text-muted-foreground`) under the tile body.\n */\n evidence?: ReactNode;\n /**\n * Loading vs ready — renders a layout-shaped skeleton (matching the real\n * box height) instead of the value/label/delta text. Default: `false`.\n */\n loading?: boolean;\n /**\n * Whether this tile announces its own `loading` state via a live region.\n * Set to `false` when several tiles are composed inside a container that\n * already announces once for the whole region (e.g. a loading\n * `MetricGrid`) — see loading-states.md §a11y (\"one live region per\n * region, not per box\"). Default: `true`.\n */\n announceLoading?: boolean;\n}\n\n/** Compact KPI tile for dashboards. */\nexport const MetricCard = forwardRef<HTMLDivElement, MetricCardProps>(function MetricCard(\n {\n label,\n value,\n valueFormat = \"compact\",\n currency,\n copyExactValue = true,\n description,\n delta,\n deltaDirection = \"neutral\",\n positiveIsGood = true,\n icon,\n visual,\n sparkline,\n evidence,\n emphasis,\n size,\n loading = false,\n announceLoading = true,\n className,\n ...props\n },\n ref,\n) {\n const { t, formatNumber } = useLocale();\n\n // Formatting applies to NUMBERS only. Every shipped call site passes a string\n // it formatted itself, so this branch is inert for them — that is what makes\n // a new default safe.\n const isNumeric = typeof value === \"number\";\n const formattedValue: ReactNode = !isNumeric\n ? value\n : typeof valueFormat === \"function\"\n ? valueFormat(value)\n : formatResolvedNumber(\n resolveNumberFormat(valueFormat, value, currency),\n formatNumber,\n value,\n );\n // Only offer the exact figure when the display actually differs from it —\n // a button around a value that was never shortened is noise.\n const showsExact = isNumeric && String(formattedValue) === String(value);\n const canCopyExact =\n isNumeric && copyExactValue && typeof valueFormat !== \"function\" && !showsExact;\n\n const good =\n deltaDirection === \"up\" ? positiveIsGood : deltaDirection === \"down\" ? !positiveIsGood : null;\n const deltaColor =\n good === null ? \"text-muted-foreground\" : good ? \"text-success-text\" : \"text-destructive-text\";\n // Stable, theme-agnostic polarity hook. High decoration reveals a non-color\n // polarity glyph from this attribute (decoration.css); chromatic themes ignore it\n // and use color. Issue #162.\n const polarity = good === null ? \"neutral\" : good ? \"good\" : \"bad\";\n const arrow = deltaDirection === \"up\" ? \"↑\" : deltaDirection === \"down\" ? \"↓\" : \"\";\n // Direction is conveyed visually by the arrow glyph + color; give AT a single\n // unambiguous name (\"up 12.4%, favorable\") since neither the glyph nor color is a\n // reliable signal (high decoration / high-contrast collapse the hue) — and good/bad\n // polarity is otherwise invisible to AT. See accessibility.md, #162.\n const directionLabel = deltaDirection === \"up\" ? \"up\" : deltaDirection === \"down\" ? \"down\" : \"\";\n const polarityLabel = good === null ? \"\" : good ? \", favorable\" : \", unfavorable\";\n // `sm` is label + value only: every secondary row is dropped (RM-072).\n const compact = size === \"sm\";\n const valueClassName = cn(metricValueVariants({ emphasis, size }));\n\n return (\n <Card ref={ref} className={cn(\"overflow-hidden\", className)} {...props}>\n <CardContent\n className={cn(metricContentVariants({ emphasis, size }))}\n {...(loading && announceLoading ? { role: \"status\", \"aria-live\": \"polite\" as const } : {})}\n >\n {loading && announceLoading ? (\n <span className=\"sr-only\">{t(\"ui.metricCard.loading\")}</span>\n ) : null}\n <div className=\"flex items-center justify-between\">\n {loading ? (\n <Skeleton className=\"h-4 w-24\" />\n ) : (\n /* `min-w-0` + `truncate`, not just the text utility: a flex child's\n default `min-width: auto` refuses to shrink below its content, so\n without it the label OVERFLOWS the row and `Card`'s own\n `overflow-hidden` hard-clips it — characters lost mid-word, no\n ellipsis, no title. Measured on a 230px pane: \"Awaiting approval\"\n rendered as \"Awaiting approva\". See interaction-guidelines.md\n § Content handling (\"flex children need `min-w-0`\"). `title` only\n when the label is a string — there is nothing to put in the\n attribute otherwise, and the ellipsis needs a way back to the\n full words. */\n <span\n className=\"min-w-0 truncate text-body font-medium text-muted-foreground\"\n title={typeof label === \"string\" ? label : undefined}\n >\n {label}\n </span>\n )}\n {/* `shrink-0`: the icon is a fixed 16px mark, so the LABEL is what\n gives way when the row runs out of width. */}\n {icon && !compact ? (\n <span className=\"shrink-0 text-muted-foreground [&_svg]:size-4\">{icon}</span>\n ) : null}\n </div>\n <div className=\"flex items-baseline gap-2\">\n {loading ? (\n <Skeleton className={emphasis === \"headline\" ? \"h-9 w-28\" : \"h-8 w-24\"} />\n ) : canCopyExact ? (\n <CopyableValue\n className={valueClassName}\n // Two tiles in one grid can compact to the same display (\"$1.2M\"),\n // and the visible label is a sibling node the button's name does\n // not include — so without this a screen-reader user tabbing the\n // grid hears the identical name twice. A non-string label has no\n // text to borrow; the default hint stands.\n hint={\n typeof label === \"string\" ? `${label}, ${t(\"ui.copyableValue.hint\")}` : undefined\n }\n value={String(value)}\n >\n {formattedValue}\n </CopyableValue>\n ) : (\n <span className={valueClassName}>{formattedValue}</span>\n )}\n {delta && !compact ? (\n loading ? (\n <Skeleton className=\"h-4 w-14\" />\n ) : (\n <span\n data-polarity={polarity}\n className={cn(\"text-meta tabular-nums\", deltaColor)}\n aria-label={\n directionLabel ? `${directionLabel} ${delta}${polarityLabel}` : undefined\n }\n >\n {arrow ? <span aria-hidden=\"true\">{arrow} </span> : null}\n {delta}\n </span>\n )\n ) : null}\n </div>\n {sparkline && !compact ? (\n <div className={metricSparklineVariants({ size })}>\n {loading ? <Skeleton className=\"h-8 w-full\" /> : sparkline}\n </div>\n ) : null}\n {description && !compact ? (\n loading ? (\n <Skeleton className=\"h-3 w-32\" />\n ) : (\n <p className=\"text-meta font-normal text-muted-foreground\">{description}</p>\n )\n ) : null}\n {visual && !compact ? (\n <div className=\"pt-1\">{loading ? <Skeleton className=\"h-8 w-full\" /> : visual}</div>\n ) : null}\n {evidence && !compact ? (\n <div className=\"pt-1 text-meta font-normal text-muted-foreground\">\n {loading ? <Skeleton className=\"h-3 w-24\" /> : evidence}\n </div>\n ) : null}\n </CardContent>\n </Card>\n );\n});\n"],"mappings":"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","names":["MetricCard"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/spec-playground/spec-playground.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { Braces, ChevronDown, CircleAlert, CircleCheck, RotateCcw } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useControllableState } from \"../../lib/use-controllable-state\";\nimport { Badge } from \"../badge\";\nimport { Button } from \"../button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../dropdown-menu\";\nimport { Textarea } from \"../textarea\";\nimport { lineOfParseError, locateJsonPath, offsetOfLine } from \"./locate-json-path\";\n\n/** One problem a validator reports — the shape both the A2UI and DashboardSpec validators use. */\nexport interface SpecPlaygroundError {\n /** JSON-path-like address of the problem (`root.children[2].props.label`, `$.tiles[0]`). */\n path: string;\n /** The validator's machine-readable code (`missing-prop`, `overlap`, …). */\n code: string;\n message: string;\n}\n\n/** What `validate` returns: the typed spec, or the validator's own errors. */\nexport type SpecPlaygroundValidation<TSpec> =\n | { ok: true; spec: TSpec }\n | { ok: false; errors: readonly SpecPlaygroundError[] };\n\n/** An entry in the `Load example` menu. */\nexport interface SpecPlaygroundExample {\n id: string;\n label: string;\n /** The JSON text loaded into the editor. */\n value: string;\n}\n\n/** The playground's status: what the last validated text turned out to be. */\nexport type SpecPlaygroundStatus = \"valid\" | \"invalid\" | \"parse-error\";\n\n/** Every string the playground renders — pass your own to localize it. */\nexport interface SpecPlaygroundLabels {\n /** Accessible name of the default textarea editor. */\n editor: string;\n /** Accessible name of the rendered-result region. */\n preview: string;\n /** Accessible name of the error list. */\n errors: string;\n /** Trigger of the examples menu. */\n loadExample: string;\n /** Resets the editor to its initial text. */\n reset: string;\n /** Status chip: the text validates. */\n valid: string;\n /** Status chip: the validator reported `count` errors. */\n errorCount: (count: number) => string;\n /** Status chip: the text is not JSON. */\n parseError: string;\n /** Shown over the render when it is the last valid spec, not the current text. */\n showingLastValid: string;\n /** Shown in the render pane before any text has validated. */\n nothingValid: string;\n /** Suffix naming the editor line an error points at. */\n line: (line: number) => string;\n}\n\nexport const DEFAULT_SPEC_PLAYGROUND_LABELS: SpecPlaygroundLabels = {\n editor: \"Spec (JSON)\",\n preview: \"Rendered result\",\n errors: \"Problems\",\n loadExample: \"Load example\",\n reset: \"Reset\",\n valid: \"Valid\",\n errorCount: (count) => (count === 1 ? \"1 error\" : `${count} errors`),\n parseError: \"Parse error\",\n showingLastValid: \"Showing last valid\",\n nothingValid: \"Nothing valid to render yet.\",\n line: (line) => `line ${line}`,\n};\n\nexport interface SpecPlaygroundProps<TSpec> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** The JSON text (controlled). */\n value?: string;\n /** Initial JSON text (uncontrolled); also what `Reset` restores. Default: the first example. */\n defaultValue?: string;\n /** Called with the new text on every edit, example load and reset. */\n onChange?: (value: string) => void;\n /** Checks the parsed JSON; the errors shown are exactly the ones it returns. */\n validate: (json: unknown) => SpecPlaygroundValidation<TSpec>;\n /** Renders a validated spec. */\n render: (spec: TSpec) => ReactNode;\n /** Entries of the `Load example` menu (the menu is hidden without any). */\n examples?: readonly SpecPlaygroundExample[];\n /**\n * The editor. Bind it to `value`/`onChange` yourself. Default: a `Textarea`, so the\n * playground works without a code editor.\n */\n editor?: ReactNode;\n /**\n * Called when an error is chosen, with the editor line its path resolves to — move a custom\n * editor's caret there. The default textarea handles this itself.\n */\n onErrorSelect?: (error: SpecPlaygroundError, line: number | undefined) => void;\n /** Milliseconds between the last edit and validation. Default 250. */\n debounceMs?: number;\n labels?: Partial<SpecPlaygroundLabels>;\n}\n\ntype Checked<TSpec> =\n | { status: \"valid\"; spec: TSpec; errors: readonly SpecPlaygroundError[] }\n | { status: \"invalid\" | \"parse-error\"; errors: readonly SpecPlaygroundError[] };\n\nfunction check<TSpec>(\n text: string,\n validate: (json: unknown) => SpecPlaygroundValidation<TSpec>,\n): Checked<TSpec> {\n let json: unknown;\n try {\n json = JSON.parse(text);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return { status: \"parse-error\", errors: [{ path: \"\", code: \"parse-error\", message }] };\n }\n const result = validate(json);\n return result.ok\n ? { status: \"valid\", spec: result.spec, errors: [] }\n : { status: \"invalid\", errors: result.errors };\n}\n\nfunction SpecPlaygroundInner<TSpec>(\n {\n value: valueProp,\n defaultValue,\n onChange,\n validate,\n render,\n examples = [],\n editor,\n onErrorSelect,\n debounceMs = 250,\n labels: labelsProp,\n className,\n ...props\n }: SpecPlaygroundProps<TSpec>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const labels = { ...DEFAULT_SPEC_PLAYGROUND_LABELS, ...labelsProp };\n const initial = defaultValue ?? examples[0]?.value ?? \"\";\n const [resetValue] = useState(initial);\n const [value, setValue] = useControllableState(valueProp, initial, onChange);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n // Validation trails the text by `debounceMs`; the first render validates immediately.\n const [settled, setSettled] = useState(value);\n useEffect(() => {\n if (settled === value) return;\n const timer = setTimeout(() => setSettled(value), debounceMs);\n return () => clearTimeout(timer);\n }, [value, settled, debounceMs]);\n\n const checked = useMemo(() => check(settled, validate), [settled, validate]);\n\n // The last spec that validated — kept on screen while the current text does not.\n const lastValidRef = useRef<{ spec: TSpec } | null>(null);\n if (checked.status === \"valid\") lastValidRef.current = { spec: checked.spec };\n const shown = checked.status === \"valid\" ? { spec: checked.spec } : lastValidRef.current;\n const stale = checked.status !== \"valid\" && shown !== null;\n\n const lineOf = (error: SpecPlaygroundError) =>\n error.code === \"parse-error\"\n ? lineOfParseError(settled, error.message)\n : locateJsonPath(settled, error.path);\n\n const selectError = (error: SpecPlaygroundError) => {\n const line = lineOf(error);\n if (onErrorSelect) return onErrorSelect(error, line);\n const textarea = textareaRef.current;\n if (!textarea) return;\n const offset = line === undefined ? 0 : offsetOfLine(textarea.value, line);\n textarea.focus();\n textarea.setSelectionRange(offset, offset);\n };\n\n const errorListId = `${props.id ?? \"spec-playground\"}-errors`;\n const hasErrors = checked.errors.length > 0;\n\n return (\n <div\n ref={ref}\n data-slot=\"spec-playground\"\n data-status={checked.status}\n className={cn(\"grid min-w-0 gap-4 lg:grid-cols-2\", className)}\n {...props}\n >\n <div data-slot=\"spec-playground-source\" className=\"flex min-w-0 flex-col gap-3\">\n <div data-slot=\"spec-playground-toolbar\" className=\"flex flex-wrap items-center gap-2\">\n <span role=\"status\" aria-live=\"polite\" className=\"me-auto\">\n <Badge\n data-slot=\"spec-playground-status\"\n data-status={checked.status}\n variant={\n checked.status === \"valid\"\n ? \"success\"\n : checked.status === \"invalid\"\n ? \"destructive\"\n : \"warning\"\n }\n className=\"gap-1\"\n >\n {checked.status === \"valid\" ? (\n <CircleCheck aria-hidden=\"true\" size={14} />\n ) : checked.status === \"invalid\" ? (\n <CircleAlert aria-hidden=\"true\" size={14} />\n ) : (\n <Braces aria-hidden=\"true\" size={14} />\n )}\n {checked.status === \"valid\"\n ? labels.valid\n : checked.status === \"invalid\"\n ? labels.errorCount(checked.errors.length)\n : labels.parseError}\n </Badge>\n </span>\n {examples.length > 0 ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" data-slot=\"spec-playground-examples\">\n {labels.loadExample}\n <ChevronDown aria-hidden=\"true\" size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {examples.map((example) => (\n <DropdownMenuItem\n key={example.id}\n data-example-id={example.id}\n onSelect={() => setValue(example.value)}\n >\n {example.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-slot=\"spec-playground-reset\"\n onClick={() => setValue(resetValue)}\n >\n <RotateCcw aria-hidden=\"true\" size={14} />\n {labels.reset}\n </Button>\n </div>\n <div data-slot=\"spec-playground-editor\" className=\"min-h-80 min-w-0\">\n {editor ?? (\n <Textarea\n ref={textareaRef}\n data-slot=\"spec-playground-textarea\"\n aria-label={labels.editor}\n aria-invalid={hasErrors || undefined}\n aria-describedby={hasErrors ? errorListId : undefined}\n spellCheck={false}\n value={value}\n onChange={(event) => setValue(event.target.value)}\n className=\"h-80 min-h-80 resize-y font-mono text-code\"\n />\n )}\n </div>\n {hasErrors ? (\n <ol\n id={errorListId}\n aria-label={labels.errors}\n data-slot=\"spec-playground-errors\"\n className=\"flex flex-col gap-1\"\n >\n {checked.errors.map((error) => {\n const line = lineOf(error);\n return (\n <li key={`${error.path}|${error.code}|${error.message}`}>\n <button\n type=\"button\"\n data-slot=\"spec-playground-error\"\n data-path={error.path}\n data-code={error.code}\n onClick={() => selectError(error)}\n className=\"focus-ring flex w-full min-w-0 flex-wrap items-baseline gap-x-2 rounded-md border-s-2 border-s-destructive px-2 py-1 text-start text-caption hover:bg-muted\"\n >\n {error.path ? <code className=\"font-mono text-code\">{error.path}</code> : null}\n <span className=\"font-mono text-code text-destructive-text\">{error.code}</span>\n <span className=\"min-w-0 break-words text-muted-foreground\">\n {error.message}\n </span>\n {line !== undefined ? (\n <span className=\"text-meta text-muted-foreground\">{labels.line(line)}</span>\n ) : null}\n </button>\n </li>\n );\n })}\n </ol>\n ) : null}\n </div>\n <section\n aria-label={labels.preview}\n data-slot=\"spec-playground-preview\"\n data-stale={stale ? \"\" : undefined}\n className=\"flex min-w-0 flex-col gap-2\"\n >\n {stale ? (\n <Badge variant=\"outline\" data-slot=\"spec-playground-stale\" className=\"self-start\">\n {labels.showingLastValid}\n </Badge>\n ) : null}\n {shown ? (\n render(shown.spec)\n ) : (\n <p className=\"text-caption text-muted-foreground\">{labels.nothingValid}</p>\n )}\n </section>\n </div>\n );\n}\n\n/**\n * A live spec editor: JSON on the left, what it renders on the right (stacked below 1024 px).\n * Edits are validated after a short pause by the host's own `validate`; its errors are listed\n * under the editor (`path · code · message`, click to jump to the line) and the render keeps\n * the last valid spec, marked as such, until the text validates again. The editor, validator\n * and renderer all come from the host — this component owns only the loop between them.\n */\nexport const SpecPlayground = forwardRef(SpecPlaygroundInner) as <TSpec>(\n props: SpecPlaygroundProps<TSpec> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n(SpecPlayground as { displayName?: string }).displayName = \"SpecPlayground\";\n"],"mappings":"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","names":[]}
|
|
File without changes
|