@adoptai/genui-components 0.1.60 → 0.1.62
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/composites/decision-card/resolver.cjs +7 -4
- package/dist/composites/decision-card/resolver.cjs.map +1 -1
- package/dist/composites/decision-card/resolver.d.ts +7 -1
- package/dist/composites/decision-card/resolver.d.ts.map +1 -1
- package/dist/composites/decision-card/resolver.js +7 -5
- package/dist/composites/decision-card/resolver.js.map +1 -1
- package/dist/composites/decision-queue/resolver.d.ts +33 -0
- package/dist/composites/decision-queue/resolver.d.ts.map +1 -0
- package/dist/composites/workflow-stepper/resolver.cjs +2 -1
- package/dist/composites/workflow-stepper/resolver.cjs.map +1 -1
- package/dist/composites/workflow-stepper/resolver.js +2 -1
- package/dist/composites/workflow-stepper/resolver.js.map +1 -1
- package/dist/index.cjs +495 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +495 -10
- package/dist/index.js.map +1 -1
- package/dist/renderer.cjs +495 -10
- package/dist/renderer.cjs.map +1 -1
- package/dist/renderer.js +495 -10
- package/dist/renderer.js.map +1 -1
- package/dist/resolver.cjs +495 -10
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +495 -10
- package/dist/resolver.js.map +1 -1
- package/dist/schemas/decision-queue.d.ts +227 -0
- package/dist/schemas/decision-queue.d.ts.map +1 -0
- package/dist/schemas/index.cjs +162 -0
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.ts +227 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +162 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/shared/InteractionContext.d.ts +10 -0
- package/dist/shared/InteractionContext.d.ts.map +1 -1
- package/dist/tool-definitions.json +203 -3
- package/package.json +1 -1
|
@@ -235,7 +235,8 @@ var DEFAULT_INTERACTION = {
|
|
|
235
235
|
onStepSelect: void 0,
|
|
236
236
|
resolvedDecisions: void 0,
|
|
237
237
|
onDecisionResolve: void 0,
|
|
238
|
-
onDecisionSource: void 0
|
|
238
|
+
onDecisionSource: void 0,
|
|
239
|
+
onDecisionQueueSubmit: void 0
|
|
239
240
|
};
|
|
240
241
|
var GenUIInteractionContext = React4.createContext(DEFAULT_INTERACTION);
|
|
241
242
|
function useGenUIInteraction() {
|
|
@@ -568,7 +569,8 @@ function DecisionCardRenderer({
|
|
|
568
569
|
data,
|
|
569
570
|
resolved = null,
|
|
570
571
|
onResolve,
|
|
571
|
-
onOpenSource
|
|
572
|
+
onOpenSource,
|
|
573
|
+
eyebrow
|
|
572
574
|
}) {
|
|
573
575
|
var _a, _b, _c;
|
|
574
576
|
const { BORDER: BORDER2, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2 } = useTheme();
|
|
@@ -674,7 +676,7 @@ function DecisionCardRenderer({
|
|
|
674
676
|
},
|
|
675
677
|
children: [
|
|
676
678
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0, display: "flex", flexDirection: "column", gap: 4 }, children: [
|
|
677
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
679
|
+
eyebrow === null ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
678
680
|
"span",
|
|
679
681
|
{
|
|
680
682
|
style: {
|
|
@@ -684,7 +686,7 @@ function DecisionCardRenderer({
|
|
|
684
686
|
fontWeight: 700,
|
|
685
687
|
color: ACCENT2
|
|
686
688
|
},
|
|
687
|
-
children: data.decision_type ? `Decision needs you \xB7 ${data.decision_type}` : "Decision needs you"
|
|
689
|
+
children: eyebrow !== void 0 ? eyebrow : data.decision_type ? `Decision needs you \xB7 ${data.decision_type}` : "Decision needs you"
|
|
688
690
|
}
|
|
689
691
|
),
|
|
690
692
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -906,5 +908,6 @@ function DecisionCardResolver(p) {
|
|
|
906
908
|
|
|
907
909
|
exports.DecisionCardRenderer = DecisionCardRenderer;
|
|
908
910
|
exports.DecisionCardResolver = DecisionCardResolver;
|
|
911
|
+
exports.formatFigure = formatFigure;
|
|
909
912
|
//# sourceMappingURL=resolver.cjs.map
|
|
910
913
|
//# sourceMappingURL=resolver.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/shared/theme.ts","../../../src/shared/ColumnSettingsPanel.tsx","../../../src/shared/ComponentActions.tsx","../../../src/shared/ThemeContext.tsx","../../../src/shared/InteractionContext.tsx","../../../src/composites/decision-card/resolver.tsx"],"names":["jsxs","jsx","useState","useRef","useCallback","useEffect","toPng","createContext","useContext","React","BORDER","MUTED","ACCENT","ACCENT_SOFT","_a","Fragment","_b"],"mappings":"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","file":"resolver.cjs","sourcesContent":["export const BORDER = \"#dedede\";\nexport const MUTED = \"#777777\";\nexport const PAPER = \"#f6f6f6\";\nexport const ACCENT = \"#ff5000\";\nexport const ACCENT_SOFT = \"#cc4000\";\nexport const SECONDARY = \"#0364ff\";\n\nexport const ACCOUNT_TYPE_COLORS = {\n asset: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n liability: { bg: \"#fff7ed\", color: \"#92400e\" },\n equity: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n revenue: { bg: \"#dcfce7\", color: \"#15803d\" },\n expense: { bg: \"#fef2f2\", color: \"#dc2626\" },\n} as const;\n\nexport const STATUS_COLORS = {\n draft: { bg: \"#fff7ed\", color: \"#92400e\" },\n \"pending-review\": { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n approved: { bg: \"#dcfce7\", color: \"#15803d\" },\n filed: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n} as const;\n\nexport const CHART_PALETTE = [\n \"#ff5000\",\n \"#0364ff\",\n \"#16a34a\",\n \"#dc2626\",\n \"#7c3aed\",\n \"#0891b2\",\n \"#f59e0b\",\n \"#6366f1\",\n \"#ec4899\",\n \"#84cc16\",\n \"#e11d48\",\n \"#0ea5e9\",\n];\n","\"use client\";\n\nimport React from \"react\";\nimport { BORDER, MUTED, ACCENT } from \"./theme\";\n\ninterface ColumnSettingsPanelProps {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\nexport function ColumnSettingsPanel({ columns, hidden, onToggle, onShowAll, onHideAll }: ColumnSettingsPanelProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", minWidth: \"180px\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", paddingBottom: \"4px\", borderBottom: `1px solid ${BORDER}` }}>\n <button\n onClick={onShowAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: ACCENT, fontWeight: 500, padding: 0 }}\n >\n Show all\n </button>\n <button\n onClick={onHideAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, fontWeight: 500, padding: 0 }}\n >\n Hide all\n </button>\n </div>\n {columns.map((col) => (\n <label\n key={col.key}\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--foreground)\" }}\n >\n <input\n type=\"checkbox\"\n checked={!hidden.has(col.key)}\n onChange={() => onToggle(col.key)}\n style={{ accentColor: ACCENT, width: \"14px\", height: \"14px\", margin: 0, cursor: \"pointer\" }}\n />\n {col.label}\n </label>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { toPng } from \"html-to-image\";\nimport { ColumnSettingsPanel } from \"./ColumnSettingsPanel\";\nimport { BORDER, MUTED } from \"./theme\";\n\nconst DOT_COLOR = \"#aaaaaa\";\nconst DOT_HOVER = \"#555555\";\n\ninterface ColumnConfig {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\ninterface ComponentActionsProps {\n children: React.ReactNode;\n onDownloadCSV?: () => void;\n columnConfig?: ColumnConfig;\n filename?: string;\n}\n\ntype MenuView = \"main\" | \"columns\";\n\nexport function ComponentActions({ children, onDownloadCSV, columnConfig, filename = \"component\" }: ComponentActionsProps) {\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<MenuView>(\"main\");\n const contentRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const btnRef = useRef<HTMLButtonElement>(null);\n\n const close = useCallback(() => {\n setOpen(false);\n setView(\"main\");\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current?.contains(e.target as Node)) return;\n if (btnRef.current?.contains(e.target as Node)) return;\n close();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, close]);\n\n const handleDownloadPNG = useCallback(async () => {\n if (!contentRef.current) return;\n try {\n const url = await toPng(contentRef.current, { backgroundColor: \"white\", pixelRatio: 2 });\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${filename}.png`;\n a.click();\n } catch {\n // silent fail\n }\n close();\n }, [filename, close]);\n\n const handleCSV = useCallback(() => {\n onDownloadCSV?.();\n close();\n }, [onDownloadCSV, close]);\n\n return (\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\" }}>\n <div ref={contentRef} style={{ width: \"100%\" }}>\n {children}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", marginTop: \"4px\", position: \"relative\", zIndex: 10, flexShrink: 0 }}>\n <button\n ref={btnRef}\n onClick={() => { setOpen((o) => !o); setView(\"main\"); }}\n aria-label=\"Component actions\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px 8px\",\n display: \"flex\",\n gap: \"3px\",\n alignItems: \"center\",\n borderRadius: \"6px\",\n transition: \"background 0.15s\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#f2f2f2\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_HOVER));\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"none\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_COLOR));\n }}\n >\n <svg width=\"20\" height=\"6\" viewBox=\"0 0 20 6\">\n <circle cx=\"3\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"10\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"17\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n </svg>\n </button>\n\n {open && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"4px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"0.75rem\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.06)\",\n zIndex: 50,\n padding: view === \"columns\" ? \"10px\" : \"4px\",\n minWidth: view === \"columns\" ? \"200px\" : \"160px\",\n }}\n >\n {view === \"main\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {columnConfig && (\n <MenuButton label=\"Customize columns\" onClick={() => setView(\"columns\")} />\n )}\n {onDownloadCSV && (\n <MenuButton label=\"Download CSV\" onClick={handleCSV} />\n )}\n <MenuButton label=\"Download PNG\" onClick={handleDownloadPNG} />\n </div>\n ) : (\n <div>\n <button\n onClick={() => setView(\"main\")}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, marginBottom: \"6px\", padding: 0 }}\n >\n ← Back\n </button>\n <ColumnSettingsPanel\n columns={columnConfig!.columns}\n hidden={columnConfig!.hidden}\n onToggle={columnConfig!.onToggle}\n onShowAll={columnConfig!.onShowAll}\n onHideAll={columnConfig!.onHideAll}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction MenuButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"8px 12px\",\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n textAlign: \"left\",\n borderRadius: \"8px\",\n transition: \"background 0.15s\",\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.background = \"#f2f2f2\")}\n onMouseLeave={(e) => (e.currentTarget.style.background = \"none\")}\n >\n {label}\n </button>\n );\n}\n","\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE,\n} from \"./theme\";\n\nexport interface ThemeTokens {\n BORDER: string;\n MUTED: string;\n PAPER: string;\n ACCENT: string;\n ACCENT_SOFT: string;\n SECONDARY: string;\n CHART_PALETTE: string[];\n}\n\nexport const DEFAULT_TOKENS: ThemeTokens = {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE: [...CHART_PALETTE],\n};\n\nconst GenUIThemeContext = createContext<ThemeTokens>(DEFAULT_TOKENS);\n\nexport interface GenUIThemeProviderProps {\n colors?: Partial<ThemeTokens>;\n children: React.ReactNode;\n}\n\nexport function GenUIThemeProvider({ colors, children }: GenUIThemeProviderProps) {\n const merged = useMemo(\n () => (colors ? { ...DEFAULT_TOKENS, ...colors } : DEFAULT_TOKENS),\n [colors]\n );\n return (\n <GenUIThemeContext.Provider value={merged}>\n {children}\n </GenUIThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeTokens {\n return useContext(GenUIThemeContext);\n}\n","\"use client\";\n\nimport React, { createContext, useContext } from \"react\";\n\n/**\n * Host-provided interaction channel for composites that support selection\n * (e.g. workflow-stepper step clicks driving a transcript filter).\n *\n * Mirrors ThemeContext: safe no-op defaults so composites render inert when\n * the host does not mount the provider (storybook, plain chat embeds).\n */\nexport interface GenUIInteraction {\n selectedStepId: string | null;\n onStepSelect?: (stepId: string | null) => void;\n /** Decision-card resolutions, keyed by decision id, so a resolved card\n * re-renders locked from host state (transcript replay). */\n resolvedDecisions?: Record<string, string>;\n /** Host callback when a decision-card option is chosen. */\n onDecisionResolve?: (decisionId: string, option: string) => void;\n /** Host callback when a decision-card \"view source\" link is activated. */\n onDecisionSource?: (decisionId: string, source?: { url?: string; label?: string }) => void;\n}\n\nexport const DEFAULT_INTERACTION: GenUIInteraction = {\n selectedStepId: null,\n onStepSelect: undefined,\n resolvedDecisions: undefined,\n onDecisionResolve: undefined,\n onDecisionSource: undefined,\n};\n\nconst GenUIInteractionContext = createContext<GenUIInteraction>(DEFAULT_INTERACTION);\n\nexport interface GenUIInteractionProviderProps {\n value: GenUIInteraction;\n children: React.ReactNode;\n}\n\nexport function GenUIInteractionProvider({ value, children }: GenUIInteractionProviderProps) {\n return (\n <GenUIInteractionContext.Provider value={value}>\n {children}\n </GenUIInteractionContext.Provider>\n );\n}\n\nexport function useGenUIInteraction(): GenUIInteraction {\n return useContext(GenUIInteractionContext);\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { useGenUIInteraction } from \"../../shared/InteractionContext\";\n\ntype DecisionCardPayload = SchemaPayload<\"decision-card\">;\ntype Flag = NonNullable<DecisionCardPayload[\"flags\"]>[number];\ntype Option = DecisionCardPayload[\"options\"][number];\ntype Severity = \"low\" | \"medium\" | \"high\";\n\nconst SEVERITY_COLORS: Record<Severity, { color: string; bg: string }> = {\n high: { color: \"#dc2626\", bg: \"#fef2f2\" },\n medium: { color: \"#f59e0b\", bg: \"#fff7ed\" },\n low: { color: \"#777777\", bg: \"#f2f2f2\" },\n};\n\nconst GREEN = \"#15803d\";\nconst GREEN_SOFT = \"#dcfce7\";\n\n// Below this measured width the option buttons stack full-width and the amount\n// drops under the title — the \"adaptive\" behaviour the host asked for.\nconst STACK_BELOW = 380;\n\nfunction formatAmount(amount: number, currency = \"USD\"): string {\n const abs = Math.abs(amount);\n const sign = amount < 0 ? \"-\" : \"\";\n let body: string;\n if (abs >= 1_000_000) body = `${(abs / 1_000_000).toFixed(abs >= 10_000_000 ? 0 : 1)}M`;\n else if (abs >= 1_000) body = `${(abs / 1_000).toFixed(abs >= 10_000 ? 0 : 1)}K`;\n else body = `${abs}`;\n let symbol = \"$\";\n try {\n const parts = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n maximumFractionDigits: 0,\n }).formatToParts(0);\n symbol = parts.find((p) => p.type === \"currency\")?.value ?? \"$\";\n } catch {\n symbol = \"$\";\n }\n return `${sign}${symbol}${body}`;\n}\n\n/** Container-width tracker for the adaptive layout. Pure ResizeObserver. */\nfunction useContainerWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\n const [w, setW] = React.useState(0);\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver((entries) => {\n const cr = entries[0]?.contentRect;\n if (cr) setW(cr.width);\n });\n ro.observe(el);\n setW(el.getBoundingClientRect().width);\n return () => ro.disconnect();\n }, [ref]);\n return w;\n}\n\nconst KEYFRAMES = `\n@keyframes dcRise{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}\n.dc-rise{animation:dcRise 0.28s cubic-bezier(0.22,1,0.36,1) both}\n.dc-range{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:9999px;outline:none;cursor:pointer;background:transparent}\n.dc-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:white;border:2px solid var(--dc-thumb,#ff5000);box-shadow:0 1px 3px rgba(0,0,0,0.18);cursor:grab;transition:transform 0.12s}\n.dc-range::-webkit-slider-thumb:hover{transform:scale(1.12)}\n.dc-range:active::-webkit-slider-thumb{cursor:grabbing}\n.dc-range::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:white;border:2px solid var(--dc-thumb,#ff5000);box-shadow:0 1px 3px rgba(0,0,0,0.18);cursor:grab}\n.dc-range::-moz-range-track{height:4px;border-radius:9999px;background:transparent}\n@media (prefers-reduced-motion: reduce){\n .dc-rise{animation:none !important;opacity:1 !important;transform:none !important}\n .dc-range::-webkit-slider-thumb{transition:none}\n}`;\n\nfunction SparkCheck({ size, color }: { size: number; color: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M5 13l4 4L19 7\"\n stroke={color}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction FlagPill({ flag }: { flag: Flag }) {\n const sev = (flag.severity ?? \"medium\") as Severity;\n const { color, bg } = SEVERITY_COLORS[sev];\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n fontSize: 11,\n fontWeight: 600,\n padding: \"3px 9px\",\n borderRadius: 9999,\n background: bg,\n color,\n lineHeight: 1.2,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{ width: 6, height: 6, borderRadius: \"50%\", background: color, flexShrink: 0 }}\n />\n {flag.field ? `${flag.field}: ${flag.issue}` : flag.issue}\n </span>\n );\n}\n\n/** Format an adjustable figure with its unit (\"40 units\", \"12.5%\"). */\nfunction formatFigure(value: number, unit?: string): string {\n const body = Number.isInteger(value) ? `${value}` : `${Math.round(value * 100) / 100}`;\n if (!unit) return body;\n return unit === \"%\" ? `${body}%` : `${body} ${unit}`;\n}\n\n/** Snap to step within [min, max]. Step defaults to 1 for integer ranges,\n * else 1/100 of the range. */\nfunction clampToRange(raw: number, adjust: NonNullable<Option[\"adjust\"]>): number {\n const step = adjust.step ?? (Number.isInteger(adjust.min) && Number.isInteger(adjust.max) ? 1 : (adjust.max - adjust.min) / 100);\n const snapped = Math.round((raw - adjust.min) / step) * step + adjust.min;\n const fixed = Math.round(snapped * 1e6) / 1e6; // kill float dust\n return Math.min(adjust.max, Math.max(adjust.min, fixed));\n}\n\n/** Inline value adjuster — opens when the user picks an option that carries a\n * suggested figure + range. Slider and direct-type input stay in lockstep;\n * the suggested figure is marked on the track and one click brings it back. */\nfunction ValueAdjuster({\n option,\n accent,\n border,\n muted,\n onConfirm,\n onBack,\n}: {\n option: Option;\n accent: string;\n border: string;\n muted: string;\n onConfirm: (value: number) => void;\n onBack: () => void;\n}) {\n const adjust = option.adjust!;\n const suggested = clampToRange(option.value ?? adjust.min, adjust);\n const [value, setValue] = React.useState<number>(suggested);\n // Free-typing needs a string buffer — clamp on blur/confirm, not per keystroke,\n // or \"4\" → clamps to min while typing \"40\".\n const [text, setText] = React.useState<string>(String(suggested));\n const step = adjust.step ?? (Number.isInteger(adjust.min) && Number.isInteger(adjust.max) ? 1 : (adjust.max - adjust.min) / 100);\n const pct = adjust.max > adjust.min ? ((value - adjust.min) / (adjust.max - adjust.min)) * 100 : 0;\n const suggestedPct = adjust.max > adjust.min ? ((suggested - adjust.min) / (adjust.max - adjust.min)) * 100 : 0;\n const moved = value !== suggested;\n\n const commit = (raw: number) => {\n const v = clampToRange(raw, adjust);\n setValue(v);\n setText(String(v));\n };\n\n return (\n <div\n className=\"dc-rise\"\n data-testid=\"decision-card-adjuster\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n border: `1px solid ${border}`,\n borderRadius: 10,\n padding: \"12px 14px\",\n background: \"#fafafa\",\n }}\n >\n {/* What's being tuned + escape hatch */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 8 }}>\n <span style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.06em\", color: muted }}>\n Adjust · {option.label}\n </span>\n <span style={{ flex: 1 }} />\n <button\n type=\"button\"\n onClick={onBack}\n data-testid=\"decision-card-adjust-back\"\n style={{ border: \"none\", background: \"none\", padding: 0, cursor: \"pointer\", fontSize: 12, fontWeight: 600, color: muted }}\n >\n Back\n </button>\n </div>\n\n {/* The figure — direct-type input, unit alongside */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 6 }}>\n <input\n value={text}\n onChange={(e) => {\n setText(e.target.value);\n const n = Number(e.target.value);\n if (Number.isFinite(n)) setValue(clampToRange(n, adjust));\n }}\n onBlur={() => commit(Number(text) || suggested)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n const v = clampToRange(Number(text) || suggested, adjust);\n commit(v);\n onConfirm(v);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n commit(value + step);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n commit(value - step);\n }\n }}\n inputMode=\"decimal\"\n aria-label={`${option.label} value`}\n data-testid=\"decision-card-adjust-input\"\n style={{\n width: `${Math.max(3, String(text).length + 1)}ch`,\n fontSize: 26,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.02em\",\n color: \"var(--foreground)\",\n border: \"none\",\n borderBottom: `2px solid ${accent}`,\n background: \"transparent\",\n outline: \"none\",\n padding: 0,\n }}\n />\n {adjust.unit && (\n <span style={{ fontSize: 13, fontWeight: 600, color: muted }}>{adjust.unit}</span>\n )}\n {moved && (\n <button\n type=\"button\"\n onClick={() => commit(suggested)}\n data-testid=\"decision-card-adjust-reset\"\n style={{\n marginLeft: 8,\n border: \"none\",\n background: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontSize: 11.5,\n fontWeight: 600,\n color: muted,\n textDecoration: \"underline\",\n textUnderlineOffset: 2,\n }}\n >\n Reset to suggested ({formatFigure(suggested, adjust.unit)})\n </button>\n )}\n </div>\n\n {/* Slider — accent fill up to the handle, ghost tick at the suggestion */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <div style={{ position: \"relative\", height: 16, display: \"flex\", alignItems: \"center\" }}>\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n height: 4,\n borderRadius: 9999,\n background: `linear-gradient(to right, ${accent} ${pct}%, #e8e8e8 ${pct}%)`,\n }}\n />\n {moved && (\n <div\n aria-hidden=\"true\"\n title={`Suggested: ${formatFigure(suggested, adjust.unit)}`}\n style={{\n position: \"absolute\",\n left: `${suggestedPct}%`,\n transform: \"translateX(-50%)\",\n width: 2,\n height: 10,\n borderRadius: 1,\n background: muted,\n opacity: 0.55,\n }}\n />\n )}\n <input\n type=\"range\"\n className=\"dc-range\"\n min={adjust.min}\n max={adjust.max}\n step={step}\n value={value}\n onChange={(e) => commit(Number(e.target.value))}\n aria-label={`${option.label} slider`}\n data-testid=\"decision-card-adjust-slider\"\n style={{ position: \"relative\", [\"--dc-thumb\" as string]: accent }}\n />\n </div>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", fontSize: 10.5, fontWeight: 600, color: muted, fontVariantNumeric: \"tabular-nums\" }}>\n <span>{formatFigure(adjust.min, adjust.unit)}</span>\n <span>{formatFigure(adjust.max, adjust.unit)}</span>\n </div>\n </div>\n\n {/* Confirm carries the live figure so the consequence is unambiguous */}\n <button\n type=\"button\"\n onClick={() => onConfirm(value)}\n data-testid=\"decision-card-adjust-confirm\"\n style={{\n alignSelf: \"flex-start\",\n border: `1px solid ${accent}`,\n background: accent,\n color: \"white\",\n borderRadius: 8,\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 16px\",\n cursor: \"pointer\",\n fontVariantNumeric: \"tabular-nums\",\n transition: \"opacity 0.15s\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.opacity = \"0.88\")}\n onMouseLeave={(e) => (e.currentTarget.style.opacity = \"1\")}\n >\n {option.label} · {formatFigure(value, adjust.unit)}\n </button>\n </div>\n );\n}\n\nexport interface DecisionCardRendererProps {\n data: DecisionCardPayload;\n /** Chosen option label when resolved (host- or self-controlled). */\n resolved?: string | null;\n /** `value` is set when the user confirmed an adjustable option's figure. */\n onResolve?: (option: string, value?: number) => void;\n onOpenSource?: () => void;\n}\n\nexport function DecisionCardRenderer({\n data,\n resolved = null,\n onResolve,\n onOpenSource,\n}: DecisionCardRendererProps) {\n const { BORDER, MUTED, ACCENT, ACCENT_SOFT } = useTheme();\n const rootRef = React.useRef<HTMLDivElement>(null);\n const width = useContainerWidth(rootRef);\n const stacked = width > 0 && width < STACK_BELOW;\n // Index of the adjustable option currently being fine-tuned (null = closed).\n const [adjustingIdx, setAdjustingIdx] = React.useState<number | null>(null);\n\n const options = data.options ?? [];\n const recommendedIdx = Math.max(\n 0,\n options.findIndex((o) => o.recommended)\n );\n const railColor = data.severity ? SEVERITY_COLORS[data.severity].color : ACCENT;\n const isResolved = Boolean(resolved);\n\n const amountNode =\n typeof data.amount === \"number\" ? (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: stacked ? \"flex-start\" : \"flex-end\",\n gap: 1,\n flexShrink: 0,\n }}\n >\n {data.amount_label && (\n <span\n style={{\n fontSize: 10,\n textTransform: \"uppercase\",\n letterSpacing: \"0.07em\",\n fontWeight: 700,\n color: MUTED,\n }}\n >\n {data.amount_label}\n </span>\n )}\n <span\n style={{\n fontSize: 18,\n fontWeight: 700,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.01em\",\n lineHeight: 1.1,\n }}\n >\n {formatAmount(data.amount, data.currency)}\n </span>\n </div>\n ) : null;\n\n return (\n <div\n ref={rootRef}\n className=\"dc-rise\"\n data-testid=\"decision-card\"\n data-resolved={isResolved || undefined}\n style={{\n position: \"relative\",\n width: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${isResolved ? GREEN_SOFT : BORDER}`,\n background: isResolved ? \"#f6fef9\" : \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n padding: \"16px 18px 16px 20px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n overflow: \"hidden\",\n }}\n >\n <style>{KEYFRAMES}</style>\n\n {/* Accent rail */}\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: 4,\n background: isResolved ? GREEN : railColor,\n }}\n />\n\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n flexDirection: stacked ? \"column\" : \"row\",\n alignItems: stacked ? \"flex-start\" : \"flex-start\",\n justifyContent: \"space-between\",\n gap: stacked ? 6 : 12,\n }}\n >\n <div style={{ minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <span\n style={{\n fontSize: 10.5,\n textTransform: \"uppercase\",\n letterSpacing: \"0.07em\",\n fontWeight: 700,\n color: ACCENT,\n }}\n >\n {data.decision_type ? `Decision needs you · ${data.decision_type}` : \"Decision needs you\"}\n </span>\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: 17,\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n lineHeight: 1.2,\n }}\n >\n {data.title}\n </p>\n </div>\n {amountNode}\n </div>\n\n {/* Question */}\n <p style={{ fontSize: 13, lineHeight: 1.5, color: MUTED, margin: 0 }}>{data.question}</p>\n\n {/* Flags */}\n {data.flags && data.flags.length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6 }}>\n {data.flags.map((flag, i) => (\n <FlagPill key={`${flag.field ?? \"flag\"}-${i}`} flag={flag} />\n ))}\n </div>\n )}\n\n {/* Resolution */}\n {isResolved ? (\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 7,\n fontSize: 13,\n fontWeight: 600,\n color: GREEN,\n }}\n >\n <SparkCheck size={16} color={GREEN} />\n Resolved · {resolved}\n </div>\n ) : (\n <>\n {adjustingIdx != null && options[adjustingIdx]?.adjust ? (\n <ValueAdjuster\n option={options[adjustingIdx]}\n accent={ACCENT}\n border={BORDER}\n muted={MUTED}\n onBack={() => setAdjustingIdx(null)}\n onConfirm={(value) => {\n setAdjustingIdx(null);\n onResolve?.(options[adjustingIdx].label, value);\n }}\n />\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: stacked ? \"column\" : \"row\",\n flexWrap: stacked ? \"nowrap\" : \"wrap\",\n gap: 8,\n }}\n >\n {options.map((opt, idx) => {\n const primary = idx === recommendedIdx;\n const adjustable = Boolean(opt.adjust);\n return (\n <button\n key={opt.id ?? opt.label}\n type=\"button\"\n onClick={() =>\n adjustable ? setAdjustingIdx(idx) : onResolve?.(opt.label)\n }\n data-adjustable={adjustable || undefined}\n style={{\n width: stacked ? \"100%\" : \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: stacked ? \"flex-start\" : \"center\",\n gap: 7,\n textAlign: stacked ? \"left\" : \"center\",\n border: `1px solid ${primary ? ACCENT : BORDER}`,\n background: primary ? ACCENT : \"white\",\n color: primary ? \"white\" : \"var(--foreground)\",\n borderRadius: 8,\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 14px\",\n cursor: \"pointer\",\n transition: \"background 0.15s, border-color 0.15s, color 0.15s\",\n }}\n onMouseEnter={(e) => {\n if (primary) {\n e.currentTarget.style.background = ACCENT_SOFT;\n } else {\n e.currentTarget.style.borderColor = ACCENT;\n e.currentTarget.style.background = \"#fafafa\";\n }\n }}\n onMouseLeave={(e) => {\n if (primary) {\n e.currentTarget.style.background = ACCENT;\n } else {\n e.currentTarget.style.borderColor = BORDER;\n e.currentTarget.style.background = \"white\";\n }\n }}\n >\n {opt.label}\n {adjustable && typeof opt.value === \"number\" && (\n <span\n style={{\n fontSize: 11.5,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n padding: \"1px 7px\",\n borderRadius: 9999,\n background: primary ? \"rgba(255,255,255,0.22)\" : \"#f2f2f2\",\n color: primary ? \"white\" : MUTED,\n lineHeight: 1.5,\n }}\n >\n {formatFigure(opt.value, opt.adjust?.unit)}\n {/* pencil hint: this figure is tunable */}\n <span aria-hidden=\"true\" style={{ marginLeft: 4, opacity: 0.8 }}>✎</span>\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {data.source && (\n <button\n type=\"button\"\n onClick={onOpenSource}\n style={{\n alignSelf: \"flex-start\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n border: \"none\",\n background: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n color: MUTED,\n transition: \"color 0.15s\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.color = ACCENT)}\n onMouseLeave={(e) => (e.currentTarget.style.color = MUTED)}\n >\n <svg width={13} height={13} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 3v4a1 1 0 001 1h4M5 4a1 1 0 011-1h8l5 5v11a1 1 0 01-1 1H6a1 1 0 01-1-1V4z\"\n stroke=\"currentColor\"\n strokeWidth={1.8}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n {data.source.label ?? \"View source for this figure\"}\n </button>\n )}\n </>\n )}\n </div>\n );\n}\n\n/** One human-readable resolution string — what the resolved line shows AND\n * what the host sends as the user's reply (e.g. \"Book reserve · 40 units\"). */\nfunction composeResolution(p: DecisionCardPayload, option: string, value?: number): string {\n if (value == null) return option;\n const unit = (p.options ?? []).find((o) => o.label === option)?.adjust?.unit;\n return `${option} · ${formatFigure(value, unit)}`;\n}\n\nexport function DecisionCardResolver(p: DecisionCardPayload) {\n const { resolvedDecisions, onDecisionResolve, onDecisionSource } = useGenUIInteraction();\n const decisionId = p.id ?? p.title;\n\n const hostResolved = resolvedDecisions?.[decisionId];\n const initial =\n hostResolved ??\n (p.resolved ? composeResolution(p, p.resolved.option, p.resolved.value) : null);\n const [localResolved, setLocalResolved] = React.useState<string | null>(initial);\n\n React.useEffect(() => {\n if (hostResolved !== undefined) setLocalResolved(hostResolved);\n }, [hostResolved]);\n\n const resolved = hostResolved ?? localResolved;\n\n const handleResolve = (option: string, value?: number) => {\n const resolution = composeResolution(p, option, value);\n setLocalResolved(resolution);\n onDecisionResolve?.(decisionId, resolution);\n };\n\n const handleSource = () => {\n onDecisionSource?.(decisionId, p.source);\n if (!onDecisionSource && p.source?.url && typeof window !== \"undefined\") {\n window.open(p.source.url, \"_blank\", \"noopener,noreferrer\");\n }\n };\n\n return (\n <ComponentActions filename={p.title ?? \"decision-card\"}>\n <DecisionCardRenderer\n data={p}\n resolved={resolved}\n onResolve={handleResolve}\n onOpenSource={handleSource}\n />\n </ComponentActions>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/shared/theme.ts","../../../src/shared/ColumnSettingsPanel.tsx","../../../src/shared/ComponentActions.tsx","../../../src/shared/ThemeContext.tsx","../../../src/shared/InteractionContext.tsx","../../../src/composites/decision-card/resolver.tsx"],"names":["jsxs","jsx","useState","useRef","useCallback","useEffect","toPng","createContext","useContext","React","BORDER","MUTED","ACCENT","ACCENT_SOFT","_a","Fragment","_b"],"mappings":"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","file":"resolver.cjs","sourcesContent":["export const BORDER = \"#dedede\";\nexport const MUTED = \"#777777\";\nexport const PAPER = \"#f6f6f6\";\nexport const ACCENT = \"#ff5000\";\nexport const ACCENT_SOFT = \"#cc4000\";\nexport const SECONDARY = \"#0364ff\";\n\nexport const ACCOUNT_TYPE_COLORS = {\n asset: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n liability: { bg: \"#fff7ed\", color: \"#92400e\" },\n equity: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n revenue: { bg: \"#dcfce7\", color: \"#15803d\" },\n expense: { bg: \"#fef2f2\", color: \"#dc2626\" },\n} as const;\n\nexport const STATUS_COLORS = {\n draft: { bg: \"#fff7ed\", color: \"#92400e\" },\n \"pending-review\": { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n approved: { bg: \"#dcfce7\", color: \"#15803d\" },\n filed: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n} as const;\n\nexport const CHART_PALETTE = [\n \"#ff5000\",\n \"#0364ff\",\n \"#16a34a\",\n \"#dc2626\",\n \"#7c3aed\",\n \"#0891b2\",\n \"#f59e0b\",\n \"#6366f1\",\n \"#ec4899\",\n \"#84cc16\",\n \"#e11d48\",\n \"#0ea5e9\",\n];\n","\"use client\";\n\nimport React from \"react\";\nimport { BORDER, MUTED, ACCENT } from \"./theme\";\n\ninterface ColumnSettingsPanelProps {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\nexport function ColumnSettingsPanel({ columns, hidden, onToggle, onShowAll, onHideAll }: ColumnSettingsPanelProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", minWidth: \"180px\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", paddingBottom: \"4px\", borderBottom: `1px solid ${BORDER}` }}>\n <button\n onClick={onShowAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: ACCENT, fontWeight: 500, padding: 0 }}\n >\n Show all\n </button>\n <button\n onClick={onHideAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, fontWeight: 500, padding: 0 }}\n >\n Hide all\n </button>\n </div>\n {columns.map((col) => (\n <label\n key={col.key}\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--foreground)\" }}\n >\n <input\n type=\"checkbox\"\n checked={!hidden.has(col.key)}\n onChange={() => onToggle(col.key)}\n style={{ accentColor: ACCENT, width: \"14px\", height: \"14px\", margin: 0, cursor: \"pointer\" }}\n />\n {col.label}\n </label>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { toPng } from \"html-to-image\";\nimport { ColumnSettingsPanel } from \"./ColumnSettingsPanel\";\nimport { BORDER, MUTED } from \"./theme\";\n\nconst DOT_COLOR = \"#aaaaaa\";\nconst DOT_HOVER = \"#555555\";\n\ninterface ColumnConfig {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\ninterface ComponentActionsProps {\n children: React.ReactNode;\n onDownloadCSV?: () => void;\n columnConfig?: ColumnConfig;\n filename?: string;\n}\n\ntype MenuView = \"main\" | \"columns\";\n\nexport function ComponentActions({ children, onDownloadCSV, columnConfig, filename = \"component\" }: ComponentActionsProps) {\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<MenuView>(\"main\");\n const contentRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const btnRef = useRef<HTMLButtonElement>(null);\n\n const close = useCallback(() => {\n setOpen(false);\n setView(\"main\");\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current?.contains(e.target as Node)) return;\n if (btnRef.current?.contains(e.target as Node)) return;\n close();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, close]);\n\n const handleDownloadPNG = useCallback(async () => {\n if (!contentRef.current) return;\n try {\n const url = await toPng(contentRef.current, { backgroundColor: \"white\", pixelRatio: 2 });\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${filename}.png`;\n a.click();\n } catch {\n // silent fail\n }\n close();\n }, [filename, close]);\n\n const handleCSV = useCallback(() => {\n onDownloadCSV?.();\n close();\n }, [onDownloadCSV, close]);\n\n return (\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\" }}>\n <div ref={contentRef} style={{ width: \"100%\" }}>\n {children}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", marginTop: \"4px\", position: \"relative\", zIndex: 10, flexShrink: 0 }}>\n <button\n ref={btnRef}\n onClick={() => { setOpen((o) => !o); setView(\"main\"); }}\n aria-label=\"Component actions\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px 8px\",\n display: \"flex\",\n gap: \"3px\",\n alignItems: \"center\",\n borderRadius: \"6px\",\n transition: \"background 0.15s\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#f2f2f2\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_HOVER));\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"none\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_COLOR));\n }}\n >\n <svg width=\"20\" height=\"6\" viewBox=\"0 0 20 6\">\n <circle cx=\"3\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"10\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"17\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n </svg>\n </button>\n\n {open && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"4px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"0.75rem\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.06)\",\n zIndex: 50,\n padding: view === \"columns\" ? \"10px\" : \"4px\",\n minWidth: view === \"columns\" ? \"200px\" : \"160px\",\n }}\n >\n {view === \"main\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {columnConfig && (\n <MenuButton label=\"Customize columns\" onClick={() => setView(\"columns\")} />\n )}\n {onDownloadCSV && (\n <MenuButton label=\"Download CSV\" onClick={handleCSV} />\n )}\n <MenuButton label=\"Download PNG\" onClick={handleDownloadPNG} />\n </div>\n ) : (\n <div>\n <button\n onClick={() => setView(\"main\")}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, marginBottom: \"6px\", padding: 0 }}\n >\n ← Back\n </button>\n <ColumnSettingsPanel\n columns={columnConfig!.columns}\n hidden={columnConfig!.hidden}\n onToggle={columnConfig!.onToggle}\n onShowAll={columnConfig!.onShowAll}\n onHideAll={columnConfig!.onHideAll}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction MenuButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"8px 12px\",\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n textAlign: \"left\",\n borderRadius: \"8px\",\n transition: \"background 0.15s\",\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.background = \"#f2f2f2\")}\n onMouseLeave={(e) => (e.currentTarget.style.background = \"none\")}\n >\n {label}\n </button>\n );\n}\n","\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE,\n} from \"./theme\";\n\nexport interface ThemeTokens {\n BORDER: string;\n MUTED: string;\n PAPER: string;\n ACCENT: string;\n ACCENT_SOFT: string;\n SECONDARY: string;\n CHART_PALETTE: string[];\n}\n\nexport const DEFAULT_TOKENS: ThemeTokens = {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE: [...CHART_PALETTE],\n};\n\nconst GenUIThemeContext = createContext<ThemeTokens>(DEFAULT_TOKENS);\n\nexport interface GenUIThemeProviderProps {\n colors?: Partial<ThemeTokens>;\n children: React.ReactNode;\n}\n\nexport function GenUIThemeProvider({ colors, children }: GenUIThemeProviderProps) {\n const merged = useMemo(\n () => (colors ? { ...DEFAULT_TOKENS, ...colors } : DEFAULT_TOKENS),\n [colors]\n );\n return (\n <GenUIThemeContext.Provider value={merged}>\n {children}\n </GenUIThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeTokens {\n return useContext(GenUIThemeContext);\n}\n","\"use client\";\n\nimport React, { createContext, useContext } from \"react\";\n\n/**\n * Host-provided interaction channel for composites that support selection\n * (e.g. workflow-stepper step clicks driving a transcript filter).\n *\n * Mirrors ThemeContext: safe no-op defaults so composites render inert when\n * the host does not mount the provider (storybook, plain chat embeds).\n */\nexport interface GenUIInteraction {\n selectedStepId: string | null;\n onStepSelect?: (stepId: string | null) => void;\n /** Decision-card resolutions, keyed by decision id, so a resolved card\n * re-renders locked from host state (transcript replay). */\n resolvedDecisions?: Record<string, string>;\n /** Host callback when a decision-card option is chosen. */\n onDecisionResolve?: (decisionId: string, option: string) => void;\n /** Host callback when a decision-card \"view source\" link is activated. */\n onDecisionSource?: (decisionId: string, source?: { url?: string; label?: string }) => void;\n /** Host callback when a decision-queue is submitted: the structured batch\n * plus the ready-to-send numbered `message` (one reply for all N judgments).\n * The host should also mark `resolvedDecisions[queueId]` so the queue stays\n * locked across re-renders within the session. */\n onDecisionQueueSubmit?: (\n queueId: string,\n decisions: Array<{ id?: string; title: string; option: string; value?: number }>,\n message: string\n ) => void;\n}\n\nexport const DEFAULT_INTERACTION: GenUIInteraction = {\n selectedStepId: null,\n onStepSelect: undefined,\n resolvedDecisions: undefined,\n onDecisionResolve: undefined,\n onDecisionSource: undefined,\n onDecisionQueueSubmit: undefined,\n};\n\nconst GenUIInteractionContext = createContext<GenUIInteraction>(DEFAULT_INTERACTION);\n\nexport interface GenUIInteractionProviderProps {\n value: GenUIInteraction;\n children: React.ReactNode;\n}\n\nexport function GenUIInteractionProvider({ value, children }: GenUIInteractionProviderProps) {\n return (\n <GenUIInteractionContext.Provider value={value}>\n {children}\n </GenUIInteractionContext.Provider>\n );\n}\n\nexport function useGenUIInteraction(): GenUIInteraction {\n return useContext(GenUIInteractionContext);\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { useGenUIInteraction } from \"../../shared/InteractionContext\";\n\ntype DecisionCardPayload = SchemaPayload<\"decision-card\">;\ntype Flag = NonNullable<DecisionCardPayload[\"flags\"]>[number];\ntype Option = DecisionCardPayload[\"options\"][number];\ntype Severity = \"low\" | \"medium\" | \"high\";\n\nconst SEVERITY_COLORS: Record<Severity, { color: string; bg: string }> = {\n high: { color: \"#dc2626\", bg: \"#fef2f2\" },\n medium: { color: \"#f59e0b\", bg: \"#fff7ed\" },\n low: { color: \"#777777\", bg: \"#f2f2f2\" },\n};\n\nconst GREEN = \"#15803d\";\nconst GREEN_SOFT = \"#dcfce7\";\n\n// Below this measured width the option buttons stack full-width and the amount\n// drops under the title — the \"adaptive\" behaviour the host asked for.\nconst STACK_BELOW = 380;\n\nfunction formatAmount(amount: number, currency = \"USD\"): string {\n const abs = Math.abs(amount);\n const sign = amount < 0 ? \"-\" : \"\";\n let body: string;\n if (abs >= 1_000_000) body = `${(abs / 1_000_000).toFixed(abs >= 10_000_000 ? 0 : 1)}M`;\n else if (abs >= 1_000) body = `${(abs / 1_000).toFixed(abs >= 10_000 ? 0 : 1)}K`;\n else body = `${abs}`;\n let symbol = \"$\";\n try {\n const parts = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n maximumFractionDigits: 0,\n }).formatToParts(0);\n symbol = parts.find((p) => p.type === \"currency\")?.value ?? \"$\";\n } catch {\n symbol = \"$\";\n }\n return `${sign}${symbol}${body}`;\n}\n\n/** Container-width tracker for the adaptive layout. Pure ResizeObserver. */\nfunction useContainerWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\n const [w, setW] = React.useState(0);\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver((entries) => {\n const cr = entries[0]?.contentRect;\n if (cr) setW(cr.width);\n });\n ro.observe(el);\n setW(el.getBoundingClientRect().width);\n return () => ro.disconnect();\n }, [ref]);\n return w;\n}\n\nconst KEYFRAMES = `\n@keyframes dcRise{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}\n.dc-rise{animation:dcRise 0.28s cubic-bezier(0.22,1,0.36,1) both}\n.dc-range{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:9999px;outline:none;cursor:pointer;background:transparent}\n.dc-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:white;border:2px solid var(--dc-thumb,#ff5000);box-shadow:0 1px 3px rgba(0,0,0,0.18);cursor:grab;transition:transform 0.12s}\n.dc-range::-webkit-slider-thumb:hover{transform:scale(1.12)}\n.dc-range:active::-webkit-slider-thumb{cursor:grabbing}\n.dc-range::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:white;border:2px solid var(--dc-thumb,#ff5000);box-shadow:0 1px 3px rgba(0,0,0,0.18);cursor:grab}\n.dc-range::-moz-range-track{height:4px;border-radius:9999px;background:transparent}\n@media (prefers-reduced-motion: reduce){\n .dc-rise{animation:none !important;opacity:1 !important;transform:none !important}\n .dc-range::-webkit-slider-thumb{transition:none}\n}`;\n\nfunction SparkCheck({ size, color }: { size: number; color: string }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M5 13l4 4L19 7\"\n stroke={color}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction FlagPill({ flag }: { flag: Flag }) {\n const sev = (flag.severity ?? \"medium\") as Severity;\n const { color, bg } = SEVERITY_COLORS[sev];\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n fontSize: 11,\n fontWeight: 600,\n padding: \"3px 9px\",\n borderRadius: 9999,\n background: bg,\n color,\n lineHeight: 1.2,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{ width: 6, height: 6, borderRadius: \"50%\", background: color, flexShrink: 0 }}\n />\n {flag.field ? `${flag.field}: ${flag.issue}` : flag.issue}\n </span>\n );\n}\n\n/** Format an adjustable figure with its unit (\"40 units\", \"12.5%\"). */\nexport function formatFigure(value: number, unit?: string): string {\n const body = Number.isInteger(value) ? `${value}` : `${Math.round(value * 100) / 100}`;\n if (!unit) return body;\n return unit === \"%\" ? `${body}%` : `${body} ${unit}`;\n}\n\n/** Snap to step within [min, max]. Step defaults to 1 for integer ranges,\n * else 1/100 of the range. */\nfunction clampToRange(raw: number, adjust: NonNullable<Option[\"adjust\"]>): number {\n const step = adjust.step ?? (Number.isInteger(adjust.min) && Number.isInteger(adjust.max) ? 1 : (adjust.max - adjust.min) / 100);\n const snapped = Math.round((raw - adjust.min) / step) * step + adjust.min;\n const fixed = Math.round(snapped * 1e6) / 1e6; // kill float dust\n return Math.min(adjust.max, Math.max(adjust.min, fixed));\n}\n\n/** Inline value adjuster — opens when the user picks an option that carries a\n * suggested figure + range. Slider and direct-type input stay in lockstep;\n * the suggested figure is marked on the track and one click brings it back. */\nfunction ValueAdjuster({\n option,\n accent,\n border,\n muted,\n onConfirm,\n onBack,\n}: {\n option: Option;\n accent: string;\n border: string;\n muted: string;\n onConfirm: (value: number) => void;\n onBack: () => void;\n}) {\n const adjust = option.adjust!;\n const suggested = clampToRange(option.value ?? adjust.min, adjust);\n const [value, setValue] = React.useState<number>(suggested);\n // Free-typing needs a string buffer — clamp on blur/confirm, not per keystroke,\n // or \"4\" → clamps to min while typing \"40\".\n const [text, setText] = React.useState<string>(String(suggested));\n const step = adjust.step ?? (Number.isInteger(adjust.min) && Number.isInteger(adjust.max) ? 1 : (adjust.max - adjust.min) / 100);\n const pct = adjust.max > adjust.min ? ((value - adjust.min) / (adjust.max - adjust.min)) * 100 : 0;\n const suggestedPct = adjust.max > adjust.min ? ((suggested - adjust.min) / (adjust.max - adjust.min)) * 100 : 0;\n const moved = value !== suggested;\n\n const commit = (raw: number) => {\n const v = clampToRange(raw, adjust);\n setValue(v);\n setText(String(v));\n };\n\n return (\n <div\n className=\"dc-rise\"\n data-testid=\"decision-card-adjuster\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n border: `1px solid ${border}`,\n borderRadius: 10,\n padding: \"12px 14px\",\n background: \"#fafafa\",\n }}\n >\n {/* What's being tuned + escape hatch */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 8 }}>\n <span style={{ fontSize: 11, fontWeight: 700, textTransform: \"uppercase\", letterSpacing: \"0.06em\", color: muted }}>\n Adjust · {option.label}\n </span>\n <span style={{ flex: 1 }} />\n <button\n type=\"button\"\n onClick={onBack}\n data-testid=\"decision-card-adjust-back\"\n style={{ border: \"none\", background: \"none\", padding: 0, cursor: \"pointer\", fontSize: 12, fontWeight: 600, color: muted }}\n >\n Back\n </button>\n </div>\n\n {/* The figure — direct-type input, unit alongside */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 6 }}>\n <input\n value={text}\n onChange={(e) => {\n setText(e.target.value);\n const n = Number(e.target.value);\n if (Number.isFinite(n)) setValue(clampToRange(n, adjust));\n }}\n onBlur={() => commit(Number(text) || suggested)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n const v = clampToRange(Number(text) || suggested, adjust);\n commit(v);\n onConfirm(v);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n commit(value + step);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n commit(value - step);\n }\n }}\n inputMode=\"decimal\"\n aria-label={`${option.label} value`}\n data-testid=\"decision-card-adjust-input\"\n style={{\n width: `${Math.max(3, String(text).length + 1)}ch`,\n fontSize: 26,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.02em\",\n color: \"var(--foreground)\",\n border: \"none\",\n borderBottom: `2px solid ${accent}`,\n background: \"transparent\",\n outline: \"none\",\n padding: 0,\n }}\n />\n {adjust.unit && (\n <span style={{ fontSize: 13, fontWeight: 600, color: muted }}>{adjust.unit}</span>\n )}\n {moved && (\n <button\n type=\"button\"\n onClick={() => commit(suggested)}\n data-testid=\"decision-card-adjust-reset\"\n style={{\n marginLeft: 8,\n border: \"none\",\n background: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontSize: 11.5,\n fontWeight: 600,\n color: muted,\n textDecoration: \"underline\",\n textUnderlineOffset: 2,\n }}\n >\n Reset to suggested ({formatFigure(suggested, adjust.unit)})\n </button>\n )}\n </div>\n\n {/* Slider — accent fill up to the handle, ghost tick at the suggestion */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <div style={{ position: \"relative\", height: 16, display: \"flex\", alignItems: \"center\" }}>\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n height: 4,\n borderRadius: 9999,\n background: `linear-gradient(to right, ${accent} ${pct}%, #e8e8e8 ${pct}%)`,\n }}\n />\n {moved && (\n <div\n aria-hidden=\"true\"\n title={`Suggested: ${formatFigure(suggested, adjust.unit)}`}\n style={{\n position: \"absolute\",\n left: `${suggestedPct}%`,\n transform: \"translateX(-50%)\",\n width: 2,\n height: 10,\n borderRadius: 1,\n background: muted,\n opacity: 0.55,\n }}\n />\n )}\n <input\n type=\"range\"\n className=\"dc-range\"\n min={adjust.min}\n max={adjust.max}\n step={step}\n value={value}\n onChange={(e) => commit(Number(e.target.value))}\n aria-label={`${option.label} slider`}\n data-testid=\"decision-card-adjust-slider\"\n style={{ position: \"relative\", [\"--dc-thumb\" as string]: accent }}\n />\n </div>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", fontSize: 10.5, fontWeight: 600, color: muted, fontVariantNumeric: \"tabular-nums\" }}>\n <span>{formatFigure(adjust.min, adjust.unit)}</span>\n <span>{formatFigure(adjust.max, adjust.unit)}</span>\n </div>\n </div>\n\n {/* Confirm carries the live figure so the consequence is unambiguous */}\n <button\n type=\"button\"\n onClick={() => onConfirm(value)}\n data-testid=\"decision-card-adjust-confirm\"\n style={{\n alignSelf: \"flex-start\",\n border: `1px solid ${accent}`,\n background: accent,\n color: \"white\",\n borderRadius: 8,\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 16px\",\n cursor: \"pointer\",\n fontVariantNumeric: \"tabular-nums\",\n transition: \"opacity 0.15s\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.opacity = \"0.88\")}\n onMouseLeave={(e) => (e.currentTarget.style.opacity = \"1\")}\n >\n {option.label} · {formatFigure(value, adjust.unit)}\n </button>\n </div>\n );\n}\n\nexport interface DecisionCardRendererProps {\n data: DecisionCardPayload;\n /** Chosen option label when resolved (host- or self-controlled). */\n resolved?: string | null;\n /** `value` is set when the user confirmed an adjustable option's figure. */\n onResolve?: (option: string, value?: number) => void;\n onOpenSource?: () => void;\n /** Eyebrow override for embedded contexts (e.g. inside a decision-queue,\n * which owns the \"Decisions need you\" line): a string replaces the default\n * eyebrow, `null` hides it, `undefined` keeps the standalone default. */\n eyebrow?: string | null;\n}\n\nexport function DecisionCardRenderer({\n data,\n resolved = null,\n onResolve,\n onOpenSource,\n eyebrow,\n}: DecisionCardRendererProps) {\n const { BORDER, MUTED, ACCENT, ACCENT_SOFT } = useTheme();\n const rootRef = React.useRef<HTMLDivElement>(null);\n const width = useContainerWidth(rootRef);\n const stacked = width > 0 && width < STACK_BELOW;\n // Index of the adjustable option currently being fine-tuned (null = closed).\n const [adjustingIdx, setAdjustingIdx] = React.useState<number | null>(null);\n\n const options = data.options ?? [];\n const recommendedIdx = Math.max(\n 0,\n options.findIndex((o) => o.recommended)\n );\n const railColor = data.severity ? SEVERITY_COLORS[data.severity].color : ACCENT;\n const isResolved = Boolean(resolved);\n\n const amountNode =\n typeof data.amount === \"number\" ? (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: stacked ? \"flex-start\" : \"flex-end\",\n gap: 1,\n flexShrink: 0,\n }}\n >\n {data.amount_label && (\n <span\n style={{\n fontSize: 10,\n textTransform: \"uppercase\",\n letterSpacing: \"0.07em\",\n fontWeight: 700,\n color: MUTED,\n }}\n >\n {data.amount_label}\n </span>\n )}\n <span\n style={{\n fontSize: 18,\n fontWeight: 700,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.01em\",\n lineHeight: 1.1,\n }}\n >\n {formatAmount(data.amount, data.currency)}\n </span>\n </div>\n ) : null;\n\n return (\n <div\n ref={rootRef}\n className=\"dc-rise\"\n data-testid=\"decision-card\"\n data-resolved={isResolved || undefined}\n style={{\n position: \"relative\",\n width: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${isResolved ? GREEN_SOFT : BORDER}`,\n background: isResolved ? \"#f6fef9\" : \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n padding: \"16px 18px 16px 20px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n overflow: \"hidden\",\n }}\n >\n <style>{KEYFRAMES}</style>\n\n {/* Accent rail */}\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: 4,\n background: isResolved ? GREEN : railColor,\n }}\n />\n\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n flexDirection: stacked ? \"column\" : \"row\",\n alignItems: stacked ? \"flex-start\" : \"flex-start\",\n justifyContent: \"space-between\",\n gap: stacked ? 6 : 12,\n }}\n >\n <div style={{ minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {eyebrow === null ? null : (\n <span\n style={{\n fontSize: 10.5,\n textTransform: \"uppercase\",\n letterSpacing: \"0.07em\",\n fontWeight: 700,\n color: ACCENT,\n }}\n >\n {eyebrow !== undefined\n ? eyebrow\n : data.decision_type\n ? `Decision needs you · ${data.decision_type}`\n : \"Decision needs you\"}\n </span>\n )}\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: 17,\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n lineHeight: 1.2,\n }}\n >\n {data.title}\n </p>\n </div>\n {amountNode}\n </div>\n\n {/* Question */}\n <p style={{ fontSize: 13, lineHeight: 1.5, color: MUTED, margin: 0 }}>{data.question}</p>\n\n {/* Flags */}\n {data.flags && data.flags.length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6 }}>\n {data.flags.map((flag, i) => (\n <FlagPill key={`${flag.field ?? \"flag\"}-${i}`} flag={flag} />\n ))}\n </div>\n )}\n\n {/* Resolution */}\n {isResolved ? (\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 7,\n fontSize: 13,\n fontWeight: 600,\n color: GREEN,\n }}\n >\n <SparkCheck size={16} color={GREEN} />\n Resolved · {resolved}\n </div>\n ) : (\n <>\n {adjustingIdx != null && options[adjustingIdx]?.adjust ? (\n <ValueAdjuster\n option={options[adjustingIdx]}\n accent={ACCENT}\n border={BORDER}\n muted={MUTED}\n onBack={() => setAdjustingIdx(null)}\n onConfirm={(value) => {\n setAdjustingIdx(null);\n onResolve?.(options[adjustingIdx].label, value);\n }}\n />\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: stacked ? \"column\" : \"row\",\n flexWrap: stacked ? \"nowrap\" : \"wrap\",\n gap: 8,\n }}\n >\n {options.map((opt, idx) => {\n const primary = idx === recommendedIdx;\n const adjustable = Boolean(opt.adjust);\n return (\n <button\n key={opt.id ?? opt.label}\n type=\"button\"\n onClick={() =>\n adjustable ? setAdjustingIdx(idx) : onResolve?.(opt.label)\n }\n data-adjustable={adjustable || undefined}\n style={{\n width: stacked ? \"100%\" : \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: stacked ? \"flex-start\" : \"center\",\n gap: 7,\n textAlign: stacked ? \"left\" : \"center\",\n border: `1px solid ${primary ? ACCENT : BORDER}`,\n background: primary ? ACCENT : \"white\",\n color: primary ? \"white\" : \"var(--foreground)\",\n borderRadius: 8,\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 14px\",\n cursor: \"pointer\",\n transition: \"background 0.15s, border-color 0.15s, color 0.15s\",\n }}\n onMouseEnter={(e) => {\n if (primary) {\n e.currentTarget.style.background = ACCENT_SOFT;\n } else {\n e.currentTarget.style.borderColor = ACCENT;\n e.currentTarget.style.background = \"#fafafa\";\n }\n }}\n onMouseLeave={(e) => {\n if (primary) {\n e.currentTarget.style.background = ACCENT;\n } else {\n e.currentTarget.style.borderColor = BORDER;\n e.currentTarget.style.background = \"white\";\n }\n }}\n >\n {opt.label}\n {adjustable && typeof opt.value === \"number\" && (\n <span\n style={{\n fontSize: 11.5,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n padding: \"1px 7px\",\n borderRadius: 9999,\n background: primary ? \"rgba(255,255,255,0.22)\" : \"#f2f2f2\",\n color: primary ? \"white\" : MUTED,\n lineHeight: 1.5,\n }}\n >\n {formatFigure(opt.value, opt.adjust?.unit)}\n {/* pencil hint: this figure is tunable */}\n <span aria-hidden=\"true\" style={{ marginLeft: 4, opacity: 0.8 }}>✎</span>\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {data.source && (\n <button\n type=\"button\"\n onClick={onOpenSource}\n style={{\n alignSelf: \"flex-start\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n border: \"none\",\n background: \"none\",\n padding: 0,\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n color: MUTED,\n transition: \"color 0.15s\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.color = ACCENT)}\n onMouseLeave={(e) => (e.currentTarget.style.color = MUTED)}\n >\n <svg width={13} height={13} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 3v4a1 1 0 001 1h4M5 4a1 1 0 011-1h8l5 5v11a1 1 0 01-1 1H6a1 1 0 01-1-1V4z\"\n stroke=\"currentColor\"\n strokeWidth={1.8}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n {data.source.label ?? \"View source for this figure\"}\n </button>\n )}\n </>\n )}\n </div>\n );\n}\n\n/** One human-readable resolution string — what the resolved line shows AND\n * what the host sends as the user's reply (e.g. \"Book reserve · 40 units\"). */\nfunction composeResolution(p: DecisionCardPayload, option: string, value?: number): string {\n if (value == null) return option;\n const unit = (p.options ?? []).find((o) => o.label === option)?.adjust?.unit;\n return `${option} · ${formatFigure(value, unit)}`;\n}\n\nexport function DecisionCardResolver(p: DecisionCardPayload) {\n const { resolvedDecisions, onDecisionResolve, onDecisionSource } = useGenUIInteraction();\n const decisionId = p.id ?? p.title;\n\n const hostResolved = resolvedDecisions?.[decisionId];\n const initial =\n hostResolved ??\n (p.resolved ? composeResolution(p, p.resolved.option, p.resolved.value) : null);\n const [localResolved, setLocalResolved] = React.useState<string | null>(initial);\n\n React.useEffect(() => {\n if (hostResolved !== undefined) setLocalResolved(hostResolved);\n }, [hostResolved]);\n\n const resolved = hostResolved ?? localResolved;\n\n const handleResolve = (option: string, value?: number) => {\n const resolution = composeResolution(p, option, value);\n setLocalResolved(resolution);\n onDecisionResolve?.(decisionId, resolution);\n };\n\n const handleSource = () => {\n onDecisionSource?.(decisionId, p.source);\n if (!onDecisionSource && p.source?.url && typeof window !== \"undefined\") {\n window.open(p.source.url, \"_blank\", \"noopener,noreferrer\");\n }\n };\n\n return (\n <ComponentActions filename={p.title ?? \"decision-card\"}>\n <DecisionCardRenderer\n data={p}\n resolved={resolved}\n onResolve={handleResolve}\n onOpenSource={handleSource}\n />\n </ComponentActions>\n );\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SchemaPayload } from "../../schemas";
|
|
2
2
|
type DecisionCardPayload = SchemaPayload<"decision-card">;
|
|
3
|
+
/** Format an adjustable figure with its unit ("40 units", "12.5%"). */
|
|
4
|
+
export declare function formatFigure(value: number, unit?: string): string;
|
|
3
5
|
export interface DecisionCardRendererProps {
|
|
4
6
|
data: DecisionCardPayload;
|
|
5
7
|
/** Chosen option label when resolved (host- or self-controlled). */
|
|
@@ -7,8 +9,12 @@ export interface DecisionCardRendererProps {
|
|
|
7
9
|
/** `value` is set when the user confirmed an adjustable option's figure. */
|
|
8
10
|
onResolve?: (option: string, value?: number) => void;
|
|
9
11
|
onOpenSource?: () => void;
|
|
12
|
+
/** Eyebrow override for embedded contexts (e.g. inside a decision-queue,
|
|
13
|
+
* which owns the "Decisions need you" line): a string replaces the default
|
|
14
|
+
* eyebrow, `null` hides it, `undefined` keeps the standalone default. */
|
|
15
|
+
eyebrow?: string | null;
|
|
10
16
|
}
|
|
11
|
-
export declare function DecisionCardRenderer({ data, resolved, onResolve, onOpenSource, }: DecisionCardRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function DecisionCardRenderer({ data, resolved, onResolve, onOpenSource, eyebrow, }: DecisionCardRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
12
18
|
export declare function DecisionCardResolver(p: DecisionCardPayload): import("react/jsx-runtime").JSX.Element;
|
|
13
19
|
export {};
|
|
14
20
|
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/composites/decision-card/resolver.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,KAAK,mBAAmB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/composites/decision-card/resolver.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,KAAK,mBAAmB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AA+G1D,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjE;AA0ND,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;6EAEyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,QAAe,EACf,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE,yBAAyB,2CAsS3B;AAUD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,mBAAmB,2CAuC1D"}
|
|
@@ -229,7 +229,8 @@ var DEFAULT_INTERACTION = {
|
|
|
229
229
|
onStepSelect: void 0,
|
|
230
230
|
resolvedDecisions: void 0,
|
|
231
231
|
onDecisionResolve: void 0,
|
|
232
|
-
onDecisionSource: void 0
|
|
232
|
+
onDecisionSource: void 0,
|
|
233
|
+
onDecisionQueueSubmit: void 0
|
|
233
234
|
};
|
|
234
235
|
var GenUIInteractionContext = createContext(DEFAULT_INTERACTION);
|
|
235
236
|
function useGenUIInteraction() {
|
|
@@ -562,7 +563,8 @@ function DecisionCardRenderer({
|
|
|
562
563
|
data,
|
|
563
564
|
resolved = null,
|
|
564
565
|
onResolve,
|
|
565
|
-
onOpenSource
|
|
566
|
+
onOpenSource,
|
|
567
|
+
eyebrow
|
|
566
568
|
}) {
|
|
567
569
|
var _a, _b, _c;
|
|
568
570
|
const { BORDER: BORDER2, MUTED: MUTED2, ACCENT: ACCENT2, ACCENT_SOFT: ACCENT_SOFT2 } = useTheme();
|
|
@@ -668,7 +670,7 @@ function DecisionCardRenderer({
|
|
|
668
670
|
},
|
|
669
671
|
children: [
|
|
670
672
|
/* @__PURE__ */ jsxs("div", { style: { minWidth: 0, display: "flex", flexDirection: "column", gap: 4 }, children: [
|
|
671
|
-
/* @__PURE__ */ jsx(
|
|
673
|
+
eyebrow === null ? null : /* @__PURE__ */ jsx(
|
|
672
674
|
"span",
|
|
673
675
|
{
|
|
674
676
|
style: {
|
|
@@ -678,7 +680,7 @@ function DecisionCardRenderer({
|
|
|
678
680
|
fontWeight: 700,
|
|
679
681
|
color: ACCENT2
|
|
680
682
|
},
|
|
681
|
-
children: data.decision_type ? `Decision needs you \xB7 ${data.decision_type}` : "Decision needs you"
|
|
683
|
+
children: eyebrow !== void 0 ? eyebrow : data.decision_type ? `Decision needs you \xB7 ${data.decision_type}` : "Decision needs you"
|
|
682
684
|
}
|
|
683
685
|
),
|
|
684
686
|
/* @__PURE__ */ jsx(
|
|
@@ -898,6 +900,6 @@ function DecisionCardResolver(p) {
|
|
|
898
900
|
) });
|
|
899
901
|
}
|
|
900
902
|
|
|
901
|
-
export { DecisionCardRenderer, DecisionCardResolver };
|
|
903
|
+
export { DecisionCardRenderer, DecisionCardResolver, formatFigure };
|
|
902
904
|
//# sourceMappingURL=resolver.js.map
|
|
903
905
|
//# sourceMappingURL=resolver.js.map
|