uilint-react 0.2.138 → 0.2.139

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.
@@ -1,4 +1,4 @@
1
- import { g as j, j as t, C as H, a as L, B as v, b as I, c as M, d as V, e as $, f as A } from "./index-Cc4gwBce.js";
1
+ import { g as j, j as t, C as H, a as L, B as v, b as I, c as M, d as V, e as $, f as A } from "./index-DXK4PWaG.js";
2
2
  import { isExpressionBinding as D, isDataBinding as k, isConditionalValue as R } from "uilint-core";
3
3
  import b from "react";
4
4
  function S(e, r) {
@@ -890,4 +890,4 @@ function ae({
890
890
  export {
891
891
  ae as SchemaPanel
892
892
  };
893
- //# sourceMappingURL=SchemaPanel-0lLkqa2L.js.map
893
+ //# sourceMappingURL=SchemaPanel-BMB_N8eh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaPanel-0lLkqa2L.js","sources":["../src/ui/components/Schema/binding-utils.ts","../src/ui/components/Schema/sections/HeaderSection.tsx","../src/ui/components/Schema/sections/CodeViewerSection.tsx","../src/ui/components/Schema/sections/CodeComparisonSection.tsx","../src/ui/components/Schema/sections/BadgeSection.tsx","../src/ui/components/Schema/sections/TextSection.tsx","../src/ui/components/Schema/sections/ActionsSection.tsx","../src/ui/components/Schema/sections/DividerSection.tsx","../src/ui/components/Schema/sections/ConditionalSection.tsx","../src/ui/components/Schema/sections/ListSection.tsx","../src/ui/components/Schema/sections/ImageSection.tsx","../src/ui/components/Schema/sections/CardSection.tsx","../src/ui/components/Schema/sections/ProgressSection.tsx","../src/ui/components/Schema/SchemaPanel.tsx"],"sourcesContent":["/**\n * Data Binding Utilities\n *\n * Functions for evaluating data bindings and expressions in panel schemas.\n */\n\nimport type {\n DataBinding,\n ExpressionBinding,\n DynamicValue,\n ConditionalValue,\n} from \"uilint-core\";\n\n// Import type guards as values (they are functions)\nimport {\n isDataBinding,\n isExpressionBinding,\n isConditionalValue,\n} from \"uilint-core\";\n\n// Re-export type guards\nexport { isDataBinding, isExpressionBinding, isConditionalValue };\n\n/**\n * Context for evaluating bindings\n */\nexport interface BindingContext {\n /** Panel data from inspector */\n data: Record<string, unknown>;\n /** Plugin state */\n state: Record<string, unknown>;\n /** Computed values from state definition */\n computed: Record<string, unknown>;\n}\n\n/**\n * Gets a value from an object using dot notation path\n */\nexport function getValueByPath(\n obj: Record<string, unknown>,\n path: string\n): unknown {\n const parts = path.split(\".\");\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n if (typeof current === \"object\") {\n current = (current as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n\n return current;\n}\n\n/**\n * Resolves a data binding against the context\n */\nexport function resolveBinding(\n binding: DataBinding,\n ctx: BindingContext\n): unknown {\n const path = binding.binding;\n\n // Try data first (panel data), then state, then computed\n let value = getValueByPath(ctx.data, path);\n if (value === undefined) {\n value = getValueByPath(ctx.state, path);\n }\n if (value === undefined) {\n value = getValueByPath(ctx.computed, path);\n }\n\n return value;\n}\n\n/**\n * Evaluates an expression binding against the context\n *\n * SECURITY NOTE: This uses Function() which is similar to eval().\n * The expressions come from trusted plugin definitions, not user input.\n */\nexport function evaluateExpression(\n expr: ExpressionBinding,\n ctx: BindingContext\n): unknown {\n const expression = expr.expression;\n\n // Create a combined context object\n const combinedContext = {\n ...ctx.data,\n ...ctx.state,\n ...ctx.computed,\n };\n\n try {\n // Create a function that has access to context properties\n const keys = Object.keys(combinedContext);\n const values = Object.values(combinedContext);\n\n \n const fn = new Function(...keys, `return (${expression});`);\n return fn(...values);\n } catch (error) {\n console.warn(`[SchemaRenderer] Failed to evaluate expression: ${expression}`, error);\n return undefined;\n }\n}\n\n/**\n * Resolves a dynamic value (static value or binding)\n */\nexport function resolveDynamicValue<T>(\n value: DynamicValue<T>,\n ctx: BindingContext\n): T | undefined {\n if (isDataBinding(value)) {\n return resolveBinding(value, ctx) as T | undefined;\n }\n return value;\n}\n\n/**\n * Resolves a conditional value based on condition binding\n */\nexport function resolveConditionalValue<T>(\n value: ConditionalValue<T>,\n ctx: BindingContext\n): T {\n const condition = resolveBinding(value.condition, ctx);\n return condition ? value.true : value.false;\n}\n\n/**\n * Resolves any value that could be static, binding, or conditional\n */\nexport function resolveValue<T>(\n value: T | DataBinding | ConditionalValue<T>,\n ctx: BindingContext\n): T | undefined {\n if (isConditionalValue(value)) {\n return resolveConditionalValue(value, ctx);\n }\n if (isDataBinding(value)) {\n return resolveBinding(value, ctx) as T | undefined;\n }\n return value;\n}\n\n/**\n * Evaluates a condition (DataBinding or ExpressionBinding)\n */\nexport function evaluateCondition(\n condition: DataBinding | ExpressionBinding,\n ctx: BindingContext\n): boolean {\n if (isExpressionBinding(condition)) {\n return Boolean(evaluateExpression(condition, ctx));\n }\n return Boolean(resolveBinding(condition, ctx));\n}\n\n/**\n * Creates action payload from bindings\n */\nexport function createActionPayload(\n staticPayload: Record<string, unknown> | undefined,\n payloadBindings: Record<string, string> | undefined,\n ctx: BindingContext\n): Record<string, unknown> {\n const payload: Record<string, unknown> = { ...staticPayload };\n\n if (payloadBindings) {\n for (const [key, bindingPath] of Object.entries(payloadBindings)) {\n payload[key] = resolveBinding({ binding: bindingPath }, ctx);\n }\n }\n\n return payload;\n}\n","/**\n * Header Section Renderer\n *\n * Renders a header with optional icon and subtitle.\n */\n\nimport React from \"react\";\nimport type { HeaderSection as HeaderSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\n\ninterface HeaderSectionProps {\n section: HeaderSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Renders a header section\n */\nexport function HeaderSection({ section, ctx }: HeaderSectionProps) {\n const text = resolveDynamicValue(section.text, ctx);\n const subtitle = resolveDynamicValue(section.subtitle, ctx);\n const IconComponent = section.icon ? getIcon(section.icon) : null;\n\n const containerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n marginBottom: \"0.75rem\",\n ...(section.sticky && {\n position: \"sticky\",\n top: 0,\n backgroundColor: \"var(--uilint-surface)\",\n padding: \"0.5rem 0\",\n zIndex: 10,\n }),\n };\n\n return (\n <div style={containerStyle}>\n {IconComponent && (\n <span style={{ color: \"var(--uilint-text-muted)\", flexShrink: 0, marginTop: \"0.125rem\" }}>\n <IconComponent size={16} />\n </span>\n )}\n <div>\n <h3\n style={{\n margin: 0,\n fontSize: \"0.875rem\",\n fontWeight: 600,\n color: \"var(--uilint-text-primary)\",\n }}\n >\n {String(text ?? \"\")}\n </h3>\n {subtitle && (\n <p\n style={{\n margin: \"0.25rem 0 0 0\",\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n {String(subtitle)}\n </p>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Code Viewer Section Renderer\n *\n * Renders a code block with syntax highlighting and optional diff highlighting.\n * Uses the existing ScrollableCodeSection component when available.\n */\n\nimport React from \"react\";\nimport type { CodeViewerSection as CodeViewerSectionSchema } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n resolveBinding,\n createActionPayload,\n isDataBinding,\n type BindingContext,\n} from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\n\ninterface CodeViewerSectionProps {\n section: CodeViewerSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Simple code display component (placeholder for full ScrollableCodeSection)\n */\nfunction SimpleCodeViewer({\n code,\n startLine = 1,\n highlightLines,\n maxHeight,\n}: {\n code: string;\n startLine?: number;\n highlightLines?: number[];\n maxHeight?: number;\n}) {\n const lines = code.split(\"\\n\");\n const highlightSet = new Set(highlightLines || []);\n\n return (\n <div\n style={{\n fontFamily: \"monospace\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n overflow: \"auto\",\n maxHeight: maxHeight || 200,\n }}\n >\n {lines.map((line, index) => {\n const lineNum = startLine + index;\n const isHighlighted = highlightSet.has(lineNum);\n\n return (\n <div\n key={index}\n style={{\n display: \"flex\",\n backgroundColor: isHighlighted\n ? \"rgba(var(--uilint-accent-rgb), 0.15)\"\n : \"transparent\",\n }}\n >\n <span\n style={{\n width: \"3rem\",\n paddingRight: \"0.5rem\",\n textAlign: \"right\",\n color: \"var(--uilint-text-muted)\",\n userSelect: \"none\",\n flexShrink: 0,\n borderRight: \"1px solid var(--uilint-border)\",\n }}\n >\n {lineNum}\n </span>\n <pre\n style={{\n margin: 0,\n padding: \"0 0.5rem\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-all\",\n flex: 1,\n }}\n >\n {line || \" \"}\n </pre>\n </div>\n );\n })}\n </div>\n );\n}\n\n/**\n * Renders a code viewer section\n */\nexport function CodeViewerSection({\n section,\n ctx,\n onAction,\n onFetch,\n}: CodeViewerSectionProps) {\n const [code, setCode] = React.useState<string | null>(null);\n const [isLoading, setIsLoading] = React.useState(false);\n\n // Determine code source\n const codeSource = section.code;\n\n React.useEffect(() => {\n if (isDataBinding(codeSource)) {\n // Code comes from binding\n const boundCode = resolveBinding(codeSource, ctx);\n setCode(typeof boundCode === \"string\" ? boundCode : null);\n } else if (\"fetch\" in codeSource && onFetch) {\n // Code needs to be fetched\n setIsLoading(true);\n const fetchConfig = codeSource.fetch;\n const params: Record<string, unknown> = {};\n\n // Resolve fetch params\n if (fetchConfig.params.filePath) {\n params.filePath = resolveBinding(fetchConfig.params.filePath, ctx);\n }\n if (fetchConfig.params.line) {\n params.line = resolveBinding(fetchConfig.params.line, ctx);\n }\n if (fetchConfig.params.contextAbove !== undefined) {\n params.contextAbove = fetchConfig.params.contextAbove;\n }\n if (fetchConfig.params.contextBelow !== undefined) {\n params.contextBelow = fetchConfig.params.contextBelow;\n }\n\n onFetch(fetchConfig.type, params)\n .then((result) => {\n setCode(typeof result === \"string\" ? result : JSON.stringify(result, null, 2));\n })\n .catch((error) => {\n console.error(\"[CodeViewerSection] Fetch failed:\", error);\n setCode(`// Error loading code: ${error.message}`);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [codeSource, ctx, onFetch]);\n\n const startLine = resolveDynamicValue(section.startLine, ctx);\n const highlightLines = section.highlightLines\n ? (resolveBinding(section.highlightLines, ctx) as number[] | undefined)\n : undefined;\n\n const IconComponent = section.icon ? getIcon(section.icon) : null;\n\n const handleNavigate = section.onNavigate\n ? () => {\n const payload = createActionPayload(\n section.onNavigate!.payload,\n section.onNavigate!.payloadBindings,\n ctx\n );\n onAction(section.onNavigate!.type, payload);\n }\n : undefined;\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {section.label && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"0.5rem\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.375rem\" }}>\n {IconComponent && (\n <span style={{ color: \"var(--uilint-text-muted)\" }}>\n <IconComponent size={14} />\n </span>\n )}\n <span\n style={{\n fontSize: \"0.75rem\",\n fontWeight: 500,\n color: \"var(--uilint-text-secondary)\",\n }}\n >\n {section.label}\n </span>\n </div>\n {handleNavigate && (\n <button\n onClick={handleNavigate}\n style={{\n background: \"none\",\n border: \"none\",\n padding: \"0.25rem\",\n cursor: \"pointer\",\n color: \"var(--uilint-accent)\",\n fontSize: \"0.75rem\",\n }}\n >\n Open in editor\n </button>\n )}\n </div>\n )}\n {isLoading ? (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n >\n Loading code...\n </div>\n ) : code ? (\n <SimpleCodeViewer\n code={code}\n startLine={typeof startLine === \"number\" ? startLine : 1}\n highlightLines={highlightLines}\n maxHeight={section.maxHeight}\n />\n ) : (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n >\n No code available\n </div>\n )}\n </div>\n );\n}\n","/**\n * Code Comparison Section Renderer\n *\n * Renders a side-by-side or stacked code comparison.\n */\n\nimport React from \"react\";\nimport type { CodeComparisonSection as CodeComparisonSectionSchema } from \"uilint-core\";\nimport type { BindingContext } from \"../binding-utils\";\nimport { CodeViewerSection } from \"./CodeViewerSection\";\n\ninterface CodeComparisonSectionProps {\n section: CodeComparisonSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Renders a code comparison section\n */\nexport function CodeComparisonSection({\n section,\n ctx,\n onAction,\n onFetch,\n}: CodeComparisonSectionProps) {\n const isStackedMode = section.mode === \"stacked\";\n\n const containerStyle: React.CSSProperties = isStackedMode\n ? {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n marginBottom: \"0.75rem\",\n }\n : {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"1rem\",\n marginBottom: \"0.75rem\",\n };\n\n // Convert source/target configs to CodeViewerSection props\n const sourceSection = {\n type: \"code-viewer\" as const,\n label: section.source.label,\n icon: section.source.icon,\n code: section.source.code,\n location: section.source.location,\n diffHighlighting: section.computeDiff,\n maxHeight: section.maxHeight,\n };\n\n const targetSection = {\n type: \"code-viewer\" as const,\n label: section.target.label,\n icon: section.target.icon,\n code: section.target.code,\n location: section.target.location,\n diffHighlighting: section.computeDiff,\n maxHeight: section.maxHeight,\n };\n\n return (\n <div style={containerStyle}>\n <CodeViewerSection\n section={sourceSection}\n ctx={ctx}\n onAction={onAction}\n onFetch={onFetch}\n />\n <CodeViewerSection\n section={targetSection}\n ctx={ctx}\n onAction={onAction}\n onFetch={onFetch}\n />\n </div>\n );\n}\n","/**\n * Badge Section Renderer\n *\n * Renders a badge/pill display for status, severity, similarity, etc.\n */\n\nimport React from \"react\";\nimport type { BadgeSection as BadgeSectionSchema } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\nimport { Badge, CategoryBadge, CountBadge } from \"../../badge\";\n\ninterface BadgeSectionProps {\n section: BadgeSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Gets color for similarity percentage\n */\nfunction getSimilarityColor(similarity: number): string {\n if (similarity >= 85) return \"error\";\n if (similarity >= 70) return \"warning\";\n return \"info\";\n}\n\n/**\n * Gets label for similarity percentage\n */\nfunction getSimilarityLabel(similarity: number): string {\n if (similarity >= 90) return \"Very High\";\n if (similarity >= 75) return \"High\";\n if (similarity >= 60) return \"Moderate\";\n return \"Low\";\n}\n\n/**\n * Renders a badge section\n */\nexport function BadgeSection({ section, ctx }: BadgeSectionProps) {\n const value = resolveBinding(section.value, ctx);\n\n const containerStyle: React.CSSProperties = section.centered\n ? { display: \"flex\", justifyContent: \"center\", marginBottom: \"0.75rem\" }\n : { marginBottom: \"0.75rem\" };\n\n switch (section.variant) {\n case \"similarity\": {\n const similarity = typeof value === \"number\" ? value : 0;\n const percent = Math.round(similarity * 100);\n const color = getSimilarityColor(percent);\n const label = getSimilarityLabel(percent);\n\n return (\n <div style={containerStyle}>\n <Badge variant={color as \"error\" | \"warning\" | \"info\"}>\n {percent}% Match - {label}\n </Badge>\n </div>\n );\n }\n\n case \"severity\": {\n const severity = String(value || \"info\");\n const variantMap: Record<string, \"error\" | \"warning\" | \"success\" | \"info\"> = {\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n success: \"success\",\n };\n const variant = variantMap[severity] || \"info\";\n\n return (\n <div style={containerStyle}>\n <Badge variant={variant}>\n {section.label ? `${section.label}: ` : \"\"}{severity}\n </Badge>\n </div>\n );\n }\n\n case \"status\": {\n const status = String(value || \"unknown\");\n const statusColors: Record<string, \"error\" | \"warning\" | \"success\" | \"info\"> = {\n ready: \"success\",\n indexing: \"info\",\n error: \"error\",\n idle: \"info\",\n loading: \"info\",\n };\n const variant = statusColors[status] || \"info\";\n\n return (\n <div style={containerStyle}>\n <Badge variant={variant}>\n {section.label ? `${section.label}: ` : \"\"}{status}\n </Badge>\n </div>\n );\n }\n\n case \"category\": {\n const category = String(value || \"\");\n return (\n <div style={containerStyle}>\n <CategoryBadge>{category}</CategoryBadge>\n </div>\n );\n }\n\n case \"count\": {\n const count = typeof value === \"number\" ? value : 0;\n return (\n <div style={containerStyle}>\n {section.label && (\n <span style={{ marginRight: \"0.5rem\", fontSize: \"0.75rem\", color: \"var(--uilint-text-muted)\" }}>\n {section.label}:\n </span>\n )}\n <CountBadge count={count} />\n </div>\n );\n }\n\n default:\n return null;\n }\n}\n","/**\n * Text Section Renderer\n *\n * Renders plain text content with various styling variants.\n */\n\nimport React from \"react\";\nimport type { TextSection as TextSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\n\ninterface TextSectionProps {\n section: TextSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Gets CSS styles for text variant\n */\nfunction getVariantStyles(variant?: string): React.CSSProperties {\n const base: React.CSSProperties = {\n marginBottom: \"0.5rem\",\n lineHeight: 1.5,\n };\n\n switch (variant) {\n case \"caption\":\n return {\n ...base,\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n };\n case \"muted\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-text-muted)\",\n };\n case \"error\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-error)\",\n };\n case \"success\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-success)\",\n };\n case \"body\":\n default:\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-text-primary)\",\n };\n }\n}\n\n/**\n * Renders a text section\n */\nexport function TextSection({ section, ctx }: TextSectionProps) {\n const content = resolveDynamicValue(section.content, ctx);\n\n if (content === undefined || content === null) {\n return null;\n }\n\n const styles = getVariantStyles(section.variant);\n\n return <p style={styles}>{String(content)}</p>;\n}\n","/**\n * Actions Section Renderer\n *\n * Renders a group of action buttons.\n */\n\nimport React from \"react\";\nimport type { ActionsSection as ActionsSectionSchema, ActionButton } from \"uilint-core\";\nimport {\n resolveValue,\n resolveBinding,\n createActionPayload,\n isConditionalValue,\n type BindingContext,\n} from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\nimport { Button } from \"../../button\";\n\ninterface ActionsSectionProps {\n section: ActionsSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}\n\n/**\n * Maps button variant to Button component variant\n */\nfunction mapVariant(variant?: string): \"default\" | \"outline\" | \"ghost\" | \"destructive\" {\n switch (variant) {\n case \"primary\":\n return \"default\";\n case \"secondary\":\n return \"outline\";\n case \"ghost\":\n return \"ghost\";\n case \"danger\":\n return \"destructive\";\n default:\n return \"default\";\n }\n}\n\n/**\n * Renders a single action button\n */\nfunction ActionButtonRenderer({\n button,\n ctx,\n onAction,\n}: {\n button: ActionButton;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}) {\n // Check visibility\n if (button.visible) {\n const isVisible = Boolean(resolveBinding(button.visible, ctx));\n if (!isVisible) return null;\n }\n\n // Check disabled state\n const isDisabled = button.disabled\n ? Boolean(resolveBinding(button.disabled, ctx))\n : false;\n\n // Resolve label\n let label: string;\n if (isConditionalValue(button.label)) {\n label = String(resolveValue(button.label, ctx) ?? \"\");\n } else {\n label = String(resolveValue(button.label, ctx) ?? \"\");\n }\n\n // Get icon\n const IconComponent = button.icon ? getIcon(button.icon) : null;\n\n // Handle click\n const handleClick = () => {\n const payload = createActionPayload(\n button.action.payload,\n button.action.payloadBindings,\n ctx\n );\n onAction(button.action.type, payload);\n };\n\n return (\n <Button\n variant={mapVariant(button.variant)}\n size=\"sm\"\n disabled={isDisabled}\n onClick={handleClick}\n >\n {IconComponent && <IconComponent size={14} style={{ marginRight: \"0.25rem\" }} />}\n {label}\n </Button>\n );\n}\n\n/**\n * Renders an actions section\n */\nexport function ActionsSection({ section, ctx, onAction }: ActionsSectionProps) {\n const isRow = section.direction !== \"column\";\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: isRow ? \"row\" : \"column\",\n gap: \"0.5rem\",\n marginBottom: \"0.75rem\",\n ...(isRow && { flexWrap: \"wrap\" }),\n }}\n >\n {section.actions.map((button) => (\n <ActionButtonRenderer\n key={button.id}\n button={button}\n ctx={ctx}\n onAction={onAction}\n />\n ))}\n </div>\n );\n}\n","/**\n * Divider Section Renderer\n *\n * Renders a visual divider with configurable spacing.\n */\n\nimport React from \"react\";\nimport type { DividerSection as DividerSectionSchema } from \"uilint-core\";\n\ninterface DividerSectionProps {\n section: DividerSectionSchema;\n}\n\n/**\n * Gets margin for spacing variant\n */\nfunction getSpacingMargin(spacing?: string): string {\n switch (spacing) {\n case \"small\":\n return \"0.5rem 0\";\n case \"large\":\n return \"1.5rem 0\";\n case \"medium\":\n default:\n return \"1rem 0\";\n }\n}\n\n/**\n * Renders a divider section\n */\nexport function DividerSection({ section }: DividerSectionProps) {\n const margin = getSpacingMargin(section.spacing);\n\n return (\n <hr\n style={{\n margin,\n border: \"none\",\n borderTop: \"1px solid var(--uilint-border)\",\n }}\n />\n );\n}\n","/**\n * Conditional Section Renderer\n *\n * Renders sections conditionally based on a binding or expression.\n */\n\nimport React from \"react\";\nimport type { ConditionalSection as ConditionalSectionSchema, PanelSection } from \"uilint-core\";\nimport { evaluateCondition, type BindingContext } from \"../binding-utils\";\n\ninterface ConditionalSectionProps {\n section: ConditionalSectionSchema;\n ctx: BindingContext;\n renderSection: (section: PanelSection, index: number) => React.ReactNode;\n}\n\n/**\n * Renders a conditional section\n */\nexport function ConditionalSection({\n section,\n ctx,\n renderSection,\n}: ConditionalSectionProps) {\n const conditionMet = evaluateCondition(section.condition, ctx);\n\n const sectionsToRender = conditionMet ? section.then : section.else;\n\n if (!sectionsToRender || sectionsToRender.length === 0) {\n return null;\n }\n\n return (\n <>\n {sectionsToRender.map((childSection, index) => (\n <React.Fragment key={index}>\n {renderSection(childSection, index)}\n </React.Fragment>\n ))}\n </>\n );\n}\n","/**\n * List Section Renderer\n *\n * Renders an array of items using a template layout.\n */\n\nimport React from \"react\";\nimport type { ListSection as ListSectionSchema, PanelSection } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\n\ninterface ListSectionProps {\n section: ListSectionSchema;\n ctx: BindingContext;\n renderSection: (section: PanelSection, index: number, itemCtx?: BindingContext) => React.ReactNode;\n}\n\n/**\n * Renders a list section\n */\nexport function ListSection({ section, ctx, renderSection }: ListSectionProps) {\n const items = resolveBinding(section.items, ctx);\n\n if (!Array.isArray(items) || items.length === 0) {\n if (section.emptyMessage) {\n return (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.875rem\",\n }}\n >\n {section.emptyMessage}\n </div>\n );\n }\n return null;\n }\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {items.map((item, itemIndex) => {\n // Create an item context with \"item\" prefix\n const itemCtx: BindingContext = {\n ...ctx,\n data: {\n ...ctx.data,\n item,\n itemIndex,\n },\n };\n\n return (\n <div key={itemIndex} style={{ marginBottom: \"0.5rem\" }}>\n {section.itemLayout.map((childSection, layoutIndex) =>\n renderSection(childSection, layoutIndex, itemCtx)\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Image Section Renderer\n *\n * Renders an image with optional highlight region.\n */\n\nimport React from \"react\";\nimport type { ImageSection as ImageSectionSchema } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\n\ninterface ImageSectionProps {\n section: ImageSectionSchema;\n ctx: BindingContext;\n}\n\ninterface HighlightRegion {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Renders an image section\n */\nexport function ImageSection({ section, ctx }: ImageSectionProps) {\n const src = resolveBinding(section.src, ctx);\n const highlightRegion = section.highlightRegion\n ? (resolveBinding(section.highlightRegion, ctx) as HighlightRegion | undefined)\n : undefined;\n\n if (!src || typeof src !== \"string\") {\n return null;\n }\n\n return (\n <div\n style={{\n position: \"relative\",\n marginBottom: \"0.75rem\",\n maxHeight: section.maxHeight,\n overflow: \"hidden\",\n }}\n >\n <img\n src={src}\n alt={section.alt || \"Image\"}\n style={{\n width: \"100%\",\n height: \"auto\",\n maxHeight: section.maxHeight,\n objectFit: \"contain\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n />\n {highlightRegion && (\n <div\n style={{\n position: \"absolute\",\n left: `${highlightRegion.x}px`,\n top: `${highlightRegion.y}px`,\n width: `${highlightRegion.width}px`,\n height: `${highlightRegion.height}px`,\n border: \"2px solid var(--uilint-accent)\",\n borderRadius: \"4px\",\n backgroundColor: \"rgba(var(--uilint-accent-rgb), 0.1)\",\n pointerEvents: \"none\",\n }}\n />\n )}\n </div>\n );\n}\n","/**\n * Card Section Renderer\n *\n * Renders a card display for list items.\n */\n\nimport React from \"react\";\nimport type { CardSection as CardSectionSchema } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n resolveBinding,\n createActionPayload,\n type BindingContext,\n} from \"../binding-utils\";\nimport { Card, CardHeader, CardTitle, CardDescription } from \"../../card\";\nimport { Badge } from \"../../badge\";\n\ninterface CardSectionProps {\n section: CardSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}\n\n/**\n * Renders a card section\n */\nexport function CardSection({ section, ctx, onAction }: CardSectionProps) {\n const title = resolveDynamicValue(section.title, ctx);\n const subtitle = resolveDynamicValue(section.subtitle, ctx);\n const thumbnail = section.thumbnail ? resolveBinding(section.thumbnail, ctx) : undefined;\n const badgeValue = section.badge\n ? resolveBinding(section.badge.value, ctx)\n : undefined;\n\n const handleClick = section.onClick\n ? () => {\n const payload = createActionPayload(\n section.onClick!.payload,\n section.onClick!.payloadBindings,\n ctx\n );\n onAction(section.onClick!.type, payload);\n }\n : undefined;\n\n const cardStyle: React.CSSProperties = {\n marginBottom: \"0.5rem\",\n ...(handleClick && { cursor: \"pointer\" }),\n };\n\n return (\n <Card\n style={cardStyle}\n onClick={handleClick}\n role={handleClick ? \"button\" : undefined}\n tabIndex={handleClick ? 0 : undefined}\n >\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"0.75rem\" }}>\n {typeof thumbnail === \"string\" && thumbnail && (\n <img\n src={thumbnail}\n alt=\"\"\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"4px\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <CardHeader style={{ padding: \"0.75rem 0.75rem 0\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"flex-start\" }}>\n <CardTitle style={{ fontSize: \"0.875rem\", marginBottom: 0 }}>\n {String(title ?? \"\")}\n </CardTitle>\n {section.badge && badgeValue !== undefined && (\n <Badge variant={section.badge.variant === \"severity\" ? \"warning\" : \"info\"}>\n {section.badge.label ? `${section.badge.label}: ` : \"\"}{String(badgeValue)}\n </Badge>\n )}\n </div>\n {subtitle && (\n <CardDescription style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {String(subtitle)}\n </CardDescription>\n )}\n </CardHeader>\n </div>\n </div>\n </Card>\n );\n}\n","/**\n * Progress Section Renderer\n *\n * Renders a progress indicator with optional label.\n */\n\nimport React from \"react\";\nimport type { ProgressSection as ProgressSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\n\ninterface ProgressSectionProps {\n section: ProgressSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Renders a progress section\n */\nexport function ProgressSection({ section, ctx }: ProgressSectionProps) {\n const value = resolveDynamicValue(section.value, ctx);\n const label = resolveDynamicValue(section.label, ctx);\n const percent = typeof value === \"number\" ? Math.min(100, Math.max(0, value)) : 0;\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {label && (\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n marginBottom: \"0.25rem\",\n }}\n >\n {String(label)}\n </div>\n )}\n <div\n style={{\n height: \"6px\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"3px\",\n overflow: \"hidden\",\n }}\n >\n {section.indeterminate ? (\n <div\n style={{\n height: \"100%\",\n width: \"30%\",\n backgroundColor: \"var(--uilint-accent)\",\n borderRadius: \"3px\",\n animation: \"progress-indeterminate 1.5s infinite linear\",\n }}\n />\n ) : (\n <div\n style={{\n height: \"100%\",\n width: `${percent}%`,\n backgroundColor: \"var(--uilint-accent)\",\n borderRadius: \"3px\",\n transition: \"width 0.3s ease\",\n }}\n />\n )}\n </div>\n {!section.indeterminate && typeof value === \"number\" && (\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n marginTop: \"0.25rem\",\n textAlign: \"right\",\n }}\n >\n {percent}%\n </div>\n )}\n </div>\n );\n}\n","/**\n * Schema Panel Renderer\n *\n * Renders a PanelDefinition from uilint-core as React components.\n * This is the main entry point for declarative panel rendering.\n */\n\nimport React from \"react\";\nimport type { PanelDefinition, PanelSection } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n evaluateCondition,\n type BindingContext,\n} from \"./binding-utils\";\nimport { getIcon } from \"./icon-map\";\nimport {\n HeaderSection,\n CodeViewerSection,\n CodeComparisonSection,\n BadgeSection,\n TextSection,\n ActionsSection,\n DividerSection,\n ConditionalSection,\n ListSection,\n ImageSection,\n CardSection,\n ProgressSection,\n} from \"./sections\";\n\nexport interface SchemaPanelProps {\n /** Panel definition from plugin */\n panel: PanelDefinition;\n /** Data passed to the panel (e.g., from inspector) */\n data: Record<string, unknown>;\n /** Plugin state */\n state: Record<string, unknown>;\n /** Computed values from plugin state definition */\n computed?: Record<string, unknown>;\n /** Handler for action execution */\n onAction: (type: string, payload: Record<string, unknown>) => void;\n /** Handler for data fetching (e.g., source code) */\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Renders a panel definition as React components\n */\nexport function SchemaPanel({\n panel,\n data,\n state,\n computed = {},\n onAction,\n onFetch,\n}: SchemaPanelProps) {\n // Create binding context\n const ctx: BindingContext = {\n data,\n state,\n computed,\n };\n\n // Check loading state\n if (panel.loading) {\n const isLoading = evaluateCondition(panel.loading.when, ctx);\n if (isLoading) {\n return (\n <div\n style={{\n padding: \"2rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n <div\n style={{\n marginBottom: \"0.5rem\",\n animation: \"spin 1s linear infinite\",\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray=\"31.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n <div style={{ fontSize: \"0.875rem\" }}>\n {panel.loading.message || \"Loading...\"}\n </div>\n {panel.loading.submessage && (\n <div style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {panel.loading.submessage}\n </div>\n )}\n </div>\n );\n }\n }\n\n // Check empty state\n if (panel.empty) {\n const isEmpty = evaluateCondition(panel.empty.when, ctx);\n if (isEmpty) {\n const IconComponent = panel.empty.icon ? getIcon(panel.empty.icon) : null;\n return (\n <div\n style={{\n padding: \"2rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n {IconComponent && (\n <div style={{ marginBottom: \"0.5rem\" }}>\n <IconComponent size={32} strokeWidth={1.5} />\n </div>\n )}\n <div style={{ fontSize: \"0.875rem\" }}>{panel.empty.message}</div>\n {panel.empty.submessage && (\n <div style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {panel.empty.submessage}\n </div>\n )}\n </div>\n );\n }\n }\n\n // Render section based on type\n const renderSection = (\n section: PanelSection,\n index: number,\n overrideCtx?: BindingContext\n ): React.ReactNode => {\n const sectionCtx = overrideCtx || ctx;\n const key = `section-${index}`;\n\n switch (section.type) {\n case \"header\":\n return <HeaderSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"code-viewer\":\n return (\n <CodeViewerSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n onFetch={onFetch}\n />\n );\n\n case \"code-comparison\":\n return (\n <CodeComparisonSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n onFetch={onFetch}\n />\n );\n\n case \"badge\":\n return <BadgeSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"text\":\n return <TextSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"actions\":\n return (\n <ActionsSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n />\n );\n\n case \"divider\":\n return <DividerSection key={key} section={section} />;\n\n case \"conditional\":\n return (\n <ConditionalSection\n key={key}\n section={section}\n ctx={sectionCtx}\n renderSection={renderSection}\n />\n );\n\n case \"list\":\n return (\n <ListSection\n key={key}\n section={section}\n ctx={sectionCtx}\n renderSection={renderSection}\n />\n );\n\n case \"image\":\n return <ImageSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"card\":\n return (\n <CardSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n />\n );\n\n case \"progress\":\n return <ProgressSection key={key} section={section} ctx={sectionCtx} />;\n\n default:\n console.warn(\n `[SchemaPanel] Unknown section type: ${(section as { type: string }).type}`\n );\n return null;\n }\n };\n\n // Resolve panel title\n const title = resolveDynamicValue(panel.title, ctx);\n\n return (\n <div style={{ padding: \"1rem\" }}>\n {title && (\n <h2\n style={{\n margin: \"0 0 1rem 0\",\n fontSize: \"1rem\",\n fontWeight: 600,\n color: \"var(--uilint-text-primary)\",\n }}\n >\n {String(title)}\n </h2>\n )}\n {panel.layout.map((section, index) => renderSection(section, index))}\n </div>\n );\n}\n"],"names":["getValueByPath","obj","path","parts","current","part","resolveBinding","binding","ctx","value","evaluateExpression","expr","expression","combinedContext","keys","values","error","resolveDynamicValue","isDataBinding","resolveConditionalValue","resolveValue","isConditionalValue","evaluateCondition","condition","isExpressionBinding","createActionPayload","staticPayload","payloadBindings","payload","key","bindingPath","HeaderSection","section","text","subtitle","IconComponent","getIcon","containerStyle","jsxs","jsx","SimpleCodeViewer","code","startLine","highlightLines","maxHeight","lines","highlightSet","line","index","lineNum","isHighlighted","CodeViewerSection","onAction","onFetch","setCode","React","isLoading","setIsLoading","codeSource","boundCode","fetchConfig","params","result","handleNavigate","CodeComparisonSection","sourceSection","targetSection","getSimilarityColor","similarity","getSimilarityLabel","BadgeSection","percent","color","label","Badge","severity","variant","status","category","CategoryBadge","count","CountBadge","getVariantStyles","base","TextSection","content","styles","mapVariant","ActionButtonRenderer","button","isDisabled","handleClick","Button","ActionsSection","isRow","getSpacingMargin","spacing","DividerSection","margin","ConditionalSection","renderSection","sectionsToRender","childSection","ListSection","items","item","itemIndex","itemCtx","layoutIndex","ImageSection","src","highlightRegion","CardSection","title","thumbnail","badgeValue","cardStyle","Card","CardHeader","CardTitle","CardDescription","ProgressSection","SchemaPanel","panel","data","state","computed","overrideCtx","sectionCtx"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaPanel-BMB_N8eh.js","sources":["../src/ui/components/Schema/binding-utils.ts","../src/ui/components/Schema/sections/HeaderSection.tsx","../src/ui/components/Schema/sections/CodeViewerSection.tsx","../src/ui/components/Schema/sections/CodeComparisonSection.tsx","../src/ui/components/Schema/sections/BadgeSection.tsx","../src/ui/components/Schema/sections/TextSection.tsx","../src/ui/components/Schema/sections/ActionsSection.tsx","../src/ui/components/Schema/sections/DividerSection.tsx","../src/ui/components/Schema/sections/ConditionalSection.tsx","../src/ui/components/Schema/sections/ListSection.tsx","../src/ui/components/Schema/sections/ImageSection.tsx","../src/ui/components/Schema/sections/CardSection.tsx","../src/ui/components/Schema/sections/ProgressSection.tsx","../src/ui/components/Schema/SchemaPanel.tsx"],"sourcesContent":["/**\n * Data Binding Utilities\n *\n * Functions for evaluating data bindings and expressions in panel schemas.\n */\n\nimport type {\n DataBinding,\n ExpressionBinding,\n DynamicValue,\n ConditionalValue,\n} from \"uilint-core\";\n\n// Import type guards as values (they are functions)\nimport {\n isDataBinding,\n isExpressionBinding,\n isConditionalValue,\n} from \"uilint-core\";\n\n// Re-export type guards\nexport { isDataBinding, isExpressionBinding, isConditionalValue };\n\n/**\n * Context for evaluating bindings\n */\nexport interface BindingContext {\n /** Panel data from inspector */\n data: Record<string, unknown>;\n /** Plugin state */\n state: Record<string, unknown>;\n /** Computed values from state definition */\n computed: Record<string, unknown>;\n}\n\n/**\n * Gets a value from an object using dot notation path\n */\nexport function getValueByPath(\n obj: Record<string, unknown>,\n path: string\n): unknown {\n const parts = path.split(\".\");\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n if (typeof current === \"object\") {\n current = (current as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n\n return current;\n}\n\n/**\n * Resolves a data binding against the context\n */\nexport function resolveBinding(\n binding: DataBinding,\n ctx: BindingContext\n): unknown {\n const path = binding.binding;\n\n // Try data first (panel data), then state, then computed\n let value = getValueByPath(ctx.data, path);\n if (value === undefined) {\n value = getValueByPath(ctx.state, path);\n }\n if (value === undefined) {\n value = getValueByPath(ctx.computed, path);\n }\n\n return value;\n}\n\n/**\n * Evaluates an expression binding against the context\n *\n * SECURITY NOTE: This uses Function() which is similar to eval().\n * The expressions come from trusted plugin definitions, not user input.\n */\nexport function evaluateExpression(\n expr: ExpressionBinding,\n ctx: BindingContext\n): unknown {\n const expression = expr.expression;\n\n // Create a combined context object\n const combinedContext = {\n ...ctx.data,\n ...ctx.state,\n ...ctx.computed,\n };\n\n try {\n // Create a function that has access to context properties\n const keys = Object.keys(combinedContext);\n const values = Object.values(combinedContext);\n\n \n const fn = new Function(...keys, `return (${expression});`);\n return fn(...values);\n } catch (error) {\n console.warn(`[SchemaRenderer] Failed to evaluate expression: ${expression}`, error);\n return undefined;\n }\n}\n\n/**\n * Resolves a dynamic value (static value or binding)\n */\nexport function resolveDynamicValue<T>(\n value: DynamicValue<T>,\n ctx: BindingContext\n): T | undefined {\n if (isDataBinding(value)) {\n return resolveBinding(value, ctx) as T | undefined;\n }\n return value;\n}\n\n/**\n * Resolves a conditional value based on condition binding\n */\nexport function resolveConditionalValue<T>(\n value: ConditionalValue<T>,\n ctx: BindingContext\n): T {\n const condition = resolveBinding(value.condition, ctx);\n return condition ? value.true : value.false;\n}\n\n/**\n * Resolves any value that could be static, binding, or conditional\n */\nexport function resolveValue<T>(\n value: T | DataBinding | ConditionalValue<T>,\n ctx: BindingContext\n): T | undefined {\n if (isConditionalValue(value)) {\n return resolveConditionalValue(value, ctx);\n }\n if (isDataBinding(value)) {\n return resolveBinding(value, ctx) as T | undefined;\n }\n return value;\n}\n\n/**\n * Evaluates a condition (DataBinding or ExpressionBinding)\n */\nexport function evaluateCondition(\n condition: DataBinding | ExpressionBinding,\n ctx: BindingContext\n): boolean {\n if (isExpressionBinding(condition)) {\n return Boolean(evaluateExpression(condition, ctx));\n }\n return Boolean(resolveBinding(condition, ctx));\n}\n\n/**\n * Creates action payload from bindings\n */\nexport function createActionPayload(\n staticPayload: Record<string, unknown> | undefined,\n payloadBindings: Record<string, string> | undefined,\n ctx: BindingContext\n): Record<string, unknown> {\n const payload: Record<string, unknown> = { ...staticPayload };\n\n if (payloadBindings) {\n for (const [key, bindingPath] of Object.entries(payloadBindings)) {\n payload[key] = resolveBinding({ binding: bindingPath }, ctx);\n }\n }\n\n return payload;\n}\n","/**\n * Header Section Renderer\n *\n * Renders a header with optional icon and subtitle.\n */\n\nimport React from \"react\";\nimport type { HeaderSection as HeaderSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\n\ninterface HeaderSectionProps {\n section: HeaderSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Renders a header section\n */\nexport function HeaderSection({ section, ctx }: HeaderSectionProps) {\n const text = resolveDynamicValue(section.text, ctx);\n const subtitle = resolveDynamicValue(section.subtitle, ctx);\n const IconComponent = section.icon ? getIcon(section.icon) : null;\n\n const containerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n marginBottom: \"0.75rem\",\n ...(section.sticky && {\n position: \"sticky\",\n top: 0,\n backgroundColor: \"var(--uilint-surface)\",\n padding: \"0.5rem 0\",\n zIndex: 10,\n }),\n };\n\n return (\n <div style={containerStyle}>\n {IconComponent && (\n <span style={{ color: \"var(--uilint-text-muted)\", flexShrink: 0, marginTop: \"0.125rem\" }}>\n <IconComponent size={16} />\n </span>\n )}\n <div>\n <h3\n style={{\n margin: 0,\n fontSize: \"0.875rem\",\n fontWeight: 600,\n color: \"var(--uilint-text-primary)\",\n }}\n >\n {String(text ?? \"\")}\n </h3>\n {subtitle && (\n <p\n style={{\n margin: \"0.25rem 0 0 0\",\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n {String(subtitle)}\n </p>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Code Viewer Section Renderer\n *\n * Renders a code block with syntax highlighting and optional diff highlighting.\n * Uses the existing ScrollableCodeSection component when available.\n */\n\nimport React from \"react\";\nimport type { CodeViewerSection as CodeViewerSectionSchema } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n resolveBinding,\n createActionPayload,\n isDataBinding,\n type BindingContext,\n} from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\n\ninterface CodeViewerSectionProps {\n section: CodeViewerSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Simple code display component (placeholder for full ScrollableCodeSection)\n */\nfunction SimpleCodeViewer({\n code,\n startLine = 1,\n highlightLines,\n maxHeight,\n}: {\n code: string;\n startLine?: number;\n highlightLines?: number[];\n maxHeight?: number;\n}) {\n const lines = code.split(\"\\n\");\n const highlightSet = new Set(highlightLines || []);\n\n return (\n <div\n style={{\n fontFamily: \"monospace\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n overflow: \"auto\",\n maxHeight: maxHeight || 200,\n }}\n >\n {lines.map((line, index) => {\n const lineNum = startLine + index;\n const isHighlighted = highlightSet.has(lineNum);\n\n return (\n <div\n key={index}\n style={{\n display: \"flex\",\n backgroundColor: isHighlighted\n ? \"rgba(var(--uilint-accent-rgb), 0.15)\"\n : \"transparent\",\n }}\n >\n <span\n style={{\n width: \"3rem\",\n paddingRight: \"0.5rem\",\n textAlign: \"right\",\n color: \"var(--uilint-text-muted)\",\n userSelect: \"none\",\n flexShrink: 0,\n borderRight: \"1px solid var(--uilint-border)\",\n }}\n >\n {lineNum}\n </span>\n <pre\n style={{\n margin: 0,\n padding: \"0 0.5rem\",\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-all\",\n flex: 1,\n }}\n >\n {line || \" \"}\n </pre>\n </div>\n );\n })}\n </div>\n );\n}\n\n/**\n * Renders a code viewer section\n */\nexport function CodeViewerSection({\n section,\n ctx,\n onAction,\n onFetch,\n}: CodeViewerSectionProps) {\n const [code, setCode] = React.useState<string | null>(null);\n const [isLoading, setIsLoading] = React.useState(false);\n\n // Determine code source\n const codeSource = section.code;\n\n React.useEffect(() => {\n if (isDataBinding(codeSource)) {\n // Code comes from binding\n const boundCode = resolveBinding(codeSource, ctx);\n setCode(typeof boundCode === \"string\" ? boundCode : null);\n } else if (\"fetch\" in codeSource && onFetch) {\n // Code needs to be fetched\n setIsLoading(true);\n const fetchConfig = codeSource.fetch;\n const params: Record<string, unknown> = {};\n\n // Resolve fetch params\n if (fetchConfig.params.filePath) {\n params.filePath = resolveBinding(fetchConfig.params.filePath, ctx);\n }\n if (fetchConfig.params.line) {\n params.line = resolveBinding(fetchConfig.params.line, ctx);\n }\n if (fetchConfig.params.contextAbove !== undefined) {\n params.contextAbove = fetchConfig.params.contextAbove;\n }\n if (fetchConfig.params.contextBelow !== undefined) {\n params.contextBelow = fetchConfig.params.contextBelow;\n }\n\n onFetch(fetchConfig.type, params)\n .then((result) => {\n setCode(typeof result === \"string\" ? result : JSON.stringify(result, null, 2));\n })\n .catch((error) => {\n console.error(\"[CodeViewerSection] Fetch failed:\", error);\n setCode(`// Error loading code: ${error.message}`);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [codeSource, ctx, onFetch]);\n\n const startLine = resolveDynamicValue(section.startLine, ctx);\n const highlightLines = section.highlightLines\n ? (resolveBinding(section.highlightLines, ctx) as number[] | undefined)\n : undefined;\n\n const IconComponent = section.icon ? getIcon(section.icon) : null;\n\n const handleNavigate = section.onNavigate\n ? () => {\n const payload = createActionPayload(\n section.onNavigate!.payload,\n section.onNavigate!.payloadBindings,\n ctx\n );\n onAction(section.onNavigate!.type, payload);\n }\n : undefined;\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {section.label && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"0.5rem\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.375rem\" }}>\n {IconComponent && (\n <span style={{ color: \"var(--uilint-text-muted)\" }}>\n <IconComponent size={14} />\n </span>\n )}\n <span\n style={{\n fontSize: \"0.75rem\",\n fontWeight: 500,\n color: \"var(--uilint-text-secondary)\",\n }}\n >\n {section.label}\n </span>\n </div>\n {handleNavigate && (\n <button\n onClick={handleNavigate}\n style={{\n background: \"none\",\n border: \"none\",\n padding: \"0.25rem\",\n cursor: \"pointer\",\n color: \"var(--uilint-accent)\",\n fontSize: \"0.75rem\",\n }}\n >\n Open in editor\n </button>\n )}\n </div>\n )}\n {isLoading ? (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n >\n Loading code...\n </div>\n ) : code ? (\n <SimpleCodeViewer\n code={code}\n startLine={typeof startLine === \"number\" ? startLine : 1}\n highlightLines={highlightLines}\n maxHeight={section.maxHeight}\n />\n ) : (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.75rem\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n >\n No code available\n </div>\n )}\n </div>\n );\n}\n","/**\n * Code Comparison Section Renderer\n *\n * Renders a side-by-side or stacked code comparison.\n */\n\nimport React from \"react\";\nimport type { CodeComparisonSection as CodeComparisonSectionSchema } from \"uilint-core\";\nimport type { BindingContext } from \"../binding-utils\";\nimport { CodeViewerSection } from \"./CodeViewerSection\";\n\ninterface CodeComparisonSectionProps {\n section: CodeComparisonSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Renders a code comparison section\n */\nexport function CodeComparisonSection({\n section,\n ctx,\n onAction,\n onFetch,\n}: CodeComparisonSectionProps) {\n const isStackedMode = section.mode === \"stacked\";\n\n const containerStyle: React.CSSProperties = isStackedMode\n ? {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n marginBottom: \"0.75rem\",\n }\n : {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"1rem\",\n marginBottom: \"0.75rem\",\n };\n\n // Convert source/target configs to CodeViewerSection props\n const sourceSection = {\n type: \"code-viewer\" as const,\n label: section.source.label,\n icon: section.source.icon,\n code: section.source.code,\n location: section.source.location,\n diffHighlighting: section.computeDiff,\n maxHeight: section.maxHeight,\n };\n\n const targetSection = {\n type: \"code-viewer\" as const,\n label: section.target.label,\n icon: section.target.icon,\n code: section.target.code,\n location: section.target.location,\n diffHighlighting: section.computeDiff,\n maxHeight: section.maxHeight,\n };\n\n return (\n <div style={containerStyle}>\n <CodeViewerSection\n section={sourceSection}\n ctx={ctx}\n onAction={onAction}\n onFetch={onFetch}\n />\n <CodeViewerSection\n section={targetSection}\n ctx={ctx}\n onAction={onAction}\n onFetch={onFetch}\n />\n </div>\n );\n}\n","/**\n * Badge Section Renderer\n *\n * Renders a badge/pill display for status, severity, similarity, etc.\n */\n\nimport React from \"react\";\nimport type { BadgeSection as BadgeSectionSchema } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\nimport { Badge, CategoryBadge, CountBadge } from \"../../badge\";\n\ninterface BadgeSectionProps {\n section: BadgeSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Gets color for similarity percentage\n */\nfunction getSimilarityColor(similarity: number): string {\n if (similarity >= 85) return \"error\";\n if (similarity >= 70) return \"warning\";\n return \"info\";\n}\n\n/**\n * Gets label for similarity percentage\n */\nfunction getSimilarityLabel(similarity: number): string {\n if (similarity >= 90) return \"Very High\";\n if (similarity >= 75) return \"High\";\n if (similarity >= 60) return \"Moderate\";\n return \"Low\";\n}\n\n/**\n * Renders a badge section\n */\nexport function BadgeSection({ section, ctx }: BadgeSectionProps) {\n const value = resolveBinding(section.value, ctx);\n\n const containerStyle: React.CSSProperties = section.centered\n ? { display: \"flex\", justifyContent: \"center\", marginBottom: \"0.75rem\" }\n : { marginBottom: \"0.75rem\" };\n\n switch (section.variant) {\n case \"similarity\": {\n const similarity = typeof value === \"number\" ? value : 0;\n const percent = Math.round(similarity * 100);\n const color = getSimilarityColor(percent);\n const label = getSimilarityLabel(percent);\n\n return (\n <div style={containerStyle}>\n <Badge variant={color as \"error\" | \"warning\" | \"info\"}>\n {percent}% Match - {label}\n </Badge>\n </div>\n );\n }\n\n case \"severity\": {\n const severity = String(value || \"info\");\n const variantMap: Record<string, \"error\" | \"warning\" | \"success\" | \"info\"> = {\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n success: \"success\",\n };\n const variant = variantMap[severity] || \"info\";\n\n return (\n <div style={containerStyle}>\n <Badge variant={variant}>\n {section.label ? `${section.label}: ` : \"\"}{severity}\n </Badge>\n </div>\n );\n }\n\n case \"status\": {\n const status = String(value || \"unknown\");\n const statusColors: Record<string, \"error\" | \"warning\" | \"success\" | \"info\"> = {\n ready: \"success\",\n indexing: \"info\",\n error: \"error\",\n idle: \"info\",\n loading: \"info\",\n };\n const variant = statusColors[status] || \"info\";\n\n return (\n <div style={containerStyle}>\n <Badge variant={variant}>\n {section.label ? `${section.label}: ` : \"\"}{status}\n </Badge>\n </div>\n );\n }\n\n case \"category\": {\n const category = String(value || \"\");\n return (\n <div style={containerStyle}>\n <CategoryBadge>{category}</CategoryBadge>\n </div>\n );\n }\n\n case \"count\": {\n const count = typeof value === \"number\" ? value : 0;\n return (\n <div style={containerStyle}>\n {section.label && (\n <span style={{ marginRight: \"0.5rem\", fontSize: \"0.75rem\", color: \"var(--uilint-text-muted)\" }}>\n {section.label}:\n </span>\n )}\n <CountBadge count={count} />\n </div>\n );\n }\n\n default:\n return null;\n }\n}\n","/**\n * Text Section Renderer\n *\n * Renders plain text content with various styling variants.\n */\n\nimport React from \"react\";\nimport type { TextSection as TextSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\n\ninterface TextSectionProps {\n section: TextSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Gets CSS styles for text variant\n */\nfunction getVariantStyles(variant?: string): React.CSSProperties {\n const base: React.CSSProperties = {\n marginBottom: \"0.5rem\",\n lineHeight: 1.5,\n };\n\n switch (variant) {\n case \"caption\":\n return {\n ...base,\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n };\n case \"muted\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-text-muted)\",\n };\n case \"error\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-error)\",\n };\n case \"success\":\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-success)\",\n };\n case \"body\":\n default:\n return {\n ...base,\n fontSize: \"0.875rem\",\n color: \"var(--uilint-text-primary)\",\n };\n }\n}\n\n/**\n * Renders a text section\n */\nexport function TextSection({ section, ctx }: TextSectionProps) {\n const content = resolveDynamicValue(section.content, ctx);\n\n if (content === undefined || content === null) {\n return null;\n }\n\n const styles = getVariantStyles(section.variant);\n\n return <p style={styles}>{String(content)}</p>;\n}\n","/**\n * Actions Section Renderer\n *\n * Renders a group of action buttons.\n */\n\nimport React from \"react\";\nimport type { ActionsSection as ActionsSectionSchema, ActionButton } from \"uilint-core\";\nimport {\n resolveValue,\n resolveBinding,\n createActionPayload,\n isConditionalValue,\n type BindingContext,\n} from \"../binding-utils\";\nimport { getIcon } from \"../icon-map\";\nimport { Button } from \"../../button\";\n\ninterface ActionsSectionProps {\n section: ActionsSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}\n\n/**\n * Maps button variant to Button component variant\n */\nfunction mapVariant(variant?: string): \"default\" | \"outline\" | \"ghost\" | \"destructive\" {\n switch (variant) {\n case \"primary\":\n return \"default\";\n case \"secondary\":\n return \"outline\";\n case \"ghost\":\n return \"ghost\";\n case \"danger\":\n return \"destructive\";\n default:\n return \"default\";\n }\n}\n\n/**\n * Renders a single action button\n */\nfunction ActionButtonRenderer({\n button,\n ctx,\n onAction,\n}: {\n button: ActionButton;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}) {\n // Check visibility\n if (button.visible) {\n const isVisible = Boolean(resolveBinding(button.visible, ctx));\n if (!isVisible) return null;\n }\n\n // Check disabled state\n const isDisabled = button.disabled\n ? Boolean(resolveBinding(button.disabled, ctx))\n : false;\n\n // Resolve label\n let label: string;\n if (isConditionalValue(button.label)) {\n label = String(resolveValue(button.label, ctx) ?? \"\");\n } else {\n label = String(resolveValue(button.label, ctx) ?? \"\");\n }\n\n // Get icon\n const IconComponent = button.icon ? getIcon(button.icon) : null;\n\n // Handle click\n const handleClick = () => {\n const payload = createActionPayload(\n button.action.payload,\n button.action.payloadBindings,\n ctx\n );\n onAction(button.action.type, payload);\n };\n\n return (\n <Button\n variant={mapVariant(button.variant)}\n size=\"sm\"\n disabled={isDisabled}\n onClick={handleClick}\n >\n {IconComponent && <IconComponent size={14} style={{ marginRight: \"0.25rem\" }} />}\n {label}\n </Button>\n );\n}\n\n/**\n * Renders an actions section\n */\nexport function ActionsSection({ section, ctx, onAction }: ActionsSectionProps) {\n const isRow = section.direction !== \"column\";\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: isRow ? \"row\" : \"column\",\n gap: \"0.5rem\",\n marginBottom: \"0.75rem\",\n ...(isRow && { flexWrap: \"wrap\" }),\n }}\n >\n {section.actions.map((button) => (\n <ActionButtonRenderer\n key={button.id}\n button={button}\n ctx={ctx}\n onAction={onAction}\n />\n ))}\n </div>\n );\n}\n","/**\n * Divider Section Renderer\n *\n * Renders a visual divider with configurable spacing.\n */\n\nimport React from \"react\";\nimport type { DividerSection as DividerSectionSchema } from \"uilint-core\";\n\ninterface DividerSectionProps {\n section: DividerSectionSchema;\n}\n\n/**\n * Gets margin for spacing variant\n */\nfunction getSpacingMargin(spacing?: string): string {\n switch (spacing) {\n case \"small\":\n return \"0.5rem 0\";\n case \"large\":\n return \"1.5rem 0\";\n case \"medium\":\n default:\n return \"1rem 0\";\n }\n}\n\n/**\n * Renders a divider section\n */\nexport function DividerSection({ section }: DividerSectionProps) {\n const margin = getSpacingMargin(section.spacing);\n\n return (\n <hr\n style={{\n margin,\n border: \"none\",\n borderTop: \"1px solid var(--uilint-border)\",\n }}\n />\n );\n}\n","/**\n * Conditional Section Renderer\n *\n * Renders sections conditionally based on a binding or expression.\n */\n\nimport React from \"react\";\nimport type { ConditionalSection as ConditionalSectionSchema, PanelSection } from \"uilint-core\";\nimport { evaluateCondition, type BindingContext } from \"../binding-utils\";\n\ninterface ConditionalSectionProps {\n section: ConditionalSectionSchema;\n ctx: BindingContext;\n renderSection: (section: PanelSection, index: number) => React.ReactNode;\n}\n\n/**\n * Renders a conditional section\n */\nexport function ConditionalSection({\n section,\n ctx,\n renderSection,\n}: ConditionalSectionProps) {\n const conditionMet = evaluateCondition(section.condition, ctx);\n\n const sectionsToRender = conditionMet ? section.then : section.else;\n\n if (!sectionsToRender || sectionsToRender.length === 0) {\n return null;\n }\n\n return (\n <>\n {sectionsToRender.map((childSection, index) => (\n <React.Fragment key={index}>\n {renderSection(childSection, index)}\n </React.Fragment>\n ))}\n </>\n );\n}\n","/**\n * List Section Renderer\n *\n * Renders an array of items using a template layout.\n */\n\nimport React from \"react\";\nimport type { ListSection as ListSectionSchema, PanelSection } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\n\ninterface ListSectionProps {\n section: ListSectionSchema;\n ctx: BindingContext;\n renderSection: (section: PanelSection, index: number, itemCtx?: BindingContext) => React.ReactNode;\n}\n\n/**\n * Renders a list section\n */\nexport function ListSection({ section, ctx, renderSection }: ListSectionProps) {\n const items = resolveBinding(section.items, ctx);\n\n if (!Array.isArray(items) || items.length === 0) {\n if (section.emptyMessage) {\n return (\n <div\n style={{\n padding: \"1rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n fontSize: \"0.875rem\",\n }}\n >\n {section.emptyMessage}\n </div>\n );\n }\n return null;\n }\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {items.map((item, itemIndex) => {\n // Create an item context with \"item\" prefix\n const itemCtx: BindingContext = {\n ...ctx,\n data: {\n ...ctx.data,\n item,\n itemIndex,\n },\n };\n\n return (\n <div key={itemIndex} style={{ marginBottom: \"0.5rem\" }}>\n {section.itemLayout.map((childSection, layoutIndex) =>\n renderSection(childSection, layoutIndex, itemCtx)\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Image Section Renderer\n *\n * Renders an image with optional highlight region.\n */\n\nimport React from \"react\";\nimport type { ImageSection as ImageSectionSchema } from \"uilint-core\";\nimport { resolveBinding, type BindingContext } from \"../binding-utils\";\n\ninterface ImageSectionProps {\n section: ImageSectionSchema;\n ctx: BindingContext;\n}\n\ninterface HighlightRegion {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Renders an image section\n */\nexport function ImageSection({ section, ctx }: ImageSectionProps) {\n const src = resolveBinding(section.src, ctx);\n const highlightRegion = section.highlightRegion\n ? (resolveBinding(section.highlightRegion, ctx) as HighlightRegion | undefined)\n : undefined;\n\n if (!src || typeof src !== \"string\") {\n return null;\n }\n\n return (\n <div\n style={{\n position: \"relative\",\n marginBottom: \"0.75rem\",\n maxHeight: section.maxHeight,\n overflow: \"hidden\",\n }}\n >\n <img\n src={src}\n alt={section.alt || \"Image\"}\n style={{\n width: \"100%\",\n height: \"auto\",\n maxHeight: section.maxHeight,\n objectFit: \"contain\",\n borderRadius: \"4px\",\n border: \"1px solid var(--uilint-border)\",\n }}\n />\n {highlightRegion && (\n <div\n style={{\n position: \"absolute\",\n left: `${highlightRegion.x}px`,\n top: `${highlightRegion.y}px`,\n width: `${highlightRegion.width}px`,\n height: `${highlightRegion.height}px`,\n border: \"2px solid var(--uilint-accent)\",\n borderRadius: \"4px\",\n backgroundColor: \"rgba(var(--uilint-accent-rgb), 0.1)\",\n pointerEvents: \"none\",\n }}\n />\n )}\n </div>\n );\n}\n","/**\n * Card Section Renderer\n *\n * Renders a card display for list items.\n */\n\nimport React from \"react\";\nimport type { CardSection as CardSectionSchema } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n resolveBinding,\n createActionPayload,\n type BindingContext,\n} from \"../binding-utils\";\nimport { Card, CardHeader, CardTitle, CardDescription } from \"../../card\";\nimport { Badge } from \"../../badge\";\n\ninterface CardSectionProps {\n section: CardSectionSchema;\n ctx: BindingContext;\n onAction: (type: string, payload: Record<string, unknown>) => void;\n}\n\n/**\n * Renders a card section\n */\nexport function CardSection({ section, ctx, onAction }: CardSectionProps) {\n const title = resolveDynamicValue(section.title, ctx);\n const subtitle = resolveDynamicValue(section.subtitle, ctx);\n const thumbnail = section.thumbnail ? resolveBinding(section.thumbnail, ctx) : undefined;\n const badgeValue = section.badge\n ? resolveBinding(section.badge.value, ctx)\n : undefined;\n\n const handleClick = section.onClick\n ? () => {\n const payload = createActionPayload(\n section.onClick!.payload,\n section.onClick!.payloadBindings,\n ctx\n );\n onAction(section.onClick!.type, payload);\n }\n : undefined;\n\n const cardStyle: React.CSSProperties = {\n marginBottom: \"0.5rem\",\n ...(handleClick && { cursor: \"pointer\" }),\n };\n\n return (\n <Card\n style={cardStyle}\n onClick={handleClick}\n role={handleClick ? \"button\" : undefined}\n tabIndex={handleClick ? 0 : undefined}\n >\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"0.75rem\" }}>\n {typeof thumbnail === \"string\" && thumbnail && (\n <img\n src={thumbnail}\n alt=\"\"\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"4px\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <CardHeader style={{ padding: \"0.75rem 0.75rem 0\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"flex-start\" }}>\n <CardTitle style={{ fontSize: \"0.875rem\", marginBottom: 0 }}>\n {String(title ?? \"\")}\n </CardTitle>\n {section.badge && badgeValue !== undefined && (\n <Badge variant={section.badge.variant === \"severity\" ? \"warning\" : \"info\"}>\n {section.badge.label ? `${section.badge.label}: ` : \"\"}{String(badgeValue)}\n </Badge>\n )}\n </div>\n {subtitle && (\n <CardDescription style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {String(subtitle)}\n </CardDescription>\n )}\n </CardHeader>\n </div>\n </div>\n </Card>\n );\n}\n","/**\n * Progress Section Renderer\n *\n * Renders a progress indicator with optional label.\n */\n\nimport React from \"react\";\nimport type { ProgressSection as ProgressSectionSchema } from \"uilint-core\";\nimport { resolveDynamicValue, type BindingContext } from \"../binding-utils\";\n\ninterface ProgressSectionProps {\n section: ProgressSectionSchema;\n ctx: BindingContext;\n}\n\n/**\n * Renders a progress section\n */\nexport function ProgressSection({ section, ctx }: ProgressSectionProps) {\n const value = resolveDynamicValue(section.value, ctx);\n const label = resolveDynamicValue(section.label, ctx);\n const percent = typeof value === \"number\" ? Math.min(100, Math.max(0, value)) : 0;\n\n return (\n <div style={{ marginBottom: \"0.75rem\" }}>\n {label && (\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n marginBottom: \"0.25rem\",\n }}\n >\n {String(label)}\n </div>\n )}\n <div\n style={{\n height: \"6px\",\n backgroundColor: \"var(--uilint-surface)\",\n borderRadius: \"3px\",\n overflow: \"hidden\",\n }}\n >\n {section.indeterminate ? (\n <div\n style={{\n height: \"100%\",\n width: \"30%\",\n backgroundColor: \"var(--uilint-accent)\",\n borderRadius: \"3px\",\n animation: \"progress-indeterminate 1.5s infinite linear\",\n }}\n />\n ) : (\n <div\n style={{\n height: \"100%\",\n width: `${percent}%`,\n backgroundColor: \"var(--uilint-accent)\",\n borderRadius: \"3px\",\n transition: \"width 0.3s ease\",\n }}\n />\n )}\n </div>\n {!section.indeterminate && typeof value === \"number\" && (\n <div\n style={{\n fontSize: \"0.75rem\",\n color: \"var(--uilint-text-muted)\",\n marginTop: \"0.25rem\",\n textAlign: \"right\",\n }}\n >\n {percent}%\n </div>\n )}\n </div>\n );\n}\n","/**\n * Schema Panel Renderer\n *\n * Renders a PanelDefinition from uilint-core as React components.\n * This is the main entry point for declarative panel rendering.\n */\n\nimport React from \"react\";\nimport type { PanelDefinition, PanelSection } from \"uilint-core\";\nimport {\n resolveDynamicValue,\n evaluateCondition,\n type BindingContext,\n} from \"./binding-utils\";\nimport { getIcon } from \"./icon-map\";\nimport {\n HeaderSection,\n CodeViewerSection,\n CodeComparisonSection,\n BadgeSection,\n TextSection,\n ActionsSection,\n DividerSection,\n ConditionalSection,\n ListSection,\n ImageSection,\n CardSection,\n ProgressSection,\n} from \"./sections\";\n\nexport interface SchemaPanelProps {\n /** Panel definition from plugin */\n panel: PanelDefinition;\n /** Data passed to the panel (e.g., from inspector) */\n data: Record<string, unknown>;\n /** Plugin state */\n state: Record<string, unknown>;\n /** Computed values from plugin state definition */\n computed?: Record<string, unknown>;\n /** Handler for action execution */\n onAction: (type: string, payload: Record<string, unknown>) => void;\n /** Handler for data fetching (e.g., source code) */\n onFetch?: (type: string, params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Renders a panel definition as React components\n */\nexport function SchemaPanel({\n panel,\n data,\n state,\n computed = {},\n onAction,\n onFetch,\n}: SchemaPanelProps) {\n // Create binding context\n const ctx: BindingContext = {\n data,\n state,\n computed,\n };\n\n // Check loading state\n if (panel.loading) {\n const isLoading = evaluateCondition(panel.loading.when, ctx);\n if (isLoading) {\n return (\n <div\n style={{\n padding: \"2rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n <div\n style={{\n marginBottom: \"0.5rem\",\n animation: \"spin 1s linear infinite\",\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray=\"31.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n <div style={{ fontSize: \"0.875rem\" }}>\n {panel.loading.message || \"Loading...\"}\n </div>\n {panel.loading.submessage && (\n <div style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {panel.loading.submessage}\n </div>\n )}\n </div>\n );\n }\n }\n\n // Check empty state\n if (panel.empty) {\n const isEmpty = evaluateCondition(panel.empty.when, ctx);\n if (isEmpty) {\n const IconComponent = panel.empty.icon ? getIcon(panel.empty.icon) : null;\n return (\n <div\n style={{\n padding: \"2rem\",\n textAlign: \"center\",\n color: \"var(--uilint-text-muted)\",\n }}\n >\n {IconComponent && (\n <div style={{ marginBottom: \"0.5rem\" }}>\n <IconComponent size={32} strokeWidth={1.5} />\n </div>\n )}\n <div style={{ fontSize: \"0.875rem\" }}>{panel.empty.message}</div>\n {panel.empty.submessage && (\n <div style={{ fontSize: \"0.75rem\", marginTop: \"0.25rem\" }}>\n {panel.empty.submessage}\n </div>\n )}\n </div>\n );\n }\n }\n\n // Render section based on type\n const renderSection = (\n section: PanelSection,\n index: number,\n overrideCtx?: BindingContext\n ): React.ReactNode => {\n const sectionCtx = overrideCtx || ctx;\n const key = `section-${index}`;\n\n switch (section.type) {\n case \"header\":\n return <HeaderSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"code-viewer\":\n return (\n <CodeViewerSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n onFetch={onFetch}\n />\n );\n\n case \"code-comparison\":\n return (\n <CodeComparisonSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n onFetch={onFetch}\n />\n );\n\n case \"badge\":\n return <BadgeSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"text\":\n return <TextSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"actions\":\n return (\n <ActionsSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n />\n );\n\n case \"divider\":\n return <DividerSection key={key} section={section} />;\n\n case \"conditional\":\n return (\n <ConditionalSection\n key={key}\n section={section}\n ctx={sectionCtx}\n renderSection={renderSection}\n />\n );\n\n case \"list\":\n return (\n <ListSection\n key={key}\n section={section}\n ctx={sectionCtx}\n renderSection={renderSection}\n />\n );\n\n case \"image\":\n return <ImageSection key={key} section={section} ctx={sectionCtx} />;\n\n case \"card\":\n return (\n <CardSection\n key={key}\n section={section}\n ctx={sectionCtx}\n onAction={onAction}\n />\n );\n\n case \"progress\":\n return <ProgressSection key={key} section={section} ctx={sectionCtx} />;\n\n default:\n console.warn(\n `[SchemaPanel] Unknown section type: ${(section as { type: string }).type}`\n );\n return null;\n }\n };\n\n // Resolve panel title\n const title = resolveDynamicValue(panel.title, ctx);\n\n return (\n <div style={{ padding: \"1rem\" }}>\n {title && (\n <h2\n style={{\n margin: \"0 0 1rem 0\",\n fontSize: \"1rem\",\n fontWeight: 600,\n color: \"var(--uilint-text-primary)\",\n }}\n >\n {String(title)}\n </h2>\n )}\n {panel.layout.map((section, index) => renderSection(section, index))}\n </div>\n );\n}\n"],"names":["getValueByPath","obj","path","parts","current","part","resolveBinding","binding","ctx","value","evaluateExpression","expr","expression","combinedContext","keys","values","error","resolveDynamicValue","isDataBinding","resolveConditionalValue","resolveValue","isConditionalValue","evaluateCondition","condition","isExpressionBinding","createActionPayload","staticPayload","payloadBindings","payload","key","bindingPath","HeaderSection","section","text","subtitle","IconComponent","getIcon","containerStyle","jsxs","jsx","SimpleCodeViewer","code","startLine","highlightLines","maxHeight","lines","highlightSet","line","index","lineNum","isHighlighted","CodeViewerSection","onAction","onFetch","setCode","React","isLoading","setIsLoading","codeSource","boundCode","fetchConfig","params","result","handleNavigate","CodeComparisonSection","sourceSection","targetSection","getSimilarityColor","similarity","getSimilarityLabel","BadgeSection","percent","color","label","Badge","severity","variant","status","category","CategoryBadge","count","CountBadge","getVariantStyles","base","TextSection","content","styles","mapVariant","ActionButtonRenderer","button","isDisabled","handleClick","Button","ActionsSection","isRow","getSpacingMargin","spacing","DividerSection","margin","ConditionalSection","renderSection","sectionsToRender","childSection","ListSection","items","item","itemIndex","itemCtx","layoutIndex","ImageSection","src","highlightRegion","CardSection","title","thumbnail","badgeValue","cardStyle","Card","CardHeader","CardTitle","CardDescription","ProgressSection","SchemaPanel","panel","data","state","computed","overrideCtx","sectionCtx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin-system/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzC,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,EAOzC,CAAC;AAWF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAAkB,CAAC;AAEhE;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAsCD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,SAAS,GAAE,cAAc,EAAkB,EAC3C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GACrE,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAExE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin-system/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzC,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,EAOzC,CAAC;AAWF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAAkB,CAAC;AAEhE;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AA8DD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,SAAS,GAAE,cAAc,EAAkB,EAC3C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GACrE,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAExE"}