@flikk/ui 1.0.0-beta.30 → 1.0.0-beta.32
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 +375 -5
- package/dist/components/ai/AgentRequest/AgentRequest.animations.d.ts +25 -0
- package/dist/components/ai/AgentRequest/AgentRequest.animations.js +81 -0
- package/dist/components/ai/AgentRequest/AgentRequest.d.ts +3 -0
- package/dist/components/ai/AgentRequest/AgentRequest.js +435 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.d.ts +2 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.js +106 -0
- package/dist/components/ai/AgentRequest/AgentRequest.types.d.ts +241 -0
- package/dist/components/ai/AgentRequest/index.d.ts +3 -0
- package/dist/components/ai/AgentStatus/AgentStatus.d.ts +3 -0
- package/dist/components/ai/AgentStatus/AgentStatus.js +144 -0
- package/dist/components/ai/AgentStatus/AgentStatus.theme.d.ts +2 -0
- package/dist/components/ai/AgentStatus/AgentStatus.theme.js +37 -0
- package/dist/components/ai/AgentStatus/AgentStatus.types.d.ts +116 -0
- package/dist/components/ai/AgentStatus/index.d.ts +3 -0
- package/dist/components/ai/CodeBlock/CodeBlock.js +3 -3
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
- package/dist/components/ai/PromptInput/PromptInput.js +13 -14
- package/dist/components/ai/PromptInput/PromptInput.theme.js +3 -3
- package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -3
- package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
- package/dist/components/ai/Reasoning/Reasoning.d.ts +5 -0
- package/dist/components/ai/Reasoning/Reasoning.js +40 -0
- package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
- package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
- package/dist/components/ai/Reasoning/Reasoning.types.d.ts +73 -0
- package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
- package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
- package/dist/components/ai/Reasoning/index.d.ts +3 -0
- package/dist/components/ai/SourceCitation/SourceCitation.d.ts +4 -0
- package/dist/components/ai/SourceCitation/SourceCitation.js +29 -0
- package/dist/components/ai/SourceCitation/SourceCitation.theme.d.ts +2 -0
- package/dist/components/ai/SourceCitation/SourceCitation.theme.js +23 -0
- package/dist/components/ai/SourceCitation/SourceCitation.types.d.ts +55 -0
- package/dist/components/ai/SourceCitation/index.d.ts +3 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.d.ts +7 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
- package/dist/components/ai/StreamingResponse/ErrorDisplay.js +2 -2
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
- package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +14 -10
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +3 -1
- package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
- package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
- package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
- package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
- package/dist/components/ai/TokenCounter/TokenCounter.js +2 -2
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/ai/index.d.ts +6 -2
- package/dist/components/ai/index.js +10 -3
- package/dist/components/ai/shared/StatusIndicator.d.ts +8 -0
- package/dist/components/ai/shared/StatusIndicator.js +34 -0
- package/dist/components/canvas/BaseNode.js +1 -1
- package/dist/components/canvas/CanvasToolbar.js +2 -3
- package/dist/components/canvas/Edge.js +2 -2
- package/dist/components/canvas/NodeControls.js +2 -3
- package/dist/components/canvas/NodeRenderer.js +4 -4
- package/dist/components/charts/ActivityRings/ActivityRings.js +4 -4
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
- package/dist/components/charts/AreaChart/AreaChart.js +24 -35
- package/dist/components/charts/AreaChart/AreaChart.theme.d.ts +1 -6
- package/dist/components/charts/AreaChart/AreaChart.theme.js +10 -22
- package/dist/components/charts/AreaChart/AreaChart.types.d.ts +18 -11
- package/dist/components/charts/AreaChart/AreaChart.types.js +10 -3
- package/dist/components/charts/AreaChart/index.d.ts +1 -1
- package/dist/components/charts/BarChart/BarChart.js +13 -32
- package/dist/components/charts/BarChart/BarChart.types.d.ts +20 -16
- package/dist/components/charts/BarChart/BarChart.types.js +11 -4
- package/dist/components/charts/ComboChart/BarRenderer.js +10 -7
- package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
- package/dist/components/charts/ComboChart/ComboChart.js +11 -24
- package/dist/components/charts/ComboChart/ComboChart.types.d.ts +15 -13
- package/dist/components/charts/ComboChart/ComboChart.types.js +14 -2
- package/dist/components/charts/ComboChart/ComboChartCanvas.js +1 -1
- package/dist/components/charts/ComboChart/LineRenderer.js +16 -11
- package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
- package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
- package/dist/components/charts/Heatmap/Heatmap.js +49 -42
- package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
- package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
- package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
- package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
- package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
- package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
- package/dist/components/charts/Heatmap/index.d.ts +1 -1
- package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
- package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
- package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.d.ts +16 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +237 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.d.ts +62 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.js +21 -0
- package/dist/components/charts/HorizontalBarChart/index.d.ts +3 -0
- package/dist/components/charts/LineChart/LineChart.js +11 -28
- package/dist/components/charts/LineChart/LineChart.types.d.ts +11 -14
- package/dist/components/charts/LineChart/LineChart.types.js +11 -3
- package/dist/components/charts/LollipopChart/LollipopChart.d.ts +3 -0
- package/dist/components/charts/LollipopChart/LollipopChart.js +361 -0
- package/dist/components/charts/LollipopChart/LollipopChart.types.d.ts +42 -0
- package/dist/components/charts/LollipopChart/LollipopChart.types.js +12 -0
- package/dist/components/charts/LollipopChart/index.d.ts +3 -0
- package/dist/components/charts/RadarChart/RadarChart.js +1 -1
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +151 -133
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +20 -18
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +10 -4
- package/dist/components/charts/hooks/useChartAccessibility.d.ts +1 -1
- package/dist/components/charts/hooks/useChartAccessibility.js +12 -6
- package/dist/components/charts/hooks/useTooltipPosition.js +18 -6
- package/dist/components/charts/index.d.ts +10 -8
- package/dist/components/charts/index.js +8 -4
- package/dist/components/charts/shared/ChartAxis/CategoryYAxis.d.ts +14 -0
- package/dist/components/charts/shared/ChartAxis/CategoryYAxis.js +35 -0
- package/dist/components/charts/shared/ChartAxis/ChartAxis.types.d.ts +69 -8
- package/dist/components/charts/shared/ChartAxis/ValueXAxis.d.ts +14 -0
- package/dist/components/charts/shared/ChartAxis/ValueXAxis.js +64 -0
- package/dist/components/charts/shared/ChartAxis/XAxis.js +1 -1
- package/dist/components/charts/shared/ChartAxis/YAxis.js +2 -2
- package/dist/components/charts/shared/ChartAxis/index.d.ts +3 -1
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +0 -2
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +1 -1
- package/dist/components/charts/shared/ChartGrid/VerticalGrid.d.ts +29 -0
- package/dist/components/charts/shared/ChartGrid/VerticalGrid.js +26 -0
- package/dist/components/charts/shared/ChartGrid/index.d.ts +2 -0
- package/dist/components/charts/shared/ChartMarker/ChartMarker.js +7 -1
- package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
- package/dist/components/charts/shared/index.d.ts +1 -1
- package/dist/components/charts/theme/chart.theme.js +21 -26
- package/dist/components/charts/types/chart.types.d.ts +9 -5
- package/dist/components/charts/types/chart.types.js +1 -7
- package/dist/components/charts/utils/animation-utils.d.ts +12 -7
- package/dist/components/charts/utils/animation-utils.js +19 -21
- package/dist/components/charts/utils/bar-emphasis.d.ts +32 -3
- package/dist/components/charts/utils/bar-emphasis.js +24 -8
- package/dist/components/charts/utils/index.d.ts +1 -0
- package/dist/components/charts/utils/series-color.d.ts +7 -0
- package/dist/components/charts/utils/series-color.js +20 -0
- package/dist/components/core/Accordion/Accordion.theme.js +3 -3
- package/dist/components/core/Accordion/AccordionTrigger.js +2 -2
- package/dist/components/core/Alert/Alert.animations.d.ts +11 -3
- package/dist/components/core/Alert/Alert.animations.js +30 -8
- package/dist/components/core/Alert/Alert.js +23 -9
- package/dist/components/core/Alert/Alert.theme.js +1 -1
- package/dist/components/core/Alert/Alert.types.d.ts +4 -2
- package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
- package/dist/components/core/Avatar/Avatar.js +50 -42
- package/dist/components/core/Avatar/Avatar.theme.d.ts +8 -4
- package/dist/components/core/Avatar/Avatar.theme.js +64 -8
- package/dist/components/core/Avatar/Avatar.types.d.ts +13 -2
- package/dist/components/core/Avatar/index.d.ts +1 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.js +6 -8
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -2
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +2 -6
- package/dist/components/core/AvatarGroup/AvatarGroup.types.d.ts +0 -6
- package/dist/components/core/AvatarGroup/index.d.ts +1 -1
- package/dist/components/core/Badge/Badge.animations.d.ts +0 -5
- package/dist/components/core/Badge/Badge.animations.js +5 -82
- package/dist/components/core/Badge/Badge.d.ts +7 -4
- package/dist/components/core/Badge/Badge.js +33 -65
- package/dist/components/core/Badge/Badge.theme.js +26 -24
- package/dist/components/core/Badge/Badge.types.d.ts +18 -34
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.d.ts +1 -4
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +6 -6
- package/dist/components/core/Button/Button.js +14 -58
- package/dist/components/core/Button/Button.theme.d.ts +2 -0
- package/dist/components/core/Button/Button.theme.js +35 -22
- package/dist/components/core/Button/Button.types.d.ts +26 -13
- package/dist/components/core/Button/index.d.ts +0 -2
- package/dist/components/core/Calendar/Calendar.js +20 -5
- package/dist/components/core/Calendar/Calendar.theme.js +15 -23
- package/dist/components/core/Calendar/Calendar.types.d.ts +0 -1
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -3
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
- package/dist/components/core/Card/Card.js +7 -2
- package/dist/components/core/Card/Card.theme.js +40 -4
- package/dist/components/core/Card/Card.types.d.ts +20 -0
- package/dist/components/core/Card/CardBody.js +9 -1
- package/dist/components/core/Card/CardContext.d.ts +13 -0
- package/dist/components/core/Card/CardContext.js +14 -0
- package/dist/components/core/Card/CardFooter.js +1 -1
- package/dist/components/core/Card/CardHeader.js +4 -1
- package/dist/components/core/CommandPalette/CommandPalette.js +5 -4
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -7
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -0
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +4 -3
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
- package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
- package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
- package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
- package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +22 -9
- package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
- package/dist/components/core/Drawer/Drawer.theme.js +7 -4
- package/dist/components/core/Drawer/DrawerHeader.js +2 -3
- package/dist/components/core/Dropdown/Dropdown.theme.js +3 -1
- package/dist/components/core/Dropdown/DropdownItem.js +2 -2
- package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
- package/dist/components/core/Dropdown/DropdownTrigger.js +16 -5
- package/dist/components/core/HeroCard/HeroCard.theme.js +5 -2
- package/dist/components/core/Kbd/Kbd.theme.js +4 -2
- package/dist/components/core/Link/Link.js +7 -5
- package/dist/components/core/Masonry/Masonry.theme.js +1 -1
- package/dist/components/core/MenuItem/MenuItem.js +2 -1
- package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
- package/dist/components/core/Message/Message.js +4 -2
- package/dist/components/core/Message/Message.theme.js +8 -10
- package/dist/components/core/Message/MessageAudio.js +2 -2
- package/dist/components/core/Message/MessageFile.js +2 -2
- package/dist/components/core/Message/MessageLink.js +2 -2
- package/dist/components/core/Message/MessageStatusIndicator.js +5 -5
- package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
- package/dist/components/core/Modal/Modal.animations.js +50 -11
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +6 -2
- package/dist/components/core/Modal/Modal.theme.js +9 -4
- package/dist/components/core/Modal/ModalHeader.js +2 -3
- package/dist/components/core/ModalStack/ModalStackModal.js +4 -2
- package/dist/components/core/NavItem/NavItem.js +8 -7
- package/dist/components/core/NavItem/NavItem.theme.js +1 -1
- package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.d.ts +22 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.js +54 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.js +23 -24
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +27 -6
- package/dist/components/core/OfflineIndicator/OfflineIndicator.types.d.ts +17 -0
- package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
- package/dist/components/core/PageHeading/PageHeadingBackButton.js +2 -2
- package/dist/components/core/Pagination/Pagination.js +3 -3
- package/dist/components/core/Pagination/Pagination.theme.js +5 -5
- package/dist/components/core/Pill/Pill.js +5 -2
- package/dist/components/core/Pill/Pill.theme.js +9 -5
- package/dist/components/core/Popover/PopoverBody.js +16 -5
- package/dist/components/core/Progress/Progress.d.ts +0 -25
- package/dist/components/core/Progress/Progress.js +79 -11
- package/dist/components/core/Progress/Progress.theme.js +17 -0
- package/dist/components/core/Progress/Progress.types.d.ts +47 -1
- package/dist/components/core/Rating/Rating.js +4 -5
- package/dist/components/core/Rating/Rating.theme.js +2 -2
- package/dist/components/core/Rating/Rating.types.d.ts +3 -2
- package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
- package/dist/components/core/Segmented/Segmented.theme.js +10 -7
- package/dist/components/core/Segmented/SegmentedContext.js +1 -0
- package/dist/components/core/Sidebar/Sidebar.js +5 -2
- package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
- package/dist/components/core/Sidebar/Sidebar.types.d.ts +4 -2
- package/dist/components/core/Sidebar/SidebarContent.js +1 -1
- package/dist/components/core/Sidebar/SidebarHeader.js +3 -3
- package/dist/components/core/Sidebar/SidebarMobileTrigger.js +2 -2
- package/dist/components/core/Sidebar/SidebarSearch.js +4 -4
- package/dist/components/core/Sidebar/SidebarToggle.js +3 -3
- package/dist/components/core/Sidebar/SidebarUserProfile.js +3 -3
- package/dist/components/core/Sortable/Sortable.js +2 -2
- package/dist/components/core/Sortable/Sortable.theme.js +1 -1
- package/dist/components/core/Tabs/Tabs.theme.js +1 -1
- package/dist/components/core/Tag/Tag.js +2 -2
- package/dist/components/core/Tag/Tag.theme.js +5 -3
- package/dist/components/core/Toast/Toast.js +3 -3
- package/dist/components/core/Toast/Toast.types.d.ts +1 -1
- package/dist/components/core/Toast/ToastProvider.js +1 -1
- package/dist/components/core/Toast/useToast.js +5 -5
- package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/core/Tooltip/Tooltip.js +42 -10
- package/dist/components/core/Tooltip/Tooltip.types.d.ts +25 -0
- package/dist/components/core/Tree/Tree.js +2 -2
- package/dist/components/core/Tree/Tree.theme.js +1 -1
- package/dist/components/core/index.d.ts +0 -2
- package/dist/components/core/index.js +0 -4
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
- package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
- package/dist/components/core/shared/Ripple.d.ts +16 -0
- package/dist/components/core/shared/Ripple.js +141 -0
- package/dist/components/core/shared/interaction.animations.d.ts +51 -0
- package/dist/components/core/shared/interaction.animations.js +59 -0
- package/dist/components/data-display/Feed/Feed.js +2 -2
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +7 -7
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +3 -3
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -3
- package/dist/components/data-display/KPI/KPI.js +12 -21
- package/dist/components/data-display/KPI/KPI.theme.js +8 -4
- package/dist/components/data-display/Metric/Metric.js +2 -2
- package/dist/components/data-display/Metric/Metric.theme.js +25 -8
- package/dist/components/data-display/Metric/Metric.types.d.ts +1 -1
- package/dist/components/data-display/Table/Table.theme.js +11 -11
- package/dist/components/data-display/Table/TableActions.js +2 -2
- package/dist/components/data-display/Table/TableActionsMenu.js +1 -1
- package/dist/components/data-display/Table/TableColumnManager.js +2 -3
- package/dist/components/data-display/Table/TableContext.js +1 -0
- package/dist/components/data-display/Table/TableDeclarative.js +3 -3
- package/dist/components/data-display/Table/TableFilter.js +13 -6
- package/dist/components/data-display/Table/TableHeader.js +3 -3
- package/dist/components/data-display/Table/TableRow.js +2 -2
- package/dist/components/data-display/Table/TableSelectionHeader.js +4 -4
- package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
- package/dist/components/data-display/Timeline/TimelineMarker.js +2 -2
- package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.js +3 -3
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
- package/dist/components/effects/DotPattern/DotPattern.js +6 -0
- package/dist/components/effects/DotPattern/DotPattern.types.d.ts +4 -2
- package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +1 -1
- package/dist/components/effects/MeshGradient/MeshGradient.utils.js +1 -1
- package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
- package/dist/components/effects/Overlay/Overlay.js +7 -3
- package/dist/components/effects/index.d.ts +0 -32
- package/dist/components/effects/index.js +0 -16
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
- package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
- package/dist/components/effects/shared/index.d.ts +1 -3
- package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
- package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
- package/dist/components/forms/Checkbox/Checkbox.js +2 -1
- package/dist/components/forms/Checkbox/Checkbox.theme.js +3 -3
- package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerGradient.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerHeader.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerImage.js +3 -3
- package/dist/components/forms/ColorPicker/ColorPickerInput.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerPresets.js +2 -2
- package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +2 -2
- package/dist/components/forms/Combobox/Combobox.js +5 -3
- package/dist/components/forms/Combobox/Combobox.theme.js +2 -2
- package/dist/components/forms/DatePicker/DatePicker.animations.js +16 -25
- package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
- package/dist/components/forms/DatePicker/DatePickerBody.js +1 -1
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +4 -4
- package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
- package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -2
- package/dist/components/forms/FileUpload/FileUpload.js +4 -4
- package/dist/components/forms/FileUpload/FileUpload.theme.js +7 -3
- package/dist/components/forms/FileUpload/FileUploadProgress.js +7 -7
- package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
- package/dist/components/forms/Input/Input.js +6 -7
- package/dist/components/forms/Input/Input.theme.js +19 -15
- package/dist/components/forms/InputAddress/InputAddress.js +10 -3
- package/dist/components/forms/InputAddress/InputAddress.types.d.ts +2 -2
- package/dist/components/forms/InputCounter/InputCounter.js +3 -3
- package/dist/components/forms/InputOTP/InputOTP.d.ts +3 -12
- package/dist/components/forms/InputOTP/InputOTP.js +140 -151
- package/dist/components/forms/InputOTP/InputOTP.theme.d.ts +5 -1
- package/dist/components/forms/InputOTP/InputOTP.theme.js +40 -5
- package/dist/components/forms/InputOTP/InputOTP.types.d.ts +45 -2
- package/dist/components/forms/InputOTP/index.d.ts +1 -1
- package/dist/components/forms/InputTag/InputTag.js +5 -5
- package/dist/components/forms/InputTag/InputTag.theme.js +1 -2
- package/dist/components/forms/Mention/Mention.theme.js +3 -5
- package/dist/components/forms/Radio/Radio.js +3 -2
- package/dist/components/forms/Radio/Radio.theme.js +3 -3
- package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1681
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
- package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
- package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
- package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
- package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
- package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
- package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
- package/dist/components/forms/RichTextEditor/editorState.js +103 -0
- package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
- package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
- package/dist/components/forms/Select/Select.d.ts +5 -1
- package/dist/components/forms/Select/Select.js +14 -13
- package/dist/components/forms/Select/Select.theme.js +4 -4
- package/dist/components/forms/Select/Select.types.d.ts +74 -8
- package/dist/components/forms/Select/useSelectState.d.ts +9 -3
- package/dist/components/forms/Select/useSelectState.js +4 -1
- package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +1 -2
- package/dist/components/forms/SelectableCard/SelectableCard.animations.js +6 -7
- package/dist/components/forms/SelectableCard/SelectableCard.js +3 -2
- package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
- package/dist/components/forms/Signature/Signature.js +1 -1
- package/dist/components/forms/Slider/Slider.js +24 -11
- package/dist/components/forms/Slider/Slider.theme.js +9 -3
- package/dist/components/forms/Switch/Switch.theme.js +3 -3
- package/dist/components/forms/TimePicker/TimePicker.theme.js +7 -8
- package/dist/components/forms/TimePicker/TimePickerContent.js +1 -1
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +3 -3
- package/dist/components/forms/forms.theme.js +38 -13
- package/dist/components/forms/index.js +2 -1
- package/dist/components/generative/FormShell.d.ts +22 -0
- package/dist/components/generative/FormShell.js +102 -0
- package/dist/components/generative/GenerativeView.d.ts +52 -1
- package/dist/components/generative/GenerativeView.js +203 -11
- package/dist/components/generative/actions.d.ts +5 -0
- package/dist/components/generative/ai-sdk/index.d.ts +1 -0
- package/dist/components/generative/ai-sdk/index.js +1 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
- package/dist/components/generative/fieldBinding.d.ts +31 -0
- package/dist/components/generative/fieldBinding.js +33 -0
- package/dist/components/generative/fieldBinding.test.d.ts +1 -0
- package/dist/components/generative/formScope.d.ts +71 -0
- package/dist/components/generative/formScope.js +135 -0
- package/dist/components/generative/index.d.ts +4 -0
- package/dist/components/generative/index.js +4 -0
- package/dist/components/generative/registry.d.ts +2 -0
- package/dist/components/generative/registry.js +197 -4
- package/dist/components/generative/resolvers.js +16 -16
- package/dist/components/generative/schema.generated.js +2522 -328
- package/dist/components/generative/toToolResult.d.ts +21 -0
- package/dist/components/generative/toToolResult.js +15 -0
- package/dist/components/generative/toToolResult.test.d.ts +1 -0
- package/dist/components/generative/validate.d.ts +10 -1
- package/dist/components/generative/validate.js +126 -11
- package/dist/components/layout/Grid/Grid.js +1 -0
- package/dist/components/layout/Section/Section.theme.js +1 -1
- package/dist/components/layout/Stack/Stack.js +1 -0
- package/dist/generative.schema.json +2522 -328
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useElapsedTime.d.ts +28 -0
- package/dist/hooks/useElapsedTime.js +37 -0
- package/dist/hooks/useSelectPortal.d.ts +10 -2
- package/dist/hooks/useSelectPortal.js +6 -3
- package/dist/index.js +2 -5
- package/dist/registry.json +3262 -2464
- package/dist/shadcn-compat.css +6 -6
- package/dist/styles/theme.test.d.ts +1 -0
- package/dist/styles.css +1 -1
- package/dist/test/render.d.ts +17 -0
- package/dist/theme.css +5 -1
- package/dist/themes/ember.css +131 -0
- package/dist/themes/iris.css +94 -0
- package/dist/themes/jade.css +139 -0
- package/dist/themes/precision.css +232 -0
- package/dist/tools.json +2557 -328
- package/dist/utils/colorUtils.d.ts +6 -6
- package/dist/utils/colorUtils.js +8 -8
- package/dist/utils/index.d.ts +0 -1
- package/package.json +39 -6
- package/src/global.scss +32 -28
- package/src/styles/theme.css +547 -176
- package/src/styles/theme.test.ts +119 -0
- package/tailwind.preset.cjs +66 -38
- package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
- package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
- package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
- package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
- package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
- package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
- package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
- package/dist/components/charts/FunnelChart/index.d.ts +0 -4
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -207
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -65
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -12
- package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
- package/dist/components/core/Button/Button.ripple.d.ts +0 -71
- package/dist/components/core/Button/Button.ripple.js +0 -236
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
- package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
- package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
- package/dist/components/core/CardStack/CardStack.d.ts +0 -3
- package/dist/components/core/CardStack/CardStack.js +0 -187
- package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
- package/dist/components/core/CardStack/CardStack.theme.js +0 -33
- package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
- package/dist/components/core/CardStack/index.d.ts +0 -7
- package/dist/components/core/Carousel/Carousel.d.ts +0 -3
- package/dist/components/core/Carousel/Carousel.js +0 -83
- package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
- package/dist/components/core/Carousel/Carousel.theme.js +0 -20
- package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
- package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselBody.js +0 -59
- package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
- package/dist/components/core/Carousel/CarouselContext.js +0 -13
- package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselItem.js +0 -11
- package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselNext.js +0 -16
- package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
- package/dist/components/core/Carousel/index.d.ts +0 -3
- package/dist/components/core/Pill/Pill.animations.d.ts +0 -32
- package/dist/components/core/Pill/Pill.animations.js +0 -16
- package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
- package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
- package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
- package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
- package/dist/components/effects/ColorPanels/index.d.ts +0 -2
- package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
- package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
- package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
- package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
- package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
- package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
- package/dist/components/effects/GlassEffect/index.d.ts +0 -2
- package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
- package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
- package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
- package/dist/components/effects/GlassSurface/index.d.ts +0 -2
- package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
- package/dist/components/effects/GodRays/GodRays.js +0 -68
- package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
- package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
- package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
- package/dist/components/effects/GodRays/GodRays.types.js +0 -3
- package/dist/components/effects/GodRays/index.d.ts +0 -2
- package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
- package/dist/components/effects/GridPattern/GridPattern.js +0 -65
- package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
- package/dist/components/effects/GridPattern/index.d.ts +0 -2
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
- package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
- package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
- package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
- package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
- package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
- package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
- package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
- package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
- package/dist/components/effects/ImageDithering/index.d.ts +0 -3
- package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
- package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
- package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
- package/dist/components/effects/MagneticElement/index.d.ts +0 -2
- package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
- package/dist/components/effects/Metaballs/Metaballs.js +0 -59
- package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
- package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
- package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
- package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
- package/dist/components/effects/Metaballs/index.d.ts +0 -2
- package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
- package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
- package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
- package/dist/components/effects/PaperTexture/index.d.ts +0 -2
- package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
- package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
- package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
- package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
- package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
- package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
- package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
- package/dist/components/effects/SmokeRing/index.d.ts +0 -2
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
- package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
- package/dist/components/effects/Water/Water.d.ts +0 -9
- package/dist/components/effects/Water/Water.js +0 -65
- package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
- package/dist/components/effects/Water/Water.shaders.js +0 -123
- package/dist/components/effects/Water/Water.types.d.ts +0 -25
- package/dist/components/effects/Water/index.d.ts +0 -2
- package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
- package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
- package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
- package/dist/components/effects/shared/imageUV.glsl.js +0 -26
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
- package/dist/utils/calendarUtils.d.ts +0 -60
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useChat } from "@ai-sdk/react";
|
|
2
|
+
import { ActionContext } from "../actions";
|
|
3
|
+
import { ActionDescriptor, UISpec } from "../types";
|
|
4
|
+
export interface UseGenerativeChatOptions {
|
|
5
|
+
/** Chat endpoint. Passed straight to the AI SDK's transport. @default "/api/chat" */
|
|
6
|
+
api?: string;
|
|
7
|
+
/** Tool name the model calls to render UI. @default GENERATIVE_TOOL.name */
|
|
8
|
+
toolName?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface UseGenerativeChatReturn {
|
|
11
|
+
/** The validated spec from the most recent render tool call. Empty array while nothing has streamed in yet. */
|
|
12
|
+
spec: UISpec;
|
|
13
|
+
/** Route this into <GenerativeView onAction={…} /> to close the loop. */
|
|
14
|
+
onAction: (action: ActionDescriptor, ctx: ActionContext) => void;
|
|
15
|
+
/**
|
|
16
|
+
* True while the render tool's arguments are still arriving — either the
|
|
17
|
+
* matched tool-call part's own `state` is `"input-streaming"`, or the chat
|
|
18
|
+
* as a whole is still streaming (`chat.status === "streaming"`, e.g. the
|
|
19
|
+
* tool call hasn't started yet but a response is in flight). False at rest
|
|
20
|
+
* (no messages, nothing in flight) and once the matched part has settled.
|
|
21
|
+
*
|
|
22
|
+
* NOT derived from `useGenerativeStream`'s own `complete` flag — see the
|
|
23
|
+
* note on `useGenerativeChat` below for why that signal is unusable here.
|
|
24
|
+
*/
|
|
25
|
+
streaming: boolean;
|
|
26
|
+
messages: ReturnType<typeof useChat>["messages"];
|
|
27
|
+
sendMessage: ReturnType<typeof useChat>["sendMessage"];
|
|
28
|
+
status: ReturnType<typeof useChat>["status"];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Wires the AI SDK's chat loop to the generative engine: feeds the render
|
|
32
|
+
* tool's arguments through `useGenerativeStream`, validates the result, and
|
|
33
|
+
* routes user interactions back to the model as a tool result.
|
|
34
|
+
*
|
|
35
|
+
* 🔴 Skeleton placeholders do NOT apply on this path. `useGenerativeStream` /
|
|
36
|
+
* `parseStreamingSpec` detect "still arriving" content by finding an unclosed
|
|
37
|
+
* bracket in raw, truncated JSON text — that's how `GenerativeView` gets to
|
|
38
|
+
* render `__skeleton__` placeholders mid-stream. But `@ai-sdk/react` never
|
|
39
|
+
* exposes that raw text: a streaming tool-call part's `input` is already a
|
|
40
|
+
* parsed `DeepPartial` snapshot, and `JSON.stringify`-ing it (the only way to
|
|
41
|
+
* satisfy `useGenerativeStream`'s string contract) always yields syntactically
|
|
42
|
+
* COMPLETE JSON, at every step. So `pending` is always `0` here, and content
|
|
43
|
+
* pops in whole as fields complete rather than reserving skeleton space for
|
|
44
|
+
* fields that haven't started. This is a real, accepted trade-off of the
|
|
45
|
+
* installed SDK's surface — not a bug — which is also why `streaming` below
|
|
46
|
+
* is derived from the tool-call part's own `state` / `chat.status`, and NOT
|
|
47
|
+
* from `useGenerativeStream`'s `complete` flag (which is always `true` here
|
|
48
|
+
* for the same reason `pending` is always `0`).
|
|
49
|
+
*
|
|
50
|
+
* Requires the optional peers `ai` and `@ai-sdk/react`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useGenerativeChat({ api, toolName, }?: UseGenerativeChatOptions): UseGenerativeChatReturn;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { useChat } from '@ai-sdk/react';
|
|
4
|
+
import { DefaultChatTransport } from 'ai';
|
|
5
|
+
import { GENERATIVE_TOOL } from '../tools.js';
|
|
6
|
+
import { toToolResult } from '../toToolResult.js';
|
|
7
|
+
import { useGenerativeStream } from '../useGenerativeStream.js';
|
|
8
|
+
import { validate } from '../validate.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Wires the AI SDK's chat loop to the generative engine: feeds the render
|
|
12
|
+
* tool's arguments through `useGenerativeStream`, validates the result, and
|
|
13
|
+
* routes user interactions back to the model as a tool result.
|
|
14
|
+
*
|
|
15
|
+
* 🔴 Skeleton placeholders do NOT apply on this path. `useGenerativeStream` /
|
|
16
|
+
* `parseStreamingSpec` detect "still arriving" content by finding an unclosed
|
|
17
|
+
* bracket in raw, truncated JSON text — that's how `GenerativeView` gets to
|
|
18
|
+
* render `__skeleton__` placeholders mid-stream. But `@ai-sdk/react` never
|
|
19
|
+
* exposes that raw text: a streaming tool-call part's `input` is already a
|
|
20
|
+
* parsed `DeepPartial` snapshot, and `JSON.stringify`-ing it (the only way to
|
|
21
|
+
* satisfy `useGenerativeStream`'s string contract) always yields syntactically
|
|
22
|
+
* COMPLETE JSON, at every step. So `pending` is always `0` here, and content
|
|
23
|
+
* pops in whole as fields complete rather than reserving skeleton space for
|
|
24
|
+
* fields that haven't started. This is a real, accepted trade-off of the
|
|
25
|
+
* installed SDK's surface — not a bug — which is also why `streaming` below
|
|
26
|
+
* is derived from the tool-call part's own `state` / `chat.status`, and NOT
|
|
27
|
+
* from `useGenerativeStream`'s `complete` flag (which is always `true` here
|
|
28
|
+
* for the same reason `pending` is always `0`).
|
|
29
|
+
*
|
|
30
|
+
* Requires the optional peers `ai` and `@ai-sdk/react`.
|
|
31
|
+
*/
|
|
32
|
+
function useGenerativeChat({ api = "/api/chat", toolName = GENERATIVE_TOOL.name, } = {}) {
|
|
33
|
+
const transport = React__default.useMemo(() => new DefaultChatTransport({ api }), [api]);
|
|
34
|
+
const chat = useChat({ transport });
|
|
35
|
+
// Most recent render tool call across the transcript, streaming or settled.
|
|
36
|
+
const match = React__default.useMemo(() => {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const staticType = `tool-${toolName}`;
|
|
39
|
+
for (let i = chat.messages.length - 1; i >= 0; i--) {
|
|
40
|
+
const parts = (_a = chat.messages[i].parts) !== null && _a !== void 0 ? _a : [];
|
|
41
|
+
for (let j = parts.length - 1; j >= 0; j--) {
|
|
42
|
+
const part = parts[j];
|
|
43
|
+
const isMatch = part.type === staticType || (part.type === "dynamic-tool" && part.toolName === toolName);
|
|
44
|
+
if (isMatch) {
|
|
45
|
+
return {
|
|
46
|
+
text: typeof part.input === "string" ? part.input : JSON.stringify((_b = part.input) !== null && _b !== void 0 ? _b : {}),
|
|
47
|
+
isStreaming: part.state === "input-streaming",
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { text: "", isStreaming: false };
|
|
53
|
+
}, [chat.messages, toolName]);
|
|
54
|
+
const stream = useGenerativeStream({ text: match.text });
|
|
55
|
+
const spec = React__default.useMemo(() => {
|
|
56
|
+
if (!stream.spec)
|
|
57
|
+
return [];
|
|
58
|
+
return validate(stream.spec).spec;
|
|
59
|
+
}, [stream.spec]);
|
|
60
|
+
const onAction = React__default.useCallback((action, ctx) => {
|
|
61
|
+
chat.sendMessage({ text: JSON.stringify(toToolResult(action, ctx)) });
|
|
62
|
+
}, [chat.sendMessage]);
|
|
63
|
+
return {
|
|
64
|
+
spec,
|
|
65
|
+
onAction,
|
|
66
|
+
streaming: match.isStreaming || chat.status === "streaming",
|
|
67
|
+
messages: chat.messages,
|
|
68
|
+
sendMessage: chat.sendMessage,
|
|
69
|
+
status: chat.status,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { useGenerativeChat };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { JSONValue } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* How one curated control exposes its value to the form scope.
|
|
4
|
+
*
|
|
5
|
+
* Hand-verified against each component's `.types.ts` — these contracts are NOT
|
|
6
|
+
* uniform and must never be inferred from the component name:
|
|
7
|
+
* - `Checkbox.value` / `Switch.value` are the HTML *value attribute*
|
|
8
|
+
* (Checkbox.types.ts:23 declares it REQUIRED); the state is `checked`.
|
|
9
|
+
* - `Input`/`Textarea` fire `onValueChange`; everything else fires `onChange`.
|
|
10
|
+
* - `Input`/`Textarea` inherit `value`/`defaultValue` from the native
|
|
11
|
+
* HTML attribute interfaces rather than declaring them.
|
|
12
|
+
*/
|
|
13
|
+
export interface FieldBinding {
|
|
14
|
+
/** Prop carrying the field's current value in controlled use. */
|
|
15
|
+
valueProp: string;
|
|
16
|
+
/** Prop carrying the seed value in uncontrolled use, when the control has one. */
|
|
17
|
+
defaultValueProp?: string;
|
|
18
|
+
/** Callback prop fired on change. Its first argument is the new value. */
|
|
19
|
+
changeProp: string;
|
|
20
|
+
/** The value this control considers "blank" for the `required` check. */
|
|
21
|
+
empty: JSONValue;
|
|
22
|
+
}
|
|
23
|
+
export declare const FIELD_BINDINGS: Record<string, FieldBinding>;
|
|
24
|
+
/**
|
|
25
|
+
* Look up a binding. Uses `Object.hasOwn` so inherited Object.prototype members
|
|
26
|
+
* ("constructor", "toString") resolve to undefined rather than a function —
|
|
27
|
+
* the same guard `validate.ts`'s `safeLookup` applies.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getFieldBinding(component: string): FieldBinding | undefined;
|
|
30
|
+
/** Is this value "blank" for the purposes of a `required` check? */
|
|
31
|
+
export declare function isEmptyValue(binding: FieldBinding, value: JSONValue | undefined): boolean;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const FIELD_BINDINGS = {
|
|
2
|
+
Input: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onValueChange", empty: "" },
|
|
3
|
+
Textarea: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onValueChange", empty: "" },
|
|
4
|
+
Select: { valueProp: "value", changeProp: "onChange", empty: "" },
|
|
5
|
+
Combobox: { valueProp: "value", changeProp: "onChange", empty: "" },
|
|
6
|
+
Checkbox: { valueProp: "checked", defaultValueProp: "defaultChecked", changeProp: "onChange", empty: false },
|
|
7
|
+
Switch: { valueProp: "checked", defaultValueProp: "defaultChecked", changeProp: "onChange", empty: false },
|
|
8
|
+
Slider: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onChange", empty: null },
|
|
9
|
+
InputOTP: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onChange", empty: "" },
|
|
10
|
+
TimePicker: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onChange", empty: "" },
|
|
11
|
+
InputDate: { valueProp: "value", changeProp: "onChange", empty: "" },
|
|
12
|
+
InputCounter: { valueProp: "value", changeProp: "onChange", empty: null },
|
|
13
|
+
InputTag: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onChange", empty: [] },
|
|
14
|
+
Rating: { valueProp: "value", defaultValueProp: "defaultValue", changeProp: "onChange", empty: 0 },
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Look up a binding. Uses `Object.hasOwn` so inherited Object.prototype members
|
|
18
|
+
* ("constructor", "toString") resolve to undefined rather than a function —
|
|
19
|
+
* the same guard `validate.ts`'s `safeLookup` applies.
|
|
20
|
+
*/
|
|
21
|
+
function getFieldBinding(component) {
|
|
22
|
+
return Object.hasOwn(FIELD_BINDINGS, component) ? FIELD_BINDINGS[component] : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Is this value "blank" for the purposes of a `required` check? */
|
|
25
|
+
function isEmptyValue(binding, value) {
|
|
26
|
+
if (value === undefined || value === null)
|
|
27
|
+
return true;
|
|
28
|
+
if (Array.isArray(binding.empty))
|
|
29
|
+
return Array.isArray(value) && value.length === 0;
|
|
30
|
+
return value === binding.empty;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { FIELD_BINDINGS, getFieldBinding, isEmptyValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FieldBinding } from "./fieldBinding";
|
|
3
|
+
import { JSONValue } from "./types";
|
|
4
|
+
/** One form's field values, keyed by field name. */
|
|
5
|
+
export type FormValues = Record<string, JSONValue>;
|
|
6
|
+
/** Every form in a spec, keyed by form id. */
|
|
7
|
+
export type GenerativeValues = Record<string, FormValues>;
|
|
8
|
+
export declare const REQUIRED_MESSAGE = "This field is required.";
|
|
9
|
+
interface FieldRegistration {
|
|
10
|
+
required?: boolean;
|
|
11
|
+
binding: FieldBinding;
|
|
12
|
+
/**
|
|
13
|
+
* The field's visible label, if it has one. Used only by `FormShell`'s error
|
|
14
|
+
* summary, so a blocked field is named the way the user sees it rather than
|
|
15
|
+
* by its submission key.
|
|
16
|
+
*/
|
|
17
|
+
label?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The field's initial value (spec seed or the binding's "empty"), committed
|
|
20
|
+
* to the scope on registration if nothing is held for this name yet. Kept
|
|
21
|
+
* separate from `setValue` so mounting a field doesn't fire `onValuesChange`
|
|
22
|
+
* before any user interaction — seeding is not a user-driven change.
|
|
23
|
+
*/
|
|
24
|
+
seed?: JSONValue;
|
|
25
|
+
}
|
|
26
|
+
export interface FormScopeValue {
|
|
27
|
+
formId: string;
|
|
28
|
+
getValue(name: string): JSONValue | undefined;
|
|
29
|
+
setValue(name: string, value: JSONValue): void;
|
|
30
|
+
/**
|
|
31
|
+
* The registered label for a field, if any. Read at render time by the
|
|
32
|
+
* error summary; safe because the scope's identity changes whenever
|
|
33
|
+
* `errors` does, so the summary always re-reads after a blocked submit.
|
|
34
|
+
*/
|
|
35
|
+
getLabel(name: string): string | undefined;
|
|
36
|
+
register(name: string, opts: FieldRegistration): void;
|
|
37
|
+
/** Drop a field that has unmounted, so its stale value never submits. */
|
|
38
|
+
unregister(name: string): void;
|
|
39
|
+
errors: Record<string, string>;
|
|
40
|
+
submit(): void;
|
|
41
|
+
}
|
|
42
|
+
export declare const FormScopeContext: React.Context<FormScopeValue | undefined>;
|
|
43
|
+
/** Nearest enclosing form scope, or undefined outside a Form. */
|
|
44
|
+
export declare function useFormScope(): FormScopeValue | undefined;
|
|
45
|
+
export interface UseFormScopeStateOptions {
|
|
46
|
+
formId: string;
|
|
47
|
+
/** Controlled values for THIS form. Presence switches to controlled mode. */
|
|
48
|
+
values?: FormValues;
|
|
49
|
+
/** Uncontrolled seed for THIS form. */
|
|
50
|
+
defaultValues?: FormValues;
|
|
51
|
+
onValuesChange?: (values: FormValues) => void;
|
|
52
|
+
onSubmit: (values: FormValues) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Called with EVERY invalid field name, in registration order, when submit
|
|
55
|
+
* is blocked. Deliberately the whole list rather than just the first: the
|
|
56
|
+
* per-field invalid treatment reaches only some controls (six of the
|
|
57
|
+
* thirteen render no focusable primary element at all — per-field focus
|
|
58
|
+
* isn't viable without a core-component change, a deferred follow-up, see
|
|
59
|
+
* FormShell.tsx — and Switch/Rating render no error text at all), so
|
|
60
|
+
* `FormShell` needs the full set to build the form-level error summary
|
|
61
|
+
* that covers all of them.
|
|
62
|
+
*/
|
|
63
|
+
onInvalid?: (invalidNames: string[]) => void;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The form state machine. Controlled when `values` is passed; otherwise it owns
|
|
67
|
+
* state seeded from `defaultValues`. Mode is derived per render and never
|
|
68
|
+
* stored (CLAUDE.md §9).
|
|
69
|
+
*/
|
|
70
|
+
export declare function useFormScopeState({ formId, values, defaultValues, onValuesChange, onSubmit, onInvalid, }: UseFormScopeStateOptions): FormScopeValue;
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { isEmptyValue } from './fieldBinding.js';
|
|
4
|
+
|
|
5
|
+
const REQUIRED_MESSAGE = "This field is required.";
|
|
6
|
+
/**
|
|
7
|
+
* Defense in depth for the values/errors bags below. `validate()` is the
|
|
8
|
+
* primary boundary (it rejects any field `name` that collides with
|
|
9
|
+
* `Object.prototype` before a spec ever reaches this scope), but a bag keyed
|
|
10
|
+
* by arbitrary field names is still one bad path away from resolving
|
|
11
|
+
* "toString"/"hasOwnProperty"/etc. to an INHERITED function instead of
|
|
12
|
+
* `undefined` for a key nobody ever set. A null-prototype object has no such
|
|
13
|
+
* chain — an unset key is always exactly `undefined`. Every bag update below
|
|
14
|
+
* goes through this rather than an object spread (`{ ...prev }` recreates a
|
|
15
|
+
* normal-prototype object, silently undoing the protection).
|
|
16
|
+
*/
|
|
17
|
+
function nullProtoBag(...sources) {
|
|
18
|
+
return Object.assign(Object.create(null), ...sources);
|
|
19
|
+
}
|
|
20
|
+
const FormScopeContext = React__default.createContext(undefined);
|
|
21
|
+
/** Nearest enclosing form scope, or undefined outside a Form. */
|
|
22
|
+
function useFormScope() {
|
|
23
|
+
return React__default.useContext(FormScopeContext);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The form state machine. Controlled when `values` is passed; otherwise it owns
|
|
27
|
+
* state seeded from `defaultValues`. Mode is derived per render and never
|
|
28
|
+
* stored (CLAUDE.md §9).
|
|
29
|
+
*/
|
|
30
|
+
function useFormScopeState({ formId, values, defaultValues, onValuesChange, onSubmit, onInvalid, }) {
|
|
31
|
+
const isControlled = values !== undefined;
|
|
32
|
+
const [internal, setInternal] = React__default.useState(() => nullProtoBag(defaultValues));
|
|
33
|
+
const [errors, setErrors] = React__default.useState(() => nullProtoBag());
|
|
34
|
+
const fields = React__default.useRef(new Map());
|
|
35
|
+
if (process.env.NODE_ENV !== "production") {
|
|
36
|
+
if (values !== undefined && defaultValues !== undefined) {
|
|
37
|
+
console.warn("[GenerativeView]: both `values` and `defaultValues` were provided — `values` wins.");
|
|
38
|
+
}
|
|
39
|
+
if (values !== undefined && !onValuesChange) {
|
|
40
|
+
console.warn("[GenerativeView]: `values` was provided without `onValuesChange` — fields will not update.");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// In controlled mode `values` is adopted VERBATIM — the consumer's own
|
|
44
|
+
// object, trusted as-given, never copied or re-prototyped. Copying it every
|
|
45
|
+
// render to null-proto it would break the referential equality the
|
|
46
|
+
// controlled contract depends on (a consumer diffing `values` between
|
|
47
|
+
// renders). `nullProtoBag` below therefore only ever touches the
|
|
48
|
+
// UNCONTROLLED bag this scope itself builds (`internal`/`errors`); it is
|
|
49
|
+
// NOT a defense against a hostile key in a controlled `values` object.
|
|
50
|
+
// `validate()` is the only boundary standing between a spec's field
|
|
51
|
+
// `name`s and a controlled consumer's bag — see CLAUDE.md §22 / the
|
|
52
|
+
// "limits of the defense-in-depth layer" note in the Task 6 report.
|
|
53
|
+
const current = isControlled ? values : internal;
|
|
54
|
+
// `current` is read during render; keep a ref so the stable callbacks below
|
|
55
|
+
// always see the latest bag without re-creating themselves every keystroke.
|
|
56
|
+
const currentRef = React__default.useRef(current);
|
|
57
|
+
currentRef.current = current;
|
|
58
|
+
const getValue = React__default.useCallback((name) => currentRef.current[name], []);
|
|
59
|
+
const getLabel = React__default.useCallback((name) => { var _a; return (_a = fields.current.get(name)) === null || _a === void 0 ? void 0 : _a.label; }, []);
|
|
60
|
+
const setValue = React__default.useCallback((name, value) => {
|
|
61
|
+
const next = nullProtoBag(currentRef.current, { [name]: value });
|
|
62
|
+
if (!isControlled) {
|
|
63
|
+
// Update the ref immediately (not just on the next render): React
|
|
64
|
+
// batches the setInternal below, so a second setValue call in the
|
|
65
|
+
// same synchronous block (e.g. two fields committed in one `act`)
|
|
66
|
+
// would otherwise read the pre-update snapshot and clobber this one.
|
|
67
|
+
currentRef.current = next;
|
|
68
|
+
setInternal(next);
|
|
69
|
+
}
|
|
70
|
+
onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(next);
|
|
71
|
+
setErrors((prev) => {
|
|
72
|
+
if (prev[name] === undefined)
|
|
73
|
+
return prev;
|
|
74
|
+
const nextErrors = nullProtoBag();
|
|
75
|
+
for (const [k, v] of Object.entries(prev)) {
|
|
76
|
+
if (k !== name)
|
|
77
|
+
nextErrors[k] = v;
|
|
78
|
+
}
|
|
79
|
+
return nextErrors;
|
|
80
|
+
});
|
|
81
|
+
}, [isControlled, onValuesChange]);
|
|
82
|
+
const register = React__default.useCallback((name, opts) => {
|
|
83
|
+
fields.current.set(name, opts);
|
|
84
|
+
// Commit the seed directly into internal state — never through
|
|
85
|
+
// `setValue` — so an untouched field still contributes to the
|
|
86
|
+
// submitted bag without ever notifying the consumer at mount. In
|
|
87
|
+
// controlled mode the consumer owns the complete bag already (or
|
|
88
|
+
// doesn't; either way it isn't this scope's place to inject a default
|
|
89
|
+
// behind their back), so this is a no-op there: `currentRef.current`
|
|
90
|
+
// is overwritten from `values` again on the very next render.
|
|
91
|
+
if (!isControlled && opts.seed !== undefined && currentRef.current[name] === undefined) {
|
|
92
|
+
const next = nullProtoBag(currentRef.current, { [name]: opts.seed });
|
|
93
|
+
currentRef.current = next;
|
|
94
|
+
setInternal(next);
|
|
95
|
+
}
|
|
96
|
+
}, [isControlled]);
|
|
97
|
+
const unregister = React__default.useCallback((name) => {
|
|
98
|
+
fields.current.delete(name);
|
|
99
|
+
}, []);
|
|
100
|
+
const submit = React__default.useCallback(() => {
|
|
101
|
+
const bag = nullProtoBag();
|
|
102
|
+
const nextErrors = nullProtoBag();
|
|
103
|
+
const invalid = [];
|
|
104
|
+
for (const [name, reg] of fields.current) {
|
|
105
|
+
const value = currentRef.current[name];
|
|
106
|
+
if (reg.required && isEmptyValue(reg.binding, value)) {
|
|
107
|
+
nextErrors[name] = REQUIRED_MESSAGE;
|
|
108
|
+
invalid.push(name);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (value !== undefined)
|
|
112
|
+
bag[name] = value;
|
|
113
|
+
}
|
|
114
|
+
setErrors(nextErrors);
|
|
115
|
+
if (invalid.length) {
|
|
116
|
+
onInvalid === null || onInvalid === void 0 ? void 0 : onInvalid(invalid);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
onSubmit(bag);
|
|
120
|
+
}, [onSubmit, onInvalid]);
|
|
121
|
+
return React__default.useMemo(
|
|
122
|
+
// `current` is otherwise not a dependency of any memoized callback below
|
|
123
|
+
// (they all close over `currentRef`, not `current` itself), so without
|
|
124
|
+
// it here the returned object's identity never changes on a plain value
|
|
125
|
+
// update — and an unchanged Context value never re-renders consumers,
|
|
126
|
+
// regardless of how many times this component itself re-renders. Every
|
|
127
|
+
// field's own `NodeRenderer` reads the scope's value at render time via
|
|
128
|
+
// `getValue`; it needs a reason to be asked to render again, and this is
|
|
129
|
+
// that reason.
|
|
130
|
+
() => ({ formId, getValue, setValue, getLabel, register, unregister, errors, submit }),
|
|
131
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
132
|
+
[formId, getValue, setValue, getLabel, register, unregister, errors, submit, current]);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export { FormScopeContext, REQUIRED_MESSAGE, useFormScope, useFormScopeState };
|
|
@@ -9,3 +9,7 @@ export { bindActionProps, extractActionData, type ActionContext, type ActionHand
|
|
|
9
9
|
export { buildToolDefinition, GENERATIVE_TOOL, type GenerativeToolDefinition } from "./tools";
|
|
10
10
|
export { GENERATIVE_SCHEMA } from "./schema.generated";
|
|
11
11
|
export type { GenerativeSchemaDoc, ComponentSchema, SchemaProp, SchemaPropKind } from "./schemaTypes";
|
|
12
|
+
export { toToolResult, type GenerativeToolResult } from "./toToolResult";
|
|
13
|
+
export { FormShell, type FormShellProps } from "./FormShell";
|
|
14
|
+
export { useFormScope, REQUIRED_MESSAGE, type FormValues, type GenerativeValues, type FormScopeValue, } from "./formScope";
|
|
15
|
+
export { FIELD_BINDINGS, getFieldBinding, type FieldBinding } from "./fieldBinding";
|
|
@@ -7,3 +7,7 @@ export { useGenerativeStream } from './useGenerativeStream.js';
|
|
|
7
7
|
export { bindActionProps, extractActionData } from './actions.js';
|
|
8
8
|
export { GENERATIVE_TOOL, buildToolDefinition } from './tools.js';
|
|
9
9
|
export { GENERATIVE_SCHEMA } from './schema.generated.js';
|
|
10
|
+
export { toToolResult } from './toToolResult.js';
|
|
11
|
+
export { FormShell } from './FormShell.js';
|
|
12
|
+
export { REQUIRED_MESSAGE, useFormScope } from './formScope.js';
|
|
13
|
+
export { FIELD_BINDINGS, getFieldBinding } from './fieldBinding.js';
|
|
@@ -12,6 +12,8 @@ export interface RegistryEntry {
|
|
|
12
12
|
render?: (props: Record<string, unknown>, children?: React.ReactNode) => React.ReactNode;
|
|
13
13
|
/** Map spec action keys to component callback props, e.g. { click: "onClick" }. */
|
|
14
14
|
actionProps?: Record<string, string>;
|
|
15
|
+
/** Marks the container that hosts a FormScope. Only `Form` sets this. */
|
|
16
|
+
isForm?: boolean;
|
|
15
17
|
}
|
|
16
18
|
export interface GenerativeRegistry {
|
|
17
19
|
components: Record<string, RegistryEntry>;
|