@seed-ship/mcp-ui-solid 6.19.1 → 6.20.0
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/CHANGELOG.md +519 -0
- package/README.md +791 -1
- package/dist/adapters/connector.cjs +15 -4
- package/dist/adapters/connector.cjs.map +1 -1
- package/dist/adapters/connector.d.ts +38 -0
- package/dist/adapters/connector.d.ts.map +1 -1
- package/dist/adapters/connector.js +15 -4
- package/dist/adapters/connector.js.map +1 -1
- package/dist/adapters/index.d.ts +4 -3
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/macro-run.cjs +25 -13
- package/dist/adapters/macro-run.cjs.map +1 -1
- package/dist/adapters/macro-run.d.ts +37 -2
- package/dist/adapters/macro-run.d.ts.map +1 -1
- package/dist/adapters/macro-run.js +25 -13
- package/dist/adapters/macro-run.js.map +1 -1
- package/dist/adapters.cjs +2 -0
- package/dist/adapters.cjs.map +1 -1
- package/dist/adapters.js +4 -2
- package/dist/components/ActionGroupRenderer.cjs +3 -1
- package/dist/components/ActionGroupRenderer.cjs.map +1 -1
- package/dist/components/ActionGroupRenderer.d.ts.map +1 -1
- package/dist/components/ActionGroupRenderer.js +3 -1
- package/dist/components/ActionGroupRenderer.js.map +1 -1
- package/dist/components/AgentCard.cjs +11 -8
- package/dist/components/AgentCard.cjs.map +1 -1
- package/dist/components/AgentCard.d.ts.map +1 -1
- package/dist/components/AgentCard.js +11 -8
- package/dist/components/AgentCard.js.map +1 -1
- package/dist/components/AgentHandoff.cjs +6 -1
- package/dist/components/AgentHandoff.cjs.map +1 -1
- package/dist/components/AgentHandoff.d.ts.map +1 -1
- package/dist/components/AgentHandoff.js +6 -1
- package/dist/components/AgentHandoff.js.map +1 -1
- package/dist/components/ArtifactRenderer.cjs +25 -6
- package/dist/components/ArtifactRenderer.cjs.map +1 -1
- package/dist/components/ArtifactRenderer.d.ts.map +1 -1
- package/dist/components/ArtifactRenderer.js +25 -6
- package/dist/components/ArtifactRenderer.js.map +1 -1
- package/dist/components/AutocompleteDropdown.cjs +30 -24
- package/dist/components/AutocompleteDropdown.cjs.map +1 -1
- package/dist/components/AutocompleteDropdown.d.ts.map +1 -1
- package/dist/components/AutocompleteDropdown.js +30 -24
- package/dist/components/AutocompleteDropdown.js.map +1 -1
- package/dist/components/AutocompleteFormField.cjs +3 -1
- package/dist/components/AutocompleteFormField.cjs.map +1 -1
- package/dist/components/AutocompleteFormField.d.ts.map +1 -1
- package/dist/components/AutocompleteFormField.js +4 -2
- package/dist/components/AutocompleteFormField.js.map +1 -1
- package/dist/components/BriefingDiff.cjs +45 -39
- package/dist/components/BriefingDiff.cjs.map +1 -1
- package/dist/components/BriefingDiff.d.ts.map +1 -1
- package/dist/components/BriefingDiff.js +45 -39
- package/dist/components/BriefingDiff.js.map +1 -1
- package/dist/components/CarouselRenderer.cjs +8 -2
- package/dist/components/CarouselRenderer.cjs.map +1 -1
- package/dist/components/CarouselRenderer.d.ts.map +1 -1
- package/dist/components/CarouselRenderer.js +8 -2
- package/dist/components/CarouselRenderer.js.map +1 -1
- package/dist/components/ChartJSRenderer.cjs +60 -36
- package/dist/components/ChartJSRenderer.cjs.map +1 -1
- package/dist/components/ChartJSRenderer.d.ts.map +1 -1
- package/dist/components/ChartJSRenderer.js +61 -37
- package/dist/components/ChartJSRenderer.js.map +1 -1
- package/dist/components/ChatPrompt.cjs +15 -9
- package/dist/components/ChatPrompt.cjs.map +1 -1
- package/dist/components/ChatPrompt.d.ts.map +1 -1
- package/dist/components/ChatPrompt.js +15 -9
- package/dist/components/ChatPrompt.js.map +1 -1
- package/dist/components/CodeBlockRenderer.cjs +34 -16
- package/dist/components/CodeBlockRenderer.cjs.map +1 -1
- package/dist/components/CodeBlockRenderer.d.ts.map +1 -1
- package/dist/components/CodeBlockRenderer.js +34 -16
- package/dist/components/CodeBlockRenderer.js.map +1 -1
- package/dist/components/DataPreviewSection.cjs +91 -44
- package/dist/components/DataPreviewSection.cjs.map +1 -1
- package/dist/components/DataPreviewSection.d.ts.map +1 -1
- package/dist/components/DataPreviewSection.js +92 -45
- package/dist/components/DataPreviewSection.js.map +1 -1
- package/dist/components/DegradedFallback.cjs +20 -16
- package/dist/components/DegradedFallback.cjs.map +1 -1
- package/dist/components/DegradedFallback.d.ts.map +1 -1
- package/dist/components/DegradedFallback.js +20 -16
- package/dist/components/DegradedFallback.js.map +1 -1
- package/dist/components/FooterRenderer.cjs +21 -17
- package/dist/components/FooterRenderer.cjs.map +1 -1
- package/dist/components/FooterRenderer.d.ts.map +1 -1
- package/dist/components/FooterRenderer.js +21 -17
- package/dist/components/FooterRenderer.js.map +1 -1
- package/dist/components/FormFieldRenderer.cjs +116 -93
- package/dist/components/FormFieldRenderer.cjs.map +1 -1
- package/dist/components/FormFieldRenderer.d.ts.map +1 -1
- package/dist/components/FormFieldRenderer.js +116 -93
- package/dist/components/FormFieldRenderer.js.map +1 -1
- package/dist/components/FormRenderer.cjs +55 -31
- package/dist/components/FormRenderer.cjs.map +1 -1
- package/dist/components/FormRenderer.d.ts.map +1 -1
- package/dist/components/FormRenderer.js +55 -31
- package/dist/components/FormRenderer.js.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.cjs +20 -15
- package/dist/components/GenerativeUIErrorBoundary.cjs.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.d.ts.map +1 -1
- package/dist/components/GenerativeUIErrorBoundary.js +20 -15
- package/dist/components/GenerativeUIErrorBoundary.js.map +1 -1
- package/dist/components/GraphRenderer.cjs +56 -33
- package/dist/components/GraphRenderer.cjs.map +1 -1
- package/dist/components/GraphRenderer.d.ts.map +1 -1
- package/dist/components/GraphRenderer.js +56 -33
- package/dist/components/GraphRenderer.js.map +1 -1
- package/dist/components/ImageGalleryRenderer.cjs +13 -4
- package/dist/components/ImageGalleryRenderer.cjs.map +1 -1
- package/dist/components/ImageGalleryRenderer.d.ts.map +1 -1
- package/dist/components/ImageGalleryRenderer.js +13 -4
- package/dist/components/ImageGalleryRenderer.js.map +1 -1
- package/dist/components/LightboxOverlay.cjs +16 -8
- package/dist/components/LightboxOverlay.cjs.map +1 -1
- package/dist/components/LightboxOverlay.d.ts.map +1 -1
- package/dist/components/LightboxOverlay.js +17 -9
- package/dist/components/LightboxOverlay.js.map +1 -1
- package/dist/components/MapRenderer.cjs +59 -29
- package/dist/components/MapRenderer.cjs.map +1 -1
- package/dist/components/MapRenderer.d.ts +10 -2
- package/dist/components/MapRenderer.d.ts.map +1 -1
- package/dist/components/MapRenderer.js +60 -30
- package/dist/components/MapRenderer.js.map +1 -1
- package/dist/components/ModalRenderer.cjs +4 -1
- package/dist/components/ModalRenderer.cjs.map +1 -1
- package/dist/components/ModalRenderer.d.ts.map +1 -1
- package/dist/components/ModalRenderer.js +5 -2
- package/dist/components/ModalRenderer.js.map +1 -1
- package/dist/components/ScratchpadPanel.cjs +578 -535
- package/dist/components/ScratchpadPanel.cjs.map +1 -1
- package/dist/components/ScratchpadPanel.d.ts.map +1 -1
- package/dist/components/ScratchpadPanel.js +578 -535
- package/dist/components/ScratchpadPanel.js.map +1 -1
- package/dist/components/StreamingUIRenderer.cjs +92 -28
- package/dist/components/StreamingUIRenderer.cjs.map +1 -1
- package/dist/components/StreamingUIRenderer.d.ts.map +1 -1
- package/dist/components/StreamingUIRenderer.js +92 -28
- package/dist/components/StreamingUIRenderer.js.map +1 -1
- package/dist/components/UIResourceRenderer.cjs +456 -363
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts +21 -0
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +458 -365
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/components/VerifiedText.cjs +39 -20
- package/dist/components/VerifiedText.cjs.map +1 -1
- package/dist/components/VerifiedText.d.ts +2 -1
- package/dist/components/VerifiedText.d.ts.map +1 -1
- package/dist/components/VerifiedText.js +39 -20
- package/dist/components/VerifiedText.js.map +1 -1
- package/dist/components/VideoRenderer.cjs +10 -5
- package/dist/components/VideoRenderer.cjs.map +1 -1
- package/dist/components/VideoRenderer.d.ts.map +1 -1
- package/dist/components/VideoRenderer.js +10 -5
- package/dist/components/VideoRenderer.js.map +1 -1
- package/dist/components/chart-data-table.cjs +38 -17
- package/dist/components/chart-data-table.cjs.map +1 -1
- package/dist/components/chart-data-table.d.ts +30 -1
- package/dist/components/chart-data-table.d.ts.map +1 -1
- package/dist/components/chart-data-table.js +38 -17
- package/dist/components/chart-data-table.js.map +1 -1
- package/dist/context/MCPActionContext.cjs +3 -1
- package/dist/context/MCPActionContext.cjs.map +1 -1
- package/dist/context/MCPActionContext.d.ts.map +1 -1
- package/dist/context/MCPActionContext.js +3 -1
- package/dist/context/MCPActionContext.js.map +1 -1
- package/dist/context/MCPUIStringsContext.cjs +285 -2
- package/dist/context/MCPUIStringsContext.cjs.map +1 -1
- package/dist/context/MCPUIStringsContext.d.ts +600 -3
- package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
- package/dist/context/MCPUIStringsContext.js +285 -2
- package/dist/context/MCPUIStringsContext.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useStreamingUI.cjs +28 -10
- package/dist/hooks/useStreamingUI.cjs.map +1 -1
- package/dist/hooks/useStreamingUI.d.ts +37 -0
- package/dist/hooks/useStreamingUI.d.ts.map +1 -1
- package/dist/hooks/useStreamingUI.js +28 -10
- package/dist/hooks/useStreamingUI.js.map +1 -1
- package/dist/hooks.cjs +1 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +2 -1
- package/dist/index.cjs +23 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/services/validation.cjs +41 -16
- package/dist/services/validation.cjs.map +1 -1
- package/dist/services/validation.d.ts +47 -2
- package/dist/services/validation.d.ts.map +1 -1
- package/dist/services/validation.js +41 -16
- package/dist/services/validation.js.map +1 -1
- package/dist/utils/degraded-projections.cjs +37 -12
- package/dist/utils/degraded-projections.cjs.map +1 -1
- package/dist/utils/degraded-projections.d.ts +39 -3
- package/dist/utils/degraded-projections.d.ts.map +1 -1
- package/dist/utils/degraded-projections.js +37 -12
- package/dist/utils/degraded-projections.js.map +1 -1
- package/dist/utils/format-string.cjs +10 -0
- package/dist/utils/format-string.cjs.map +1 -0
- package/dist/utils/format-string.d.ts +26 -0
- package/dist/utils/format-string.d.ts.map +1 -0
- package/dist/utils/format-string.js +10 -0
- package/dist/utils/format-string.js.map +1 -0
- package/dist/validation.cjs +3 -0
- package/dist/validation.cjs.map +1 -1
- package/dist/validation.d.cts +2 -1
- package/dist/validation.d.ts +2 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +4 -1
- package/package.json +1 -1
- package/src/adapters/connector.ts +58 -4
- package/src/adapters/index.ts +12 -2
- package/src/adapters/macro-run.ts +71 -11
- package/src/components/ActionGroupRenderer.tsx +3 -1
- package/src/components/AgentCard.tsx +27 -9
- package/src/components/AgentHandoff.tsx +4 -1
- package/src/components/ArtifactRenderer.tsx +17 -5
- package/src/components/AutocompleteDropdown.tsx +8 -6
- package/src/components/AutocompleteFormField.tsx +5 -1
- package/src/components/BriefingDiff.tsx +11 -3
- package/src/components/CarouselRenderer.tsx +4 -2
- package/src/components/ChartJSRenderer.tsx +18 -9
- package/src/components/ChatPrompt.tsx +13 -8
- package/src/components/CodeBlockRenderer.tsx +12 -10
- package/src/components/DataPreviewSection.tsx +92 -26
- package/src/components/DegradedFallback.tsx +4 -2
- package/src/components/FooterRenderer.tsx +3 -1
- package/src/components/FormFieldRenderer.tsx +34 -19
- package/src/components/FormRenderer.tsx +38 -10
- package/src/components/GenerativeUIErrorBoundary.tsx +8 -3
- package/src/components/GraphRenderer.tsx +31 -16
- package/src/components/ImageGalleryRenderer.tsx +8 -4
- package/src/components/LightboxOverlay.tsx +6 -4
- package/src/components/MapRenderer.tsx +57 -20
- package/src/components/ModalRenderer.tsx +3 -1
- package/src/components/ScratchpadPanel.tsx +95 -44
- package/src/components/StreamingUIRenderer.tsx +41 -11
- package/src/components/UIResourceRenderer.tsx +145 -63
- package/src/components/VerifiedText.tsx +19 -9
- package/src/components/VideoRenderer.tsx +6 -4
- package/src/components/chart-data-table.ts +68 -14
- package/src/context/MCPActionContext.tsx +4 -1
- package/src/context/MCPUIStringsContext.tsx +1004 -1
- package/src/hooks/index.ts +2 -1
- package/src/hooks/useStreamingUI.ts +64 -10
- package/src/index.ts +23 -0
- package/src/services/validation.ts +93 -16
- package/src/utils/degraded-projections.ts +75 -12
- package/src/utils/format-string.ts +33 -0
- package/src/validation.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteFormField.js","sources":["../../src/components/AutocompleteFormField.tsx"],"sourcesContent":["/**\n * AutocompleteFormField Component\n * Form field with integrated autocomplete support\n *\n * Sprint Autocomplete Feature\n */\n\nimport { Component, Show, createSignal, createMemo, Accessor, createEffect, on } from 'solid-js'\nimport type { FormFieldParams, FieldAutocompleteConfig, AutocompleteContext } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\nimport { useAutocomplete } from '../hooks/useAutocomplete'\nimport { useAutocompleteContextSafe } from '../context/AutocompleteContext'\nimport { GhostText } from './GhostText'\nimport { AutocompleteDropdown } from './AutocompleteDropdown'\n\n/**\n * Extended FormFieldParams with autocomplete config\n */\nexport interface AutocompleteFormFieldParams extends FormFieldParams {\n /**\n * Autocomplete configuration for this field\n */\n autocomplete?: FieldAutocompleteConfig\n}\n\n/**\n * Props for AutocompleteFormField\n */\nexport interface AutocompleteFormFieldProps {\n /**\n * Field configuration\n */\n field: AutocompleteFormFieldParams\n\n /**\n * Current field value\n */\n value: any\n\n /**\n * Error message\n */\n error?: string\n\n /**\n * Change handler\n */\n onChange: (value: any) => void\n\n /**\n * Whether field is disabled\n */\n disabled?: boolean\n\n /**\n * Form data accessor for conditional visibility and context\n */\n formData?: Accessor<Record<string, any>>\n}\n\n/**\n * AutocompleteFormField Component\n */\nexport const AutocompleteFormField: Component<AutocompleteFormFieldProps> = (props) => {\n // Check if autocomplete context is available\n const autocompleteCtx = useAutocompleteContextSafe()\n\n // Conditional visibility\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({}))\n })\n\n // Local input value for autocomplete (may differ during suggestion)\n const [localValue, setLocalValue] = createSignal(String(props.value || ''))\n\n // Sync external value changes\n createEffect(on(() => props.value, (newValue) => {\n setLocalValue(String(newValue || ''))\n }))\n\n // Build autocomplete context\n const autocompleteContext = createMemo((): AutocompleteContext | undefined => {\n const formData = props.formData?.()\n const config = props.field.autocomplete\n\n if (!config?.contextFields?.length && !formData) {\n return { fieldName: props.field.name }\n }\n\n const contextData: Record<string, any> = {}\n if (config?.contextFields && formData) {\n config.contextFields.forEach(field => {\n if (formData[field] !== undefined) {\n contextData[field] = formData[field]\n }\n })\n }\n\n return {\n fieldName: props.field.name,\n formData: contextData\n }\n })\n\n // Initialize autocomplete hook\n const autocomplete = useAutocomplete({\n inputValue: localValue,\n pluginId: props.field.autocomplete?.plugin,\n fieldConfig: props.field.autocomplete,\n context: () => autocompleteContext() || { fieldName: props.field.name },\n enabled: !!(props.field.autocomplete?.enabled && autocompleteCtx),\n minChars: props.field.autocomplete?.minChars,\n debounceMs: props.field.autocomplete?.debounceMs,\n onInputChange: (value) => {\n setLocalValue(value)\n props.onChange(value)\n }\n })\n\n // Handle input change\n const handleInput = (value: string) => {\n setLocalValue(value)\n props.onChange(value)\n }\n\n // Handle key down\n const handleKeyDown = (e: KeyboardEvent) => {\n if (autocomplete.handleKeyDown(e)) {\n return\n }\n }\n\n // Base input class\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n // Check if field supports autocomplete (text-based fields only)\n const supportsAutocomplete = createMemo(() =>\n ['text', 'email'].includes(props.field.type)\n )\n\n // Whether to show autocomplete features\n const showAutocomplete = createMemo(() =>\n supportsAutocomplete() &&\n props.field.autocomplete?.enabled &&\n autocompleteCtx !== undefined\n )\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n {/* Label */}\n <Show when={props.field.label}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n {/* Input with autocomplete */}\n <div class=\"relative\">\n <Show\n when={showAutocomplete()}\n fallback={\n /* Standard input without autocomplete */\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n }\n >\n {/* Autocomplete-enabled input */}\n <div class=\"relative\">\n {/* Ghost text overlay (for completion type) */}\n <Show when={autocomplete.resultType() === 'completion'}>\n <GhostText\n inputValue={localValue()}\n ghostText={autocomplete.ghostText()}\n visible={autocomplete.isOpen()}\n hintText={autocomplete.ghostText() ? 'Tab to accept' : undefined}\n isLoading={autocomplete.isLoading()}\n />\n </Show>\n\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={localValue()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n // Delay dismiss to allow click on dropdown\n setTimeout(() => autocomplete.dismiss(), 150)\n }}\n onFocus={() => {\n if (localValue().length >= (props.field.autocomplete?.minChars || 1)) {\n autocomplete.open()\n }\n }}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n aria-autocomplete=\"list\"\n aria-expanded={autocomplete.isOpen()}\n aria-haspopup=\"listbox\"\n class={`${baseInputClass()} ${autocomplete.resultType() === 'completion' ? 'bg-transparent' : ''}`}\n style={{\n position: 'relative',\n 'z-index': '2'\n }}\n autocomplete=\"off\"\n />\n\n {/* Dropdown (for options type) */}\n <Show when={autocomplete.resultType() === 'options'}>\n <AutocompleteDropdown\n options={autocomplete.options()}\n selectedIndex={autocomplete.selectedIndex()}\n isOpen={autocomplete.isOpen()}\n isLoading={autocomplete.isLoading()}\n onSelect={(option) => {\n handleInput(option.value)\n autocomplete.dismiss()\n }}\n onHover={(_index) => {\n // Could add hover selection here\n }}\n highlightMatch={localValue()}\n loadingMessage={props.field.autocomplete?.loadingPlaceholder}\n />\n </Show>\n </div>\n </Show>\n </div>\n\n {/* Help text */}\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">\n {props.field.helpText}\n </p>\n </Show>\n\n {/* Error message */}\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\nexport default AutocompleteFormField\n"],"names":["AutocompleteFormField","props","autocompleteCtx","useAutocompleteContextSafe","isVisible","useConditionalField","condition","field","showWhen","formData","localValue","setLocalValue","createSignal","String","value","createEffect","on","newValue","autocompleteContext","createMemo","config","autocomplete","contextFields","length","fieldName","name","contextData","forEach","undefined","useAutocomplete","inputValue","pluginId","plugin","fieldConfig","context","enabled","minChars","debounceMs","onInputChange","onChange","handleInput","handleKeyDown","e","baseInputClass","error","fieldId","errorId","supportsAutocomplete","includes","type","showAutocomplete","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$6","_el$15","firstChild","_el$16","_co$5","_$getNextMarker","nextSibling","_el$8","_el$17","_el$18","_co$6","_el$19","_el$20","_co$7","_$insert","label","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","fallback","_el$21","_tmpl$7","$$input","currentTarget","_p$","_v$12","_v$13","_v$14","_v$15","placeholder","_v$16","disabled","_v$17","_v$18","minLength","_v$19","maxLength","_v$20","pattern","_v$21","_v$22","_v$23","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$3","_el$1","_el$10","_co$3","_el$0","_el$11","_el$12","_co$4","resultType","GhostText","ghostText","visible","isOpen","hintText","isLoading","addEventListener","open","setTimeout","dismiss","$$keydown","AutocompleteDropdown","options","selectedIndex","onSelect","option","onHover","_index","highlightMatch","loadingMessage","loadingPlaceholder","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","c","_$memo","helpText","_el$13","_tmpl$4","_el$14","_tmpl$5","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutocompleteFormField.js","sources":["../../src/components/AutocompleteFormField.tsx"],"sourcesContent":["/**\n * AutocompleteFormField Component\n * Form field with integrated autocomplete support\n *\n * Sprint Autocomplete Feature\n */\n\nimport { Component, Show, createSignal, createMemo, Accessor, createEffect, on } from 'solid-js'\nimport type { FormFieldParams, FieldAutocompleteConfig, AutocompleteContext } from '../types'\nimport { useConditionalField } from '../hooks/useConditionalField'\nimport { useAutocomplete } from '../hooks/useAutocomplete'\nimport { useAutocompleteContextSafe } from '../context/AutocompleteContext'\nimport { useMCPUIStrings } from '../context/MCPUIStringsContext'\nimport { GhostText } from './GhostText'\nimport { AutocompleteDropdown } from './AutocompleteDropdown'\n\n/**\n * Extended FormFieldParams with autocomplete config\n */\nexport interface AutocompleteFormFieldParams extends FormFieldParams {\n /**\n * Autocomplete configuration for this field\n */\n autocomplete?: FieldAutocompleteConfig\n}\n\n/**\n * Props for AutocompleteFormField\n */\nexport interface AutocompleteFormFieldProps {\n /**\n * Field configuration\n */\n field: AutocompleteFormFieldParams\n\n /**\n * Current field value\n */\n value: any\n\n /**\n * Error message\n */\n error?: string\n\n /**\n * Change handler\n */\n onChange: (value: any) => void\n\n /**\n * Whether field is disabled\n */\n disabled?: boolean\n\n /**\n * Form data accessor for conditional visibility and context\n */\n formData?: Accessor<Record<string, any>>\n}\n\n/**\n * AutocompleteFormField Component\n */\nexport const AutocompleteFormField: Component<AutocompleteFormFieldProps> = (props) => {\n const strings = useMCPUIStrings()\n // Check if autocomplete context is available\n const autocompleteCtx = useAutocompleteContextSafe()\n\n // Conditional visibility\n const { isVisible } = useConditionalField({\n condition: props.field.showWhen,\n formData: props.formData || (() => ({}))\n })\n\n // Local input value for autocomplete (may differ during suggestion)\n const [localValue, setLocalValue] = createSignal(String(props.value || ''))\n\n // Sync external value changes\n createEffect(on(() => props.value, (newValue) => {\n setLocalValue(String(newValue || ''))\n }))\n\n // Build autocomplete context\n const autocompleteContext = createMemo((): AutocompleteContext | undefined => {\n const formData = props.formData?.()\n const config = props.field.autocomplete\n\n if (!config?.contextFields?.length && !formData) {\n return { fieldName: props.field.name }\n }\n\n const contextData: Record<string, any> = {}\n if (config?.contextFields && formData) {\n config.contextFields.forEach(field => {\n if (formData[field] !== undefined) {\n contextData[field] = formData[field]\n }\n })\n }\n\n return {\n fieldName: props.field.name,\n formData: contextData\n }\n })\n\n // Initialize autocomplete hook\n const autocomplete = useAutocomplete({\n inputValue: localValue,\n pluginId: props.field.autocomplete?.plugin,\n fieldConfig: props.field.autocomplete,\n context: () => autocompleteContext() || { fieldName: props.field.name },\n enabled: !!(props.field.autocomplete?.enabled && autocompleteCtx),\n minChars: props.field.autocomplete?.minChars,\n debounceMs: props.field.autocomplete?.debounceMs,\n onInputChange: (value) => {\n setLocalValue(value)\n props.onChange(value)\n }\n })\n\n // Handle input change\n const handleInput = (value: string) => {\n setLocalValue(value)\n props.onChange(value)\n }\n\n // Handle key down\n const handleKeyDown = (e: KeyboardEvent) => {\n if (autocomplete.handleKeyDown(e)) {\n return\n }\n }\n\n // Base input class\n const baseInputClass = () => `\n w-full px-3 py-2 border rounded-md\n focus:ring-2 focus:ring-blue-500 focus:border-blue-500\n disabled:bg-gray-100 disabled:cursor-not-allowed\n ${props.error\n ? 'border-red-500 focus:ring-red-500'\n : 'border-gray-300 dark:border-gray-600'}\n dark:bg-gray-700 dark:text-white\n `\n\n const fieldId = () => `field-${props.field.name}`\n const errorId = () => `${props.field.name}-error`\n\n // Check if field supports autocomplete (text-based fields only)\n const supportsAutocomplete = createMemo(() =>\n ['text', 'email'].includes(props.field.type)\n )\n\n // Whether to show autocomplete features\n const showAutocomplete = createMemo(() =>\n supportsAutocomplete() &&\n props.field.autocomplete?.enabled &&\n autocompleteCtx !== undefined\n )\n\n return (\n <Show when={isVisible()}>\n <div class=\"space-y-1\">\n {/* Label */}\n <Show when={props.field.label}>\n <label\n for={fieldId()}\n class=\"block text-sm font-medium text-gray-700 dark:text-gray-300\"\n >\n {props.field.label}\n <Show when={props.field.required}>\n <span class=\"text-red-500 ml-1\" aria-hidden=\"true\">*</span>\n </Show>\n </label>\n </Show>\n\n {/* Input with autocomplete */}\n <div class=\"relative\">\n <Show\n when={showAutocomplete()}\n fallback={\n /* Standard input without autocomplete */\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={props.value || ''}\n onInput={(e) => props.onChange(e.currentTarget.value)}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n class={baseInputClass()}\n />\n }\n >\n {/* Autocomplete-enabled input */}\n <div class=\"relative\">\n {/* Ghost text overlay (for completion type) */}\n <Show when={autocomplete.resultType() === 'completion'}>\n <GhostText\n inputValue={localValue()}\n ghostText={autocomplete.ghostText()}\n visible={autocomplete.isOpen()}\n hintText={\n autocomplete.ghostText() ? strings.autocompleteTabToAccept : undefined\n }\n isLoading={autocomplete.isLoading()}\n />\n </Show>\n\n <input\n id={fieldId()}\n type={props.field.type}\n name={props.field.name}\n value={localValue()}\n onInput={(e) => handleInput(e.currentTarget.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n // Delay dismiss to allow click on dropdown\n setTimeout(() => autocomplete.dismiss(), 150)\n }}\n onFocus={() => {\n if (localValue().length >= (props.field.autocomplete?.minChars || 1)) {\n autocomplete.open()\n }\n }}\n placeholder={props.field.placeholder}\n disabled={props.disabled}\n required={props.field.required}\n minLength={props.field.minLength}\n maxLength={props.field.maxLength}\n pattern={props.field.pattern}\n aria-invalid={!!props.error}\n aria-describedby={props.error ? errorId() : undefined}\n aria-autocomplete=\"list\"\n aria-expanded={autocomplete.isOpen()}\n aria-haspopup=\"listbox\"\n class={`${baseInputClass()} ${autocomplete.resultType() === 'completion' ? 'bg-transparent' : ''}`}\n style={{\n position: 'relative',\n 'z-index': '2'\n }}\n autocomplete=\"off\"\n />\n\n {/* Dropdown (for options type) */}\n <Show when={autocomplete.resultType() === 'options'}>\n <AutocompleteDropdown\n options={autocomplete.options()}\n selectedIndex={autocomplete.selectedIndex()}\n isOpen={autocomplete.isOpen()}\n isLoading={autocomplete.isLoading()}\n onSelect={(option) => {\n handleInput(option.value)\n autocomplete.dismiss()\n }}\n onHover={(_index) => {\n // Could add hover selection here\n }}\n highlightMatch={localValue()}\n loadingMessage={props.field.autocomplete?.loadingPlaceholder}\n />\n </Show>\n </div>\n </Show>\n </div>\n\n {/* Help text */}\n <Show when={props.field.helpText && !props.error}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400\">\n {props.field.helpText}\n </p>\n </Show>\n\n {/* Error message */}\n <Show when={props.error}>\n <p id={errorId()} role=\"alert\" class=\"text-xs text-red-600 dark:text-red-400\">\n {props.error}\n </p>\n </Show>\n </div>\n </Show>\n )\n}\n\nexport default AutocompleteFormField\n"],"names":["AutocompleteFormField","props","strings","useMCPUIStrings","autocompleteCtx","useAutocompleteContextSafe","isVisible","useConditionalField","condition","field","showWhen","formData","localValue","setLocalValue","createSignal","String","value","createEffect","on","newValue","autocompleteContext","createMemo","config","autocomplete","contextFields","length","fieldName","name","contextData","forEach","undefined","useAutocomplete","inputValue","pluginId","plugin","fieldConfig","context","enabled","minChars","debounceMs","onInputChange","onChange","handleInput","handleKeyDown","e","baseInputClass","error","fieldId","errorId","supportsAutocomplete","includes","type","showAutocomplete","_$createComponent","Show","when","children","_el$","_$getNextElement","_tmpl$6","_el$15","firstChild","_el$16","_co$5","_$getNextMarker","nextSibling","_el$8","_el$17","_el$18","_co$6","_el$19","_el$20","_co$7","_$insert","label","_el$2","_tmpl$2","_el$4","_el$5","_co$","_el$6","_el$7","_co$2","required","_tmpl$","_$effect","_$setAttribute","fallback","_el$21","_tmpl$7","$$input","currentTarget","_p$","_v$12","_v$13","_v$14","_v$15","placeholder","_v$16","disabled","_v$17","_v$18","minLength","_v$19","maxLength","_v$20","pattern","_v$21","_v$22","_v$23","t","a","o","i","_$setProperty","n","s","h","r","d","l","u","_$className","_$runHydrationEvents","_el$9","_tmpl$3","_el$1","_el$10","_co$3","_el$0","_el$11","_el$12","_co$4","resultType","GhostText","ghostText","visible","isOpen","hintText","_$memo","autocompleteTabToAccept","isLoading","addEventListener","open","setTimeout","dismiss","$$keydown","AutocompleteDropdown","options","selectedIndex","onSelect","option","onHover","_index","highlightMatch","loadingMessage","loadingPlaceholder","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","c","helpText","_el$13","_tmpl$4","_el$14","_tmpl$5","_$delegateEvents"],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const web = require("solid-js/web");
|
|
4
4
|
const solidJs = require("solid-js");
|
|
5
|
-
|
|
5
|
+
const MCPUIStringsContext = require("../context/MCPUIStringsContext.cjs");
|
|
6
|
+
const formatString = require("../utils/format-string.cjs");
|
|
7
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<span class=font-medium>`), _tmpl$2 = /* @__PURE__ */ web.template(`<span><!$><!/> → <!$><!/>`), _tmpl$3 = /* @__PURE__ */ web.template(`<div class="flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><!$><!/><!$><!/>`), _tmpl$4 = /* @__PURE__ */ web.template(`<div class="briefing-diff space-y-2"><!$><!/><!$><!/><div class=space-y-1>`), _tmpl$5 = /* @__PURE__ */ web.template(`<span class="text-green-600 dark:text-green-400">`), _tmpl$6 = /* @__PURE__ */ web.template(`<span class="text-red-600 dark:text-red-400">`), _tmpl$7 = /* @__PURE__ */ web.template(`<span class="text-amber-600 dark:text-amber-400">`), _tmpl$8 = /* @__PURE__ */ web.template(`<div class="flex items-center gap-3 text-xs"><!$><!/><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ web.template(`<div class="mt-0.5 text-xs"><span class="text-red-500 line-through"></span><span class="mx-1 text-gray-400">→</span><span class="text-green-600 dark:text-green-400">`), _tmpl$0 = /* @__PURE__ */ web.template(`<div class="mt-0.5 text-xs text-gray-600 dark:text-gray-400">`), _tmpl$1 = /* @__PURE__ */ web.template(`<div class="mt-0.5 text-xs text-gray-500 line-through">`), _tmpl$10 = /* @__PURE__ */ web.template(`<div><span></span><div class="flex-1 min-w-0"><span></span><!$><!/><!$><!/><!$><!/>`);
|
|
6
8
|
const CHANGE_CONFIG = {
|
|
7
9
|
added: {
|
|
8
10
|
icon: "+",
|
|
@@ -21,6 +23,7 @@ const CHANGE_CONFIG = {
|
|
|
21
23
|
}
|
|
22
24
|
};
|
|
23
25
|
function BriefingDiff(props) {
|
|
26
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
24
27
|
const c = () => props.content;
|
|
25
28
|
if (typeof console !== "undefined") {
|
|
26
29
|
console.info("[MCP-UI:BriefingDiff] mounted", {
|
|
@@ -65,40 +68,43 @@ function BriefingDiff(props) {
|
|
|
65
68
|
return c().stats;
|
|
66
69
|
},
|
|
67
70
|
children: (stats) => (() => {
|
|
68
|
-
var _el$17 = web.getNextElement(_tmpl$8), _el$
|
|
71
|
+
var _el$17 = web.getNextElement(_tmpl$8), _el$21 = _el$17.firstChild, [_el$22, _co$7] = web.getNextMarker(_el$21.nextSibling), _el$23 = _el$22.nextSibling, [_el$24, _co$8] = web.getNextMarker(_el$23.nextSibling), _el$25 = _el$24.nextSibling, [_el$26, _co$9] = web.getNextMarker(_el$25.nextSibling);
|
|
69
72
|
web.insert(_el$17, web.createComponent(solidJs.Show, {
|
|
70
73
|
get when() {
|
|
71
74
|
return stats().added > 0;
|
|
72
75
|
},
|
|
73
76
|
get children() {
|
|
74
|
-
var _el$18 = web.getNextElement(_tmpl$5)
|
|
75
|
-
_el$
|
|
76
|
-
|
|
77
|
+
var _el$18 = web.getNextElement(_tmpl$5);
|
|
78
|
+
web.insert(_el$18, () => formatString.formatMCPUIString(strings.briefingAdded, {
|
|
79
|
+
count: stats().added
|
|
80
|
+
}));
|
|
77
81
|
return _el$18;
|
|
78
82
|
}
|
|
79
|
-
}), _el$
|
|
83
|
+
}), _el$22, _co$7);
|
|
80
84
|
web.insert(_el$17, web.createComponent(solidJs.Show, {
|
|
81
85
|
get when() {
|
|
82
86
|
return stats().removed > 0;
|
|
83
87
|
},
|
|
84
88
|
get children() {
|
|
85
|
-
var _el$
|
|
86
|
-
_el$
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
var _el$19 = web.getNextElement(_tmpl$6);
|
|
90
|
+
web.insert(_el$19, () => formatString.formatMCPUIString(strings.briefingRemoved, {
|
|
91
|
+
count: stats().removed
|
|
92
|
+
}));
|
|
93
|
+
return _el$19;
|
|
89
94
|
}
|
|
90
|
-
}), _el$
|
|
95
|
+
}), _el$24, _co$8);
|
|
91
96
|
web.insert(_el$17, web.createComponent(solidJs.Show, {
|
|
92
97
|
get when() {
|
|
93
98
|
return stats().changed > 0;
|
|
94
99
|
},
|
|
95
100
|
get children() {
|
|
96
|
-
var _el$
|
|
97
|
-
_el$
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
var _el$20 = web.getNextElement(_tmpl$7);
|
|
102
|
+
web.insert(_el$20, () => formatString.formatMCPUIString(strings.briefingChanged, {
|
|
103
|
+
count: stats().changed
|
|
104
|
+
}));
|
|
105
|
+
return _el$20;
|
|
100
106
|
}
|
|
101
|
-
}), _el$
|
|
107
|
+
}), _el$26, _co$9);
|
|
102
108
|
return _el$17;
|
|
103
109
|
})()
|
|
104
110
|
}), _el$16, _co$6);
|
|
@@ -109,52 +115,52 @@ function BriefingDiff(props) {
|
|
|
109
115
|
children: (change) => {
|
|
110
116
|
const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed;
|
|
111
117
|
return (() => {
|
|
112
|
-
var _el$
|
|
113
|
-
web.insert(_el$
|
|
114
|
-
web.insert(_el$
|
|
115
|
-
web.insert(_el$
|
|
118
|
+
var _el$27 = web.getNextElement(_tmpl$10), _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$29.firstChild, _el$37 = _el$30.nextSibling, [_el$38, _co$0] = web.getNextMarker(_el$37.nextSibling), _el$39 = _el$38.nextSibling, [_el$40, _co$1] = web.getNextMarker(_el$39.nextSibling), _el$41 = _el$40.nextSibling, [_el$42, _co$10] = web.getNextMarker(_el$41.nextSibling);
|
|
119
|
+
web.insert(_el$28, () => cfg.icon);
|
|
120
|
+
web.insert(_el$30, () => change.label);
|
|
121
|
+
web.insert(_el$29, web.createComponent(solidJs.Show, {
|
|
116
122
|
get when() {
|
|
117
123
|
return web.memo(() => !!(change.type === "changed" && change.previous))() && change.current;
|
|
118
124
|
},
|
|
119
125
|
get children() {
|
|
120
|
-
var _el$
|
|
121
|
-
web.insert(_el$
|
|
122
|
-
web.insert(_el$
|
|
123
|
-
return _el$
|
|
126
|
+
var _el$31 = web.getNextElement(_tmpl$9), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$34 = _el$33.nextSibling;
|
|
127
|
+
web.insert(_el$32, () => change.previous);
|
|
128
|
+
web.insert(_el$34, () => change.current);
|
|
129
|
+
return _el$31;
|
|
124
130
|
}
|
|
125
|
-
}), _el$
|
|
126
|
-
web.insert(_el$
|
|
131
|
+
}), _el$38, _co$0);
|
|
132
|
+
web.insert(_el$29, web.createComponent(solidJs.Show, {
|
|
127
133
|
get when() {
|
|
128
134
|
return web.memo(() => change.type === "added")() && change.current;
|
|
129
135
|
},
|
|
130
136
|
get children() {
|
|
131
|
-
var _el$
|
|
132
|
-
web.insert(_el$
|
|
133
|
-
return _el$
|
|
137
|
+
var _el$35 = web.getNextElement(_tmpl$0);
|
|
138
|
+
web.insert(_el$35, () => change.current);
|
|
139
|
+
return _el$35;
|
|
134
140
|
}
|
|
135
|
-
}), _el$
|
|
136
|
-
web.insert(_el$
|
|
141
|
+
}), _el$40, _co$1);
|
|
142
|
+
web.insert(_el$29, web.createComponent(solidJs.Show, {
|
|
137
143
|
get when() {
|
|
138
144
|
return web.memo(() => change.type === "removed")() && change.previous;
|
|
139
145
|
},
|
|
140
146
|
get children() {
|
|
141
|
-
var _el$
|
|
142
|
-
web.insert(_el$
|
|
143
|
-
return _el$
|
|
147
|
+
var _el$36 = web.getNextElement(_tmpl$1);
|
|
148
|
+
web.insert(_el$36, () => change.previous);
|
|
149
|
+
return _el$36;
|
|
144
150
|
}
|
|
145
|
-
}), _el$
|
|
151
|
+
}), _el$42, _co$10);
|
|
146
152
|
web.effect((_p$) => {
|
|
147
153
|
var _v$ = `flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`, _v$2 = `flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`, _v$3 = `text-sm font-medium ${cfg.color}`;
|
|
148
|
-
_v$ !== _p$.e && web.className(_el$
|
|
149
|
-
_v$2 !== _p$.t && web.className(_el$
|
|
150
|
-
_v$3 !== _p$.a && web.className(_el$
|
|
154
|
+
_v$ !== _p$.e && web.className(_el$27, _p$.e = _v$);
|
|
155
|
+
_v$2 !== _p$.t && web.className(_el$28, _p$.t = _v$2);
|
|
156
|
+
_v$3 !== _p$.a && web.className(_el$30, _p$.a = _v$3);
|
|
151
157
|
return _p$;
|
|
152
158
|
}, {
|
|
153
159
|
e: void 0,
|
|
154
160
|
t: void 0,
|
|
155
161
|
a: void 0
|
|
156
162
|
});
|
|
157
|
-
return _el$
|
|
163
|
+
return _el$27;
|
|
158
164
|
})();
|
|
159
165
|
}
|
|
160
166
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BriefingDiff.cjs","sources":["../../src/components/BriefingDiff.tsx"],"sourcesContent":["/**\n * BriefingDiff — highlight changes between two briefings\n * v4.1.0: AITL sprint — added/removed/changed entries with color coding\n *\n * @experimental\n */\n\nimport { For, Show } from 'solid-js'\nimport type { BriefingDiffContent } from '../types/chat-bus'\n\nexport interface BriefingDiffProps {\n content: BriefingDiffContent\n}\n\nconst CHANGE_CONFIG: Record<string, { icon: string; color: string; bg: string }> = {\n added: { icon: '+', color: 'text-green-700 dark:text-green-300', bg: 'bg-green-50 dark:bg-green-900/10' },\n removed: { icon: '\\u2212', color: 'text-red-700 dark:text-red-300', bg: 'bg-red-50 dark:bg-red-900/10' },\n changed: { icon: '\\u2194', color: 'text-amber-700 dark:text-amber-300', bg: 'bg-amber-50 dark:bg-amber-900/10' },\n}\n\nexport function BriefingDiff(props: BriefingDiffProps) {\n const c = () => props.content\n\n if (typeof console !== 'undefined') {\n console.info('[MCP-UI:BriefingDiff] mounted', {\n changes: c().changes.length,\n stats: c().stats,\n })\n }\n\n return (\n <div class=\"briefing-diff space-y-2\">\n {/* Header */}\n <Show when={c().title || c().previousDate || c().currentDate}>\n <div class=\"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <Show when={c().title}><span class=\"font-medium\">{c().title}</span></Show>\n <Show when={c().previousDate && c().currentDate}>\n <span>{c().previousDate} → {c().currentDate}</span>\n </Show>\n </div>\n </Show>\n\n {/* Stats summary */}\n <Show when={c().stats}>\n {(stats) => (\n <div class=\"flex items-center gap-3 text-xs\">\n <Show when={stats().added > 0}>\n <span class=\"text-green-600 dark:text-green-400\">+{stats().added} added</span>\n </Show>\n <Show when={stats().removed > 0}>\n <span class=\"text-red-600 dark:text-red-400\">{stats().removed} removed</span>\n </Show>\n <Show when={stats().changed > 0}>\n <span class=\"text-amber-600 dark:text-amber-400\">{stats().changed} changed</span>\n </Show>\n </div>\n )}\n </Show>\n\n {/* Change list */}\n <div class=\"space-y-1\">\n <For each={c().changes}>\n {(change) => {\n const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed\n return (\n <div class={`flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`}>\n <span class={`flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`}>\n {cfg.icon}\n </span>\n <div class=\"flex-1 min-w-0\">\n <span class={`text-sm font-medium ${cfg.color}`}>{change.label}</span>\n <Show when={change.type === 'changed' && change.previous && change.current}>\n <div class=\"mt-0.5 text-xs\">\n <span class=\"text-red-500 line-through\">{change.previous}</span>\n <span class=\"mx-1 text-gray-400\">→</span>\n <span class=\"text-green-600 dark:text-green-400\">{change.current}</span>\n </div>\n </Show>\n <Show when={change.type === 'added' && change.current}>\n <div class=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400\">{change.current}</div>\n </Show>\n <Show when={change.type === 'removed' && change.previous}>\n <div class=\"mt-0.5 text-xs text-gray-500 line-through\">{change.previous}</div>\n </Show>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["CHANGE_CONFIG","added","icon","color","bg","removed","changed","BriefingDiff","props","c","content","console","info","changes","length","stats","_el$","_$getNextElement","_tmpl$4","_el$13","firstChild","_el$14","_co$5","_$getNextMarker","nextSibling","_el$15","_el$16","_co$6","_el$12","_$insert","_$createComponent","Show","when","title","previousDate","currentDate","children","_el$2","_tmpl$3","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_el$3","_tmpl$","_$memo","_el$4","_tmpl$2","_el$6","_el$7","_co$","_el$5","_el$8","_el$9","_co$2","_el$17","_tmpl$8","_el$31","_el$32","_co$0","_el$33","_el$34","_co$1","_el$35","_el$36","_co$10","_el$18","_tmpl$5","_el$19","_el$21","_el$22","_co$7","_el$23","_tmpl$6","_el$25","_el$26","_co$8","_el$27","_tmpl$7","_el$29","_el$30","_co$9","For","each","change","cfg","type","_el$37","_tmpl$10","_el$38","_el$39","_el$40","_el$47","_el$48","_co$11","_el$49","_el$50","_co$12","_el$51","_el$52","_co$13","label","previous","current","_el$41","_tmpl$9","_el$42","_el$43","_el$44","_el$45","_tmpl$0","_el$46","_tmpl$1","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BriefingDiff.cjs","sources":["../../src/components/BriefingDiff.tsx"],"sourcesContent":["/**\n * BriefingDiff — highlight changes between two briefings\n * v4.1.0: AITL sprint — added/removed/changed entries with color coding\n *\n * @experimental\n */\n\nimport { For, Show } from 'solid-js'\nimport type { BriefingDiffContent } from '../types/chat-bus'\nimport { formatMCPUIString, useMCPUIStrings } from '../context/MCPUIStringsContext'\n\nexport interface BriefingDiffProps {\n content: BriefingDiffContent\n}\n\nconst CHANGE_CONFIG: Record<string, { icon: string; color: string; bg: string }> = {\n added: { icon: '+', color: 'text-green-700 dark:text-green-300', bg: 'bg-green-50 dark:bg-green-900/10' },\n removed: { icon: '\\u2212', color: 'text-red-700 dark:text-red-300', bg: 'bg-red-50 dark:bg-red-900/10' },\n changed: { icon: '\\u2194', color: 'text-amber-700 dark:text-amber-300', bg: 'bg-amber-50 dark:bg-amber-900/10' },\n}\n\nexport function BriefingDiff(props: BriefingDiffProps) {\n const strings = useMCPUIStrings()\n const c = () => props.content\n\n if (typeof console !== 'undefined') {\n console.info('[MCP-UI:BriefingDiff] mounted', {\n changes: c().changes.length,\n stats: c().stats,\n })\n }\n\n return (\n <div class=\"briefing-diff space-y-2\">\n {/* Header */}\n <Show when={c().title || c().previousDate || c().currentDate}>\n <div class=\"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <Show when={c().title}><span class=\"font-medium\">{c().title}</span></Show>\n <Show when={c().previousDate && c().currentDate}>\n <span>{c().previousDate} → {c().currentDate}</span>\n </Show>\n </div>\n </Show>\n\n {/* Stats summary */}\n <Show when={c().stats}>\n {(stats) => (\n <div class=\"flex items-center gap-3 text-xs\">\n <Show when={stats().added > 0}>\n <span class=\"text-green-600 dark:text-green-400\">\n {formatMCPUIString(strings.briefingAdded, { count: stats().added })}\n </span>\n </Show>\n <Show when={stats().removed > 0}>\n <span class=\"text-red-600 dark:text-red-400\">\n {formatMCPUIString(strings.briefingRemoved, { count: stats().removed })}\n </span>\n </Show>\n <Show when={stats().changed > 0}>\n <span class=\"text-amber-600 dark:text-amber-400\">\n {formatMCPUIString(strings.briefingChanged, { count: stats().changed })}\n </span>\n </Show>\n </div>\n )}\n </Show>\n\n {/* Change list */}\n <div class=\"space-y-1\">\n <For each={c().changes}>\n {(change) => {\n const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed\n return (\n <div class={`flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`}>\n <span class={`flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`}>\n {cfg.icon}\n </span>\n <div class=\"flex-1 min-w-0\">\n <span class={`text-sm font-medium ${cfg.color}`}>{change.label}</span>\n <Show when={change.type === 'changed' && change.previous && change.current}>\n <div class=\"mt-0.5 text-xs\">\n <span class=\"text-red-500 line-through\">{change.previous}</span>\n <span class=\"mx-1 text-gray-400\">→</span>\n <span class=\"text-green-600 dark:text-green-400\">{change.current}</span>\n </div>\n </Show>\n <Show when={change.type === 'added' && change.current}>\n <div class=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400\">{change.current}</div>\n </Show>\n <Show when={change.type === 'removed' && change.previous}>\n <div class=\"mt-0.5 text-xs text-gray-500 line-through\">{change.previous}</div>\n </Show>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["CHANGE_CONFIG","added","icon","color","bg","removed","changed","BriefingDiff","props","strings","useMCPUIStrings","c","content","console","info","changes","length","stats","_el$","_$getNextElement","_tmpl$4","_el$13","firstChild","_el$14","_co$5","_$getNextMarker","nextSibling","_el$15","_el$16","_co$6","_el$12","_$insert","_$createComponent","Show","when","title","previousDate","currentDate","children","_el$2","_tmpl$3","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_el$3","_tmpl$","_$memo","_el$4","_tmpl$2","_el$6","_el$7","_co$","_el$5","_el$8","_el$9","_co$2","_el$17","_tmpl$8","_el$21","_el$22","_co$7","_el$23","_el$24","_co$8","_el$25","_el$26","_co$9","_el$18","_tmpl$5","formatMCPUIString","briefingAdded","count","_el$19","_tmpl$6","briefingRemoved","_el$20","_tmpl$7","briefingChanged","For","each","change","cfg","type","_el$27","_tmpl$10","_el$28","_el$29","_el$30","_el$37","_el$38","_co$0","_el$39","_el$40","_co$1","_el$41","_el$42","_co$10","label","previous","current","_el$31","_tmpl$9","_el$32","_el$33","_el$34","_el$35","_tmpl$0","_el$36","_tmpl$1","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","undefined"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BriefingDiff.d.ts","sourceRoot":"","sources":["../../src/components/BriefingDiff.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"BriefingDiff.d.ts","sourceRoot":"","sources":["../../src/components/BriefingDiff.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,mBAAmB,CAAA;CAC7B;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,kCA+EpD"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getNextElement, getNextMarker, insert, createComponent, memo, effect, className, template } from "solid-js/web";
|
|
2
2
|
import { Show, For } from "solid-js";
|
|
3
|
-
|
|
3
|
+
import { useMCPUIStrings } from "../context/MCPUIStringsContext.js";
|
|
4
|
+
import { formatMCPUIString } from "../utils/format-string.js";
|
|
5
|
+
var _tmpl$ = /* @__PURE__ */ template(`<span class=font-medium>`), _tmpl$2 = /* @__PURE__ */ template(`<span><!$><!/> → <!$><!/>`), _tmpl$3 = /* @__PURE__ */ template(`<div class="flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"><!$><!/><!$><!/>`), _tmpl$4 = /* @__PURE__ */ template(`<div class="briefing-diff space-y-2"><!$><!/><!$><!/><div class=space-y-1>`), _tmpl$5 = /* @__PURE__ */ template(`<span class="text-green-600 dark:text-green-400">`), _tmpl$6 = /* @__PURE__ */ template(`<span class="text-red-600 dark:text-red-400">`), _tmpl$7 = /* @__PURE__ */ template(`<span class="text-amber-600 dark:text-amber-400">`), _tmpl$8 = /* @__PURE__ */ template(`<div class="flex items-center gap-3 text-xs"><!$><!/><!$><!/><!$><!/>`), _tmpl$9 = /* @__PURE__ */ template(`<div class="mt-0.5 text-xs"><span class="text-red-500 line-through"></span><span class="mx-1 text-gray-400">→</span><span class="text-green-600 dark:text-green-400">`), _tmpl$0 = /* @__PURE__ */ template(`<div class="mt-0.5 text-xs text-gray-600 dark:text-gray-400">`), _tmpl$1 = /* @__PURE__ */ template(`<div class="mt-0.5 text-xs text-gray-500 line-through">`), _tmpl$10 = /* @__PURE__ */ template(`<div><span></span><div class="flex-1 min-w-0"><span></span><!$><!/><!$><!/><!$><!/>`);
|
|
4
6
|
const CHANGE_CONFIG = {
|
|
5
7
|
added: {
|
|
6
8
|
icon: "+",
|
|
@@ -19,6 +21,7 @@ const CHANGE_CONFIG = {
|
|
|
19
21
|
}
|
|
20
22
|
};
|
|
21
23
|
function BriefingDiff(props) {
|
|
24
|
+
const strings = useMCPUIStrings();
|
|
22
25
|
const c = () => props.content;
|
|
23
26
|
if (typeof console !== "undefined") {
|
|
24
27
|
console.info("[MCP-UI:BriefingDiff] mounted", {
|
|
@@ -63,40 +66,43 @@ function BriefingDiff(props) {
|
|
|
63
66
|
return c().stats;
|
|
64
67
|
},
|
|
65
68
|
children: (stats) => (() => {
|
|
66
|
-
var _el$17 = getNextElement(_tmpl$8), _el$
|
|
69
|
+
var _el$17 = getNextElement(_tmpl$8), _el$21 = _el$17.firstChild, [_el$22, _co$7] = getNextMarker(_el$21.nextSibling), _el$23 = _el$22.nextSibling, [_el$24, _co$8] = getNextMarker(_el$23.nextSibling), _el$25 = _el$24.nextSibling, [_el$26, _co$9] = getNextMarker(_el$25.nextSibling);
|
|
67
70
|
insert(_el$17, createComponent(Show, {
|
|
68
71
|
get when() {
|
|
69
72
|
return stats().added > 0;
|
|
70
73
|
},
|
|
71
74
|
get children() {
|
|
72
|
-
var _el$18 = getNextElement(_tmpl$5)
|
|
73
|
-
_el$
|
|
74
|
-
|
|
75
|
+
var _el$18 = getNextElement(_tmpl$5);
|
|
76
|
+
insert(_el$18, () => formatMCPUIString(strings.briefingAdded, {
|
|
77
|
+
count: stats().added
|
|
78
|
+
}));
|
|
75
79
|
return _el$18;
|
|
76
80
|
}
|
|
77
|
-
}), _el$
|
|
81
|
+
}), _el$22, _co$7);
|
|
78
82
|
insert(_el$17, createComponent(Show, {
|
|
79
83
|
get when() {
|
|
80
84
|
return stats().removed > 0;
|
|
81
85
|
},
|
|
82
86
|
get children() {
|
|
83
|
-
var _el$
|
|
84
|
-
_el$
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
var _el$19 = getNextElement(_tmpl$6);
|
|
88
|
+
insert(_el$19, () => formatMCPUIString(strings.briefingRemoved, {
|
|
89
|
+
count: stats().removed
|
|
90
|
+
}));
|
|
91
|
+
return _el$19;
|
|
87
92
|
}
|
|
88
|
-
}), _el$
|
|
93
|
+
}), _el$24, _co$8);
|
|
89
94
|
insert(_el$17, createComponent(Show, {
|
|
90
95
|
get when() {
|
|
91
96
|
return stats().changed > 0;
|
|
92
97
|
},
|
|
93
98
|
get children() {
|
|
94
|
-
var _el$
|
|
95
|
-
_el$
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
var _el$20 = getNextElement(_tmpl$7);
|
|
100
|
+
insert(_el$20, () => formatMCPUIString(strings.briefingChanged, {
|
|
101
|
+
count: stats().changed
|
|
102
|
+
}));
|
|
103
|
+
return _el$20;
|
|
98
104
|
}
|
|
99
|
-
}), _el$
|
|
105
|
+
}), _el$26, _co$9);
|
|
100
106
|
return _el$17;
|
|
101
107
|
})()
|
|
102
108
|
}), _el$16, _co$6);
|
|
@@ -107,52 +113,52 @@ function BriefingDiff(props) {
|
|
|
107
113
|
children: (change) => {
|
|
108
114
|
const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed;
|
|
109
115
|
return (() => {
|
|
110
|
-
var _el$
|
|
111
|
-
insert(_el$
|
|
112
|
-
insert(_el$
|
|
113
|
-
insert(_el$
|
|
116
|
+
var _el$27 = getNextElement(_tmpl$10), _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$29.firstChild, _el$37 = _el$30.nextSibling, [_el$38, _co$0] = getNextMarker(_el$37.nextSibling), _el$39 = _el$38.nextSibling, [_el$40, _co$1] = getNextMarker(_el$39.nextSibling), _el$41 = _el$40.nextSibling, [_el$42, _co$10] = getNextMarker(_el$41.nextSibling);
|
|
117
|
+
insert(_el$28, () => cfg.icon);
|
|
118
|
+
insert(_el$30, () => change.label);
|
|
119
|
+
insert(_el$29, createComponent(Show, {
|
|
114
120
|
get when() {
|
|
115
121
|
return memo(() => !!(change.type === "changed" && change.previous))() && change.current;
|
|
116
122
|
},
|
|
117
123
|
get children() {
|
|
118
|
-
var _el$
|
|
119
|
-
insert(_el$
|
|
120
|
-
insert(_el$
|
|
121
|
-
return _el$
|
|
124
|
+
var _el$31 = getNextElement(_tmpl$9), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$34 = _el$33.nextSibling;
|
|
125
|
+
insert(_el$32, () => change.previous);
|
|
126
|
+
insert(_el$34, () => change.current);
|
|
127
|
+
return _el$31;
|
|
122
128
|
}
|
|
123
|
-
}), _el$
|
|
124
|
-
insert(_el$
|
|
129
|
+
}), _el$38, _co$0);
|
|
130
|
+
insert(_el$29, createComponent(Show, {
|
|
125
131
|
get when() {
|
|
126
132
|
return memo(() => change.type === "added")() && change.current;
|
|
127
133
|
},
|
|
128
134
|
get children() {
|
|
129
|
-
var _el$
|
|
130
|
-
insert(_el$
|
|
131
|
-
return _el$
|
|
135
|
+
var _el$35 = getNextElement(_tmpl$0);
|
|
136
|
+
insert(_el$35, () => change.current);
|
|
137
|
+
return _el$35;
|
|
132
138
|
}
|
|
133
|
-
}), _el$
|
|
134
|
-
insert(_el$
|
|
139
|
+
}), _el$40, _co$1);
|
|
140
|
+
insert(_el$29, createComponent(Show, {
|
|
135
141
|
get when() {
|
|
136
142
|
return memo(() => change.type === "removed")() && change.previous;
|
|
137
143
|
},
|
|
138
144
|
get children() {
|
|
139
|
-
var _el$
|
|
140
|
-
insert(_el$
|
|
141
|
-
return _el$
|
|
145
|
+
var _el$36 = getNextElement(_tmpl$1);
|
|
146
|
+
insert(_el$36, () => change.previous);
|
|
147
|
+
return _el$36;
|
|
142
148
|
}
|
|
143
|
-
}), _el$
|
|
149
|
+
}), _el$42, _co$10);
|
|
144
150
|
effect((_p$) => {
|
|
145
151
|
var _v$ = `flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`, _v$2 = `flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`, _v$3 = `text-sm font-medium ${cfg.color}`;
|
|
146
|
-
_v$ !== _p$.e && className(_el$
|
|
147
|
-
_v$2 !== _p$.t && className(_el$
|
|
148
|
-
_v$3 !== _p$.a && className(_el$
|
|
152
|
+
_v$ !== _p$.e && className(_el$27, _p$.e = _v$);
|
|
153
|
+
_v$2 !== _p$.t && className(_el$28, _p$.t = _v$2);
|
|
154
|
+
_v$3 !== _p$.a && className(_el$30, _p$.a = _v$3);
|
|
149
155
|
return _p$;
|
|
150
156
|
}, {
|
|
151
157
|
e: void 0,
|
|
152
158
|
t: void 0,
|
|
153
159
|
a: void 0
|
|
154
160
|
});
|
|
155
|
-
return _el$
|
|
161
|
+
return _el$27;
|
|
156
162
|
})();
|
|
157
163
|
}
|
|
158
164
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BriefingDiff.js","sources":["../../src/components/BriefingDiff.tsx"],"sourcesContent":["/**\n * BriefingDiff — highlight changes between two briefings\n * v4.1.0: AITL sprint — added/removed/changed entries with color coding\n *\n * @experimental\n */\n\nimport { For, Show } from 'solid-js'\nimport type { BriefingDiffContent } from '../types/chat-bus'\n\nexport interface BriefingDiffProps {\n content: BriefingDiffContent\n}\n\nconst CHANGE_CONFIG: Record<string, { icon: string; color: string; bg: string }> = {\n added: { icon: '+', color: 'text-green-700 dark:text-green-300', bg: 'bg-green-50 dark:bg-green-900/10' },\n removed: { icon: '\\u2212', color: 'text-red-700 dark:text-red-300', bg: 'bg-red-50 dark:bg-red-900/10' },\n changed: { icon: '\\u2194', color: 'text-amber-700 dark:text-amber-300', bg: 'bg-amber-50 dark:bg-amber-900/10' },\n}\n\nexport function BriefingDiff(props: BriefingDiffProps) {\n const c = () => props.content\n\n if (typeof console !== 'undefined') {\n console.info('[MCP-UI:BriefingDiff] mounted', {\n changes: c().changes.length,\n stats: c().stats,\n })\n }\n\n return (\n <div class=\"briefing-diff space-y-2\">\n {/* Header */}\n <Show when={c().title || c().previousDate || c().currentDate}>\n <div class=\"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <Show when={c().title}><span class=\"font-medium\">{c().title}</span></Show>\n <Show when={c().previousDate && c().currentDate}>\n <span>{c().previousDate} → {c().currentDate}</span>\n </Show>\n </div>\n </Show>\n\n {/* Stats summary */}\n <Show when={c().stats}>\n {(stats) => (\n <div class=\"flex items-center gap-3 text-xs\">\n <Show when={stats().added > 0}>\n <span class=\"text-green-600 dark:text-green-400\">+{stats().added} added</span>\n </Show>\n <Show when={stats().removed > 0}>\n <span class=\"text-red-600 dark:text-red-400\">{stats().removed} removed</span>\n </Show>\n <Show when={stats().changed > 0}>\n <span class=\"text-amber-600 dark:text-amber-400\">{stats().changed} changed</span>\n </Show>\n </div>\n )}\n </Show>\n\n {/* Change list */}\n <div class=\"space-y-1\">\n <For each={c().changes}>\n {(change) => {\n const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed\n return (\n <div class={`flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`}>\n <span class={`flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`}>\n {cfg.icon}\n </span>\n <div class=\"flex-1 min-w-0\">\n <span class={`text-sm font-medium ${cfg.color}`}>{change.label}</span>\n <Show when={change.type === 'changed' && change.previous && change.current}>\n <div class=\"mt-0.5 text-xs\">\n <span class=\"text-red-500 line-through\">{change.previous}</span>\n <span class=\"mx-1 text-gray-400\">→</span>\n <span class=\"text-green-600 dark:text-green-400\">{change.current}</span>\n </div>\n </Show>\n <Show when={change.type === 'added' && change.current}>\n <div class=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400\">{change.current}</div>\n </Show>\n <Show when={change.type === 'removed' && change.previous}>\n <div class=\"mt-0.5 text-xs text-gray-500 line-through\">{change.previous}</div>\n </Show>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["CHANGE_CONFIG","added","icon","color","bg","removed","changed","BriefingDiff","props","c","content","console","info","changes","length","stats","_el$","_$getNextElement","_tmpl$4","_el$13","firstChild","_el$14","_co$5","_$getNextMarker","nextSibling","_el$15","_el$16","_co$6","_el$12","_$insert","_$createComponent","Show","when","title","previousDate","currentDate","children","_el$2","_tmpl$3","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_el$3","_tmpl$","_$memo","_el$4","_tmpl$2","_el$6","_el$7","_co$","_el$5","_el$8","_el$9","_co$2","_el$17","_tmpl$8","_el$31","_el$32","_co$0","_el$33","_el$34","_co$1","_el$35","_el$36","_co$10","_el$18","_tmpl$5","_el$19","_el$21","_el$22","_co$7","_el$23","_tmpl$6","_el$25","_el$26","_co$8","_el$27","_tmpl$7","_el$29","_el$30","_co$9","For","each","change","cfg","type","_el$37","_tmpl$10","_el$38","_el$39","_el$40","_el$47","_el$48","_co$11","_el$49","_el$50","_co$12","_el$51","_el$52","_co$13","label","previous","current","_el$41","_tmpl$9","_el$42","_el$43","_el$44","_el$45","_tmpl$0","_el$46","_tmpl$1","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BriefingDiff.js","sources":["../../src/components/BriefingDiff.tsx"],"sourcesContent":["/**\n * BriefingDiff — highlight changes between two briefings\n * v4.1.0: AITL sprint — added/removed/changed entries with color coding\n *\n * @experimental\n */\n\nimport { For, Show } from 'solid-js'\nimport type { BriefingDiffContent } from '../types/chat-bus'\nimport { formatMCPUIString, useMCPUIStrings } from '../context/MCPUIStringsContext'\n\nexport interface BriefingDiffProps {\n content: BriefingDiffContent\n}\n\nconst CHANGE_CONFIG: Record<string, { icon: string; color: string; bg: string }> = {\n added: { icon: '+', color: 'text-green-700 dark:text-green-300', bg: 'bg-green-50 dark:bg-green-900/10' },\n removed: { icon: '\\u2212', color: 'text-red-700 dark:text-red-300', bg: 'bg-red-50 dark:bg-red-900/10' },\n changed: { icon: '\\u2194', color: 'text-amber-700 dark:text-amber-300', bg: 'bg-amber-50 dark:bg-amber-900/10' },\n}\n\nexport function BriefingDiff(props: BriefingDiffProps) {\n const strings = useMCPUIStrings()\n const c = () => props.content\n\n if (typeof console !== 'undefined') {\n console.info('[MCP-UI:BriefingDiff] mounted', {\n changes: c().changes.length,\n stats: c().stats,\n })\n }\n\n return (\n <div class=\"briefing-diff space-y-2\">\n {/* Header */}\n <Show when={c().title || c().previousDate || c().currentDate}>\n <div class=\"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400\">\n <Show when={c().title}><span class=\"font-medium\">{c().title}</span></Show>\n <Show when={c().previousDate && c().currentDate}>\n <span>{c().previousDate} → {c().currentDate}</span>\n </Show>\n </div>\n </Show>\n\n {/* Stats summary */}\n <Show when={c().stats}>\n {(stats) => (\n <div class=\"flex items-center gap-3 text-xs\">\n <Show when={stats().added > 0}>\n <span class=\"text-green-600 dark:text-green-400\">\n {formatMCPUIString(strings.briefingAdded, { count: stats().added })}\n </span>\n </Show>\n <Show when={stats().removed > 0}>\n <span class=\"text-red-600 dark:text-red-400\">\n {formatMCPUIString(strings.briefingRemoved, { count: stats().removed })}\n </span>\n </Show>\n <Show when={stats().changed > 0}>\n <span class=\"text-amber-600 dark:text-amber-400\">\n {formatMCPUIString(strings.briefingChanged, { count: stats().changed })}\n </span>\n </Show>\n </div>\n )}\n </Show>\n\n {/* Change list */}\n <div class=\"space-y-1\">\n <For each={c().changes}>\n {(change) => {\n const cfg = CHANGE_CONFIG[change.type] || CHANGE_CONFIG.changed\n return (\n <div class={`flex items-start gap-2 px-2 py-1.5 rounded ${cfg.bg}`}>\n <span class={`flex-shrink-0 w-5 h-5 rounded-full flex items-center justify-center text-xs font-bold ${cfg.color}`}>\n {cfg.icon}\n </span>\n <div class=\"flex-1 min-w-0\">\n <span class={`text-sm font-medium ${cfg.color}`}>{change.label}</span>\n <Show when={change.type === 'changed' && change.previous && change.current}>\n <div class=\"mt-0.5 text-xs\">\n <span class=\"text-red-500 line-through\">{change.previous}</span>\n <span class=\"mx-1 text-gray-400\">→</span>\n <span class=\"text-green-600 dark:text-green-400\">{change.current}</span>\n </div>\n </Show>\n <Show when={change.type === 'added' && change.current}>\n <div class=\"mt-0.5 text-xs text-gray-600 dark:text-gray-400\">{change.current}</div>\n </Show>\n <Show when={change.type === 'removed' && change.previous}>\n <div class=\"mt-0.5 text-xs text-gray-500 line-through\">{change.previous}</div>\n </Show>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n </div>\n )\n}\n"],"names":["CHANGE_CONFIG","added","icon","color","bg","removed","changed","BriefingDiff","props","strings","useMCPUIStrings","c","content","console","info","changes","length","stats","_el$","_$getNextElement","_tmpl$4","_el$13","firstChild","_el$14","_co$5","_$getNextMarker","nextSibling","_el$15","_el$16","_co$6","_el$12","_$insert","_$createComponent","Show","when","title","previousDate","currentDate","children","_el$2","_tmpl$3","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_el$3","_tmpl$","_$memo","_el$4","_tmpl$2","_el$6","_el$7","_co$","_el$5","_el$8","_el$9","_co$2","_el$17","_tmpl$8","_el$21","_el$22","_co$7","_el$23","_el$24","_co$8","_el$25","_el$26","_co$9","_el$18","_tmpl$5","formatMCPUIString","briefingAdded","count","_el$19","_tmpl$6","briefingRemoved","_el$20","_tmpl$7","briefingChanged","For","each","change","cfg","type","_el$27","_tmpl$10","_el$28","_el$29","_el$30","_el$37","_el$38","_co$0","_el$39","_el$40","_co$1","_el$41","_el$42","_co$10","label","previous","current","_el$31","_tmpl$9","_el$32","_el$33","_el$34","_el$35","_tmpl$0","_el$36","_tmpl$1","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","undefined"],"mappings":"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"}
|
|
@@ -4,8 +4,10 @@ const web = require("solid-js/web");
|
|
|
4
4
|
const solidJs = require("solid-js");
|
|
5
5
|
const RenderContext = require("./RenderContext.cjs");
|
|
6
6
|
const ExpandableWrapper = require("./ExpandableWrapper.cjs");
|
|
7
|
+
const MCPUIStringsContext = require("../context/MCPUIStringsContext.cjs");
|
|
7
8
|
var _tmpl$ = /* @__PURE__ */ web.template(`<div><button><svg class="w-5 h-5 text-gray-700 dark:text-gray-300"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M15 19l-7-7 7-7"></path></svg></button><button><svg class="w-5 h-5 text-gray-700 dark:text-gray-300"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M9 5l7 7-7 7"></path></svg></button><div class="flex gap-4 overflow-x-auto snap-x snap-mandatory pb-4 scrollbar-hide"style=scroll-behavior:smooth>`), _tmpl$2 = /* @__PURE__ */ web.template(`<div class="flex-none w-[85%] sm:w-[45%] snap-center"><div class="h-full border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden bg-white dark:bg-gray-800">`);
|
|
8
9
|
const CarouselRenderer = (props) => {
|
|
10
|
+
const strings = MCPUIStringsContext.useMCPUIStrings();
|
|
9
11
|
let scrollContainer;
|
|
10
12
|
const [canScrollLeft, setCanScrollLeft] = solidJs.createSignal(false);
|
|
11
13
|
const [canScrollRight, setCanScrollRight] = solidJs.createSignal(true);
|
|
@@ -27,11 +29,15 @@ const CarouselRenderer = (props) => {
|
|
|
27
29
|
});
|
|
28
30
|
};
|
|
29
31
|
return web.createComponent(ExpandableWrapper.ExpandableWrapper, {
|
|
30
|
-
title
|
|
32
|
+
get title() {
|
|
33
|
+
return strings.carouselTitle;
|
|
34
|
+
},
|
|
31
35
|
get copyData() {
|
|
32
36
|
return JSON.stringify(props.items, null, 2);
|
|
33
37
|
},
|
|
34
|
-
copyLabel
|
|
38
|
+
get copyLabel() {
|
|
39
|
+
return strings.carouselCopy;
|
|
40
|
+
},
|
|
35
41
|
get toolbarVariant() {
|
|
36
42
|
return props.toolbarVariant;
|
|
37
43
|
},
|