flikkui 0.1.0-beta.11 → 0.1.0-beta.12
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/README.md +174 -86
- package/dist/components/ai/ApprovalCard/ApprovalCard.d.ts +3 -0
- package/dist/components/ai/ApprovalCard/ApprovalCard.js +43 -0
- package/dist/components/ai/ApprovalCard/ApprovalCard.theme.d.ts +15 -0
- package/dist/components/ai/ApprovalCard/ApprovalCard.theme.js +17 -0
- package/dist/components/ai/ApprovalCard/ApprovalCard.types.d.ts +43 -0
- package/dist/components/ai/ApprovalCard/index.d.ts +2 -0
- package/dist/components/ai/ArtifactContainer/ArtifactContainer.d.ts +6 -0
- package/dist/components/ai/ArtifactContainer/ArtifactContainer.js +136 -0
- package/dist/components/ai/ArtifactContainer/ArtifactContainer.theme.d.ts +6 -0
- package/dist/components/ai/ArtifactContainer/ArtifactContainer.theme.js +14 -0
- package/dist/components/ai/ArtifactContainer/ArtifactContainer.types.d.ts +57 -0
- package/dist/components/ai/ArtifactContainer/index.d.ts +3 -0
- package/dist/components/ai/ChatInterface/ChatInterface.d.ts +26 -0
- package/dist/components/ai/ChatInterface/ChatInterface.js +79 -0
- package/dist/components/ai/ChatInterface/ChatInterface.theme.d.ts +2 -0
- package/dist/components/ai/ChatInterface/ChatInterface.theme.js +8 -0
- package/dist/components/ai/ChatInterface/ChatInterface.types.d.ts +68 -0
- package/dist/components/ai/ChatInterface/ChatInterface.types.js +19 -0
- package/dist/components/ai/ChatInterface/index.d.ts +4 -0
- package/dist/components/ai/CodeBlock/CodeBlock.d.ts +34 -0
- package/dist/components/ai/CodeBlock/CodeBlock.js +207 -0
- package/dist/components/ai/CodeBlock/CodeBlock.theme.d.ts +2 -0
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +17 -0
- package/dist/components/ai/CodeBlock/CodeBlock.types.d.ts +108 -0
- package/dist/components/ai/CodeBlock/LanguageIcon.d.ts +10 -0
- package/dist/components/ai/CodeBlock/LanguageIcon.js +103 -0
- package/dist/components/ai/CodeBlock/index.d.ts +3 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.animations.d.ts +31 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.animations.js +115 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.d.ts +35 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.js +93 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.theme.d.ts +2 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.theme.js +13 -0
- package/dist/components/ai/EditingIndicator/EditingIndicator.types.d.ts +54 -0
- package/dist/components/ai/EditingIndicator/index.d.ts +9 -0
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.d.ts +3 -0
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.js +104 -0
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.d.ts +2 -0
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.js +8 -0
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.types.d.ts +45 -0
- package/dist/components/ai/GenerativeRenderer/index.d.ts +3 -0
- package/dist/components/ai/MessageHistory/MessageHistory.d.ts +18 -0
- package/dist/components/ai/MessageHistory/MessageHistory.js +107 -0
- package/dist/components/ai/MessageHistory/MessageHistory.theme.d.ts +2 -0
- package/dist/components/ai/MessageHistory/MessageHistory.theme.js +8 -0
- package/dist/components/ai/MessageHistory/MessageHistory.types.d.ts +94 -0
- package/dist/components/ai/MessageHistory/index.d.ts +3 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.d.ts +17 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.js +56 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.d.ts +38 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.js +109 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.d.ts +2 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.js +13 -0
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.types.d.ts +53 -0
- package/dist/components/ai/PresenceIndicator/index.d.ts +8 -0
- package/dist/components/ai/PresenceProvider/PresenceContext.d.ts +24 -0
- package/dist/components/ai/PresenceProvider/PresenceContext.js +34 -0
- package/dist/components/ai/PresenceProvider/PresenceProvider.d.ts +32 -0
- package/dist/components/ai/PresenceProvider/PresenceProvider.js +345 -0
- package/dist/components/ai/PresenceProvider/PresenceProvider.types.d.ts +140 -0
- package/dist/components/ai/PresenceProvider/adapters/MockAdapter.d.ts +102 -0
- package/dist/components/ai/PresenceProvider/adapters/MockAdapter.js +353 -0
- package/dist/components/ai/PresenceProvider/adapters/PresenceAdapter.d.ts +93 -0
- package/dist/components/ai/PresenceProvider/adapters/SupabaseAdapter.d.ts +134 -0
- package/dist/components/ai/PresenceProvider/adapters/WebSocketAdapter.d.ts +149 -0
- package/dist/components/ai/PresenceProvider/adapters/index.d.ts +11 -0
- package/dist/components/ai/PresenceProvider/index.d.ts +10 -0
- package/dist/components/ai/PromptInput/PromptInput.js +613 -0
- package/dist/components/ai/PromptInput/PromptInput.theme.d.ts +1 -7
- package/dist/components/ai/PromptInput/PromptInput.theme.js +15 -0
- package/dist/components/ai/PromptInput/PromptInput.types.d.ts +72 -5
- package/dist/components/ai/PromptInput/index.d.ts +3 -3
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.d.ts +27 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.js +66 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.types.d.ts +65 -0
- package/dist/components/ai/PromptSuggestions/index.d.ts +2 -0
- package/dist/components/ai/StreamingResponse/ErrorDisplay.d.ts +23 -0
- package/dist/components/ai/StreamingResponse/ErrorDisplay.js +50 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +17 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +138 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.d.ts +22 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +84 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.d.ts +2 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +10 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +101 -0
- package/dist/components/ai/StreamingResponse/index.d.ts +9 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.animations.d.ts +10 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.animations.js +47 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.d.ts +20 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.js +58 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.d.ts +2 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.js +20 -0
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.types.d.ts +67 -0
- package/dist/components/ai/ThinkingIndicator/index.d.ts +3 -0
- package/dist/components/ai/TokenCounter/TokenCounter.d.ts +21 -0
- package/dist/components/ai/TokenCounter/TokenCounter.js +74 -0
- package/dist/components/ai/TokenCounter/TokenCounter.theme.d.ts +2 -0
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +28 -0
- package/dist/components/ai/TokenCounter/TokenCounter.types.d.ts +104 -0
- package/dist/components/ai/TokenCounter/index.d.ts +4 -0
- package/dist/components/ai/TokenCounter/tokenUtils.d.ts +23 -0
- package/dist/components/ai/TokenCounter/tokenUtils.js +108 -0
- package/dist/components/ai/VersionSlider/VersionSlider.d.ts +3 -0
- package/dist/components/ai/VersionSlider/VersionSlider.js +99 -0
- package/dist/components/ai/VersionSlider/VersionSlider.theme.d.ts +2 -0
- package/dist/components/ai/VersionSlider/VersionSlider.theme.js +18 -0
- package/dist/components/ai/VersionSlider/VersionSlider.types.d.ts +77 -0
- package/dist/components/ai/VersionSlider/index.d.ts +3 -0
- package/dist/components/ai/index.d.ts +33 -0
- package/dist/components/charts/ActivityRings/ActivityRings.js +164 -0
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +27 -0
- package/dist/components/charts/ActivityRings/ActivityRings.types.js +8 -0
- package/dist/components/charts/AreaChart/AreaChart.js +490 -0
- package/dist/components/charts/AreaChart/AreaChart.theme.js +45 -0
- package/dist/components/charts/AreaChart/AreaChart.types.js +7 -0
- package/dist/components/charts/BarChart/BarChart.js +470 -0
- package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
- package/dist/components/charts/BarChart/BarChart.types.js +7 -0
- package/dist/components/charts/ChartContainer.js +38 -0
- package/dist/components/charts/ComboChart/ComboChart.js +164 -0
- package/dist/components/charts/ComboChart/ComboChart.types.js +7 -0
- package/dist/components/charts/DonutChart/DonutChart.js +169 -0
- package/dist/components/charts/DonutChart/DonutChart.theme.js +24 -0
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +252 -0
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +36 -0
- package/dist/components/charts/DonutChart/donut-utils.js +117 -0
- package/dist/components/charts/FunnelChart/FunnelChart.animations.js +106 -0
- package/dist/components/charts/FunnelChart/FunnelChart.d.ts +2 -2
- package/dist/components/charts/FunnelChart/FunnelChart.js +486 -0
- package/dist/components/charts/FunnelChart/FunnelChart.theme.js +12 -0
- package/dist/components/charts/Heatmap/Heatmap.js +166 -0
- package/dist/components/charts/Heatmap/Heatmap.theme.js +18 -0
- package/dist/components/charts/Heatmap/HeatmapCell.js +91 -0
- package/dist/components/charts/Heatmap/HeatmapLegend.js +23 -0
- package/dist/components/charts/Heatmap/utils/heatmapUtils.js +174 -0
- package/dist/components/charts/LineChart/LineChart.js +443 -0
- package/dist/components/charts/LineChart/LineChart.types.js +7 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +222 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +38 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +9 -0
- package/dist/components/charts/StackedBarChart/StackedBarChart.d.ts +3 -0
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +314 -0
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +34 -0
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +7 -0
- package/dist/components/charts/StackedBarChart/index.d.ts +3 -0
- package/dist/components/charts/hooks/useChartAccessibility.js +127 -0
- package/dist/components/charts/hooks/useChartScales.js +180 -0
- package/dist/components/charts/hooks/useChartTheme.js +86 -0
- package/dist/components/charts/hooks/useChartValidation.js +59 -0
- package/dist/components/charts/hooks/useTooltipPosition.js +304 -0
- package/dist/components/charts/index.d.ts +52 -49
- package/dist/components/charts/index.js +40 -0
- package/dist/components/charts/shared/BarRenderer/BarRenderer.js +295 -0
- package/dist/components/charts/shared/ChartAxis/XAxis.js +40 -0
- package/dist/components/charts/shared/ChartAxis/YAxis.js +97 -0
- package/dist/components/charts/shared/ChartContainer/ChartContainer.js +172 -0
- package/dist/components/charts/shared/ChartCrosshair/ChartCrosshair.js +34 -0
- package/dist/components/charts/shared/ChartCrosshair/ChartCrosshair.theme.js +11 -0
- package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +66 -0
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +22 -0
- package/dist/components/charts/shared/ChartLegend/ChartLegend.js +30 -0
- package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +22 -0
- package/dist/components/charts/shared/ChartMarker/ChartMarker.js +23 -0
- package/dist/components/charts/shared/ChartMarker/ChartMarker.theme.js +9 -0
- package/dist/components/charts/shared/ChartText/ChartText.js +33 -0
- package/dist/components/charts/shared/ChartText/ChartText.theme.js +9 -0
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.js +71 -0
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +18 -0
- package/dist/components/charts/shared/LineRenderer/LineRenderer.js +314 -0
- package/dist/components/charts/theme/chart.theme.js +73 -0
- package/dist/components/charts/types/chart.types.js +31 -0
- package/dist/components/charts/utils/animation-utils.js +115 -0
- package/dist/components/charts/utils/chart-validation.js +301 -0
- package/dist/components/charts/utils/color-utils.js +144 -0
- package/dist/components/core/Accordion/Accordion.js +1 -1
- package/dist/components/core/Accordion/Accordion.theme.js +1 -1
- package/dist/components/core/Accordion/AccordionContent.js +2 -3
- package/dist/components/core/Accordion/AccordionItem.js +1 -1
- package/dist/components/core/Accordion/AccordionTrigger.js +4 -4
- package/dist/components/core/Alert/Alert.js +14 -18
- package/dist/components/core/Alert/Alert.theme.js +1 -9
- package/dist/components/core/Alert/Alert.types.d.ts +2 -10
- package/dist/components/core/AlertDialog/AlertDialog.js +29 -0
- package/dist/components/core/Avatar/Avatar.js +15 -15
- package/dist/components/core/Avatar/Avatar.theme.d.ts +1 -1
- package/dist/components/core/Avatar/Avatar.theme.js +11 -11
- package/dist/components/core/AvatarGroup/AvatarGroup.animations.d.ts +5 -4
- package/dist/components/core/AvatarGroup/AvatarGroup.animations.js +60 -32
- package/dist/components/core/AvatarGroup/AvatarGroup.js +24 -16
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +8 -8
- package/dist/components/core/Badge/Badge.js +23 -19
- package/dist/components/core/Badge/Badge.theme.d.ts +2 -2
- package/dist/components/core/Badge/Badge.theme.js +88 -59
- package/dist/components/core/Badge/Badge.types.d.ts +10 -9
- package/dist/components/core/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +2 -2
- package/dist/components/core/Button/Button.js +57 -35
- package/dist/components/core/Button/Button.ripple.js +1 -1
- package/dist/components/core/Button/Button.theme.d.ts +8 -2
- package/dist/components/core/Button/Button.theme.js +109 -12
- package/dist/components/core/Button/Button.types.d.ts +2 -0
- package/dist/components/core/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/core/ButtonGroup/ButtonGroup.theme.d.ts +1 -0
- package/dist/components/core/ButtonGroup/ButtonGroup.theme.js +2 -0
- package/dist/components/core/ButtonGroup/ButtonGroupSeparator.js +1 -1
- package/dist/components/core/ButtonGroup/ButtonGroupText.js +1 -1
- package/dist/components/core/Calendar/Calendar.animations.js +12 -0
- package/dist/components/core/Calendar/Calendar.js +6 -78
- package/dist/components/core/Calendar/Calendar.theme.d.ts +1 -1
- package/dist/components/core/Calendar/Calendar.theme.js +37 -4
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.animations.js +27 -0
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +269 -0
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +9 -0
- package/dist/components/core/Calendar/calendar.utils.js +10 -1
- package/dist/components/core/Card/Card.js +1 -1
- package/dist/components/core/Card/Card.theme.d.ts +1 -1
- package/dist/components/core/Card/Card.theme.js +6 -6
- package/dist/components/core/Card/Card.types.d.ts +2 -2
- package/dist/components/core/Card/CardContent.js +1 -1
- package/dist/components/core/Card/CardDescription.js +1 -1
- package/dist/components/core/Card/CardFooter.js +1 -1
- package/dist/components/core/Card/CardHeader.js +1 -1
- package/dist/components/core/Card/CardTitle.js +1 -1
- package/dist/components/core/CardStack/CardStack.animations.d.ts +47 -0
- package/dist/components/core/CardStack/CardStack.d.ts +3 -0
- package/dist/components/core/CardStack/CardStack.js +189 -0
- package/dist/components/core/CardStack/CardStack.theme.d.ts +6 -0
- package/dist/components/core/CardStack/CardStack.theme.js +33 -0
- package/dist/components/core/CardStack/CardStack.types.d.ts +139 -0
- package/dist/components/core/CardStack/index.d.ts +7 -0
- package/dist/components/core/Carousel/Carousel.js +1 -1
- package/dist/components/core/Carousel/CarouselContent.js +2 -2
- package/dist/components/core/Carousel/CarouselItem.js +1 -1
- package/dist/components/core/Carousel/CarouselNext.js +3 -4
- package/dist/components/core/Carousel/CarouselPrevious.js +3 -4
- package/dist/components/core/CommandPalette/CommandItem.js +145 -0
- package/dist/components/core/CommandPalette/CommandPalette.animations.d.ts +1 -1
- package/dist/components/core/CommandPalette/CommandPalette.animations.js +51 -0
- package/dist/components/core/CommandPalette/CommandPalette.d.ts +2 -2
- package/dist/components/core/CommandPalette/CommandPalette.js +236 -0
- package/dist/components/core/CommandPalette/CommandPalette.theme.d.ts +1 -1
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +30 -0
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +4 -1
- package/dist/components/core/ContextMenu/ContextMenuItem.d.ts +1 -0
- package/dist/components/core/Divider/Divider.js +1 -1
- package/dist/components/core/DragDrop/DragDrop.js +30 -3
- package/dist/components/core/Drawer/Drawer.js +8 -4
- package/dist/components/core/Drawer/Drawer.theme.js +12 -4
- package/dist/components/core/Drawer/DrawerContent.js +1 -1
- package/dist/components/core/Drawer/DrawerFooter.js +1 -1
- package/dist/components/core/Drawer/DrawerHeader.js +3 -3
- package/dist/components/core/Dropdown/Dropdown.js +2 -2
- package/dist/components/core/Dropdown/Dropdown.theme.d.ts +1 -0
- package/dist/components/core/Dropdown/Dropdown.theme.js +21 -4
- package/dist/components/core/Dropdown/DropdownItem.js +6 -3
- package/dist/components/core/Dropdown/DropdownMenu.js +53 -12
- package/dist/components/core/Dropdown/DropdownSection.js +1 -1
- package/dist/components/core/Dropdown/DropdownSeparator.js +1 -1
- package/dist/components/core/Empty/Empty.js +1 -1
- package/dist/components/core/Kbd/Kbd.js +1 -1
- package/dist/components/core/Link/Link.js +6 -7
- package/dist/components/core/Loader/Loader.js +64 -0
- package/dist/components/core/Loader/Loader.theme.js +60 -0
- package/dist/components/core/Masonry/Masonry.js +2 -3
- package/dist/components/core/Masonry/Masonry.theme.js +1 -1
- package/dist/components/{ai → core}/Message/Message.d.ts +1 -1
- package/dist/components/core/Message/Message.js +136 -0
- package/dist/components/core/Message/Message.theme.d.ts +6 -0
- package/dist/components/core/Message/Message.theme.js +46 -0
- package/dist/components/core/Message/Message.types.d.ts +169 -0
- package/dist/components/core/Message/MessageActions.js +21 -0
- package/dist/components/{ai → core}/Message/MessageAvatar.d.ts +2 -2
- package/dist/components/core/Message/MessageAvatar.js +18 -0
- package/dist/components/core/Message/MessageContent.js +26 -0
- package/dist/components/{ai → core}/Message/MessageContext.d.ts +3 -2
- package/dist/components/core/Message/MessageContext.js +12 -0
- package/dist/components/core/Message/MessageTimestamp.js +23 -0
- package/dist/components/core/Message/TypeWriter.js +28 -0
- package/dist/components/core/Message/index.d.ts +5 -0
- package/dist/components/core/Metric/Metric.js +6 -4
- package/dist/components/core/Metric/index.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +8 -4
- package/dist/components/core/Modal/Modal.theme.js +1 -1
- package/dist/components/core/Modal/ModalBody.js +1 -1
- package/dist/components/core/Modal/ModalDescription.js +1 -1
- package/dist/components/core/Modal/ModalFooter.js +1 -1
- package/dist/components/core/Modal/ModalHeader.js +6 -5
- package/dist/components/core/Modal/ModalTitle.js +1 -1
- package/dist/components/core/NavItem/NavItem.js +42 -21
- package/dist/components/core/NavItem/NavItem.theme.js +11 -11
- package/dist/components/core/NavItem/NavItem.types.d.ts +59 -4
- package/dist/components/core/Notification/Notification.js +33 -42
- package/dist/components/core/Notification/Notification.theme.js +7 -11
- package/dist/components/core/OfflineIndicator/OfflineIndicator.d.ts +20 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.js +113 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.d.ts +2 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +22 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.types.d.ts +57 -0
- package/dist/components/core/OfflineIndicator/index.d.ts +3 -0
- package/dist/components/core/Pagination/Pagination.js +6 -9
- package/dist/components/core/Pagination/Pagination.theme.js +20 -2
- package/dist/components/core/Pill/Pill.animations.js +25 -0
- package/dist/components/core/Pill/Pill.js +150 -0
- package/dist/components/core/Pill/Pill.theme.d.ts +1 -1
- package/dist/components/core/Pill/Pill.theme.js +65 -0
- package/dist/components/core/Pill/Pill.types.d.ts +5 -5
- package/dist/components/core/Popover/Popover.js +1 -1
- package/dist/components/core/Popover/PopoverContent.js +2 -4
- package/dist/components/core/Popover/PopoverTrigger.js +1 -1
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.d.ts +31 -4
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.js +223 -33
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.d.ts +0 -6
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.types.d.ts +8 -2
- package/dist/components/core/ProgressiveBlur/index.d.ts +2 -2
- package/dist/components/core/RetryBoundary/RetryBoundary.d.ts +35 -0
- package/dist/components/core/RetryBoundary/RetryBoundary.js +160 -0
- package/dist/components/core/RetryBoundary/RetryBoundary.theme.d.ts +2 -0
- package/dist/components/core/RetryBoundary/RetryBoundary.theme.js +7 -0
- package/dist/components/core/RetryBoundary/RetryBoundary.types.d.ts +51 -0
- package/dist/components/core/RetryBoundary/index.d.ts +3 -0
- package/dist/components/core/Segmented/Segmented.js +4 -1
- package/dist/components/core/Segmented/Segmented.theme.d.ts +1 -1
- package/dist/components/core/Segmented/Segmented.theme.js +4 -4
- package/dist/components/core/Segmented/SegmentedItem.js +1 -1
- package/dist/components/core/Sidebar/Sidebar.d.ts +2 -2
- package/dist/components/core/Sidebar/Sidebar.js +14 -9
- package/dist/components/core/Sidebar/SidebarContent.d.ts +2 -2
- package/dist/components/core/Sidebar/SidebarContent.js +6 -4
- package/dist/components/core/Sidebar/SidebarFooter.d.ts +2 -2
- package/dist/components/core/Sidebar/SidebarFooter.js +6 -3
- package/dist/components/core/Sidebar/SidebarHeader.d.ts +2 -2
- package/dist/components/core/Sidebar/SidebarHeader.js +6 -7
- package/dist/components/core/Sidebar/SidebarNav.js +1 -1
- package/dist/components/core/Sidebar/SidebarNavGroup.d.ts +2 -2
- package/dist/components/core/Sidebar/SidebarNavGroup.js +7 -7
- package/dist/components/core/Sidebar/SidebarSubmenu.d.ts +7 -0
- package/dist/components/core/Sidebar/SidebarSubmenu.js +13 -0
- package/dist/components/core/Sidebar/SidebarToggle.d.ts +2 -2
- package/dist/components/core/Sidebar/SidebarToggle.js +11 -9
- package/dist/components/core/Sidebar/index.d.ts +10 -9
- package/dist/components/core/Skeleton/Skeleton.js +61 -0
- package/dist/components/core/Skeleton/Skeleton.theme.js +18 -0
- package/dist/components/core/SlidingNumber/SlidingNumber.d.ts +2 -2
- package/dist/components/core/SlidingNumber/SlidingNumber.js +40 -32
- package/dist/components/core/SlidingNumber/SlidingNumber.types.d.ts +3 -3
- package/dist/components/core/Sortable/Sortable.animations.d.ts +48 -0
- package/dist/components/core/Sortable/Sortable.animations.js +1 -1
- package/dist/components/core/Sortable/Sortable.js +6 -10
- package/dist/components/core/Spinner/Spinner.js +4 -1
- package/dist/components/core/Stepper/Stepper.js +1 -1
- package/dist/components/core/Stepper/Stepper.theme.d.ts +26 -4
- package/dist/components/core/Stepper/Stepper.theme.js +42 -9
- package/dist/components/core/Stepper/StepperItem.js +39 -15
- package/dist/components/core/Table/Table.js +6 -3
- package/dist/components/core/Table/Table.theme.js +49 -14
- package/dist/components/core/Table/components/DeclarativeComponents.js +4 -1
- package/dist/components/core/Table/components/TableActions/TableActions.d.ts +3 -3
- package/dist/components/core/Table/components/TableActions/TableActions.js +44 -22
- package/dist/components/core/Table/components/TableActions/TableActionsMenu.js +4 -1
- package/dist/components/core/Table/components/TablePagination/TablePagination.js +4 -1
- package/dist/components/core/Table/components/TableSelectionHeader/TableSelectionHeader.js +6 -3
- package/dist/components/core/Table/components/core/TableBody.js +1 -1
- package/dist/components/core/Table/components/core/TableCell.js +4 -1
- package/dist/components/core/Table/components/core/TableHeader.js +1 -1
- package/dist/components/core/Table/components/core/TableRow.js +2 -3
- package/dist/components/core/Table/index.js +6 -1
- package/dist/components/core/Tabs/Tabs.js +1 -1
- package/dist/components/core/Tabs/TabsContent.js +2 -4
- package/dist/components/core/Tabs/TabsList.js +2 -3
- package/dist/components/core/Tabs/TabsTrigger.js +2 -3
- package/dist/components/core/Toast/Toast.js +11 -16
- package/dist/components/core/Toast/ToastProvider.js +2 -2
- package/dist/components/core/Tooltip/Tooltip.animations.js +18 -2
- package/dist/components/core/Tooltip/Tooltip.js +48 -11
- package/dist/components/core/Tooltip/Tooltip.theme.js +2 -1
- package/dist/components/core/Tree/Tree.animations.js +1 -1
- package/dist/components/core/Tree/Tree.js +5 -8
- package/dist/components/core/index.d.ts +4 -1
- package/dist/components/core/index.js +94 -0
- package/dist/components/effects/CustomCursor/CustomCursor.js +4 -8
- package/dist/components/effects/GlassEffect/GlassEffect.js +4 -1
- package/dist/components/effects/GlassSurface/GlassSurface.d.ts +8 -0
- package/dist/components/effects/GlassSurface/GlassSurface.js +218 -0
- package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +57 -0
- package/dist/components/effects/GlassSurface/index.d.ts +2 -0
- package/dist/components/effects/Overlay/Overlay.d.ts +2 -2
- package/dist/components/effects/Overlay/Overlay.js +26 -17
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +18 -0
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +195 -0
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.shaders.d.ts +7 -0
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.shaders.js +9 -0
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +61 -0
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.js +8 -0
- package/dist/components/effects/SpotlightBorder/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +10 -6
- package/dist/components/effects/index.js +5 -0
- package/dist/components/forms/Checkbox/Checkbox.js +4 -5
- package/dist/components/forms/Checkbox/Checkbox.theme.d.ts +1 -0
- package/dist/components/forms/Checkbox/Checkbox.theme.js +31 -4
- package/dist/components/forms/DatePicker/DatePicker.d.ts +2 -2
- package/dist/components/forms/DatePicker/DatePicker.js +19 -13
- package/dist/components/forms/DatePicker/DatePicker.theme.d.ts +1 -1
- package/dist/components/forms/DatePicker/DatePicker.theme.js +26 -7
- package/dist/components/forms/DatePicker/DatePicker.types.d.ts +11 -13
- package/dist/components/forms/DatePicker/DatePickerContent.d.ts +2 -2
- package/dist/components/forms/DatePicker/DatePickerContent.js +85 -36
- package/dist/components/forms/DatePicker/DatePickerTrigger.d.ts +2 -2
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +8 -7
- package/dist/components/forms/FileUpload/FileUpload.js +299 -0
- package/dist/components/forms/FileUpload/FileUpload.theme.js +36 -0
- package/dist/components/forms/FileUpload/FileUpload.types.d.ts +4 -0
- package/dist/components/forms/FileUpload/index.d.ts +1 -1
- package/dist/components/forms/FormLabel/FormLabel.js +4 -1
- package/dist/components/forms/Input/Input.js +7 -6
- package/dist/components/forms/Input/Input.theme.js +23 -16
- package/dist/components/forms/InputAddress/InputAddress.js +1 -1
- package/dist/components/forms/InputAddress/InputAddress.theme.js +1 -1
- package/dist/components/forms/InputCounter/InputCounter.d.ts +2 -2
- package/dist/components/forms/InputCounter/InputCounter.js +172 -0
- package/dist/components/forms/InputCounter/InputCounter.theme.js +11 -0
- package/dist/components/forms/InputCreditCard/InputCreditCard.js +1 -1
- package/dist/components/forms/InputCreditCard/InputCreditCard.theme.js +1 -1
- package/dist/components/forms/InputDate/InputDate.js +1 -1
- package/dist/components/forms/InputOTP/InputOTP.js +1 -1
- package/dist/components/forms/OptimisticForm/OptimisticForm.d.ts +33 -0
- package/dist/components/forms/OptimisticForm/OptimisticForm.js +88 -0
- package/dist/components/forms/OptimisticForm/OptimisticForm.theme.d.ts +2 -0
- package/dist/components/forms/OptimisticForm/OptimisticForm.theme.js +8 -0
- package/dist/components/forms/OptimisticForm/OptimisticForm.types.d.ts +74 -0
- package/dist/components/forms/OptimisticForm/index.d.ts +3 -0
- package/dist/components/forms/Radio/Radio.js +1 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +16 -22
- package/dist/components/forms/Select/Select.js +103 -36
- package/dist/components/forms/Select/Select.theme.d.ts +1 -1
- package/dist/components/forms/Select/Select.theme.js +18 -8
- package/dist/components/forms/Select/Select.types.d.ts +8 -4
- package/dist/components/forms/Signature/Signature.js +1 -1
- package/dist/components/forms/Slider/Slider.js +29 -11
- package/dist/components/forms/Slider/Slider.theme.js +1 -1
- package/dist/components/forms/StepperForm/StepperForm.d.ts +7 -0
- package/dist/components/forms/StepperForm/StepperForm.js +105 -0
- package/dist/components/forms/StepperForm/StepperForm.theme.d.ts +2 -0
- package/dist/components/forms/StepperForm/StepperForm.theme.js +19 -0
- package/dist/components/forms/StepperForm/StepperForm.types.d.ts +65 -0
- package/dist/components/forms/StepperForm/StepperForm.types.js +12 -0
- package/dist/components/forms/StepperForm/index.d.ts +3 -0
- package/dist/components/forms/Switch/Switch.js +5 -2
- package/dist/components/forms/Switch/Switch.types.d.ts +1 -1
- package/dist/components/forms/Textarea/Textarea.js +1 -1
- package/dist/components/forms/TimePicker/TimePicker.js +1 -1
- package/dist/components/forms/TimePicker/TimePickerContent.js +2 -3
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +4 -6
- package/dist/components/forms/forms.theme.js +32 -9
- package/dist/components/forms/index.d.ts +59 -55
- package/dist/components/forms/index.js +52 -0
- package/dist/hooks/index.d.ts +14 -5
- package/dist/hooks/useFormStateMachine.d.ts +31 -0
- package/dist/hooks/useFormStateMachine.js +72 -0
- package/dist/hooks/useNetworkStatus.d.ts +40 -0
- package/dist/hooks/useNetworkStatus.js +88 -0
- package/dist/hooks/useOptimisticMutation.d.ts +109 -0
- package/dist/hooks/useOptimisticMutation.js +196 -0
- package/dist/hooks/usePresence.d.ts +88 -0
- package/dist/hooks/useSlidingNumber.js +67 -0
- package/dist/hooks/useStreamingSSE.d.ts +80 -0
- package/dist/hooks/useStreamingSSE.js +236 -0
- package/dist/hooks/useTypewriter.js +117 -0
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/core/ChevronUpDown.js +1 -1
- package/dist/icons/core/DollarIcon.js +1 -1
- package/dist/icons/core/LockIcon.js +1 -1
- package/dist/icons/core/MinusIcon.js +1 -1
- package/dist/icons/core/PlusIcon.js +1 -1
- package/dist/icons/core/SearchIcon.js +1 -1
- package/dist/icons/core/TickIcon.js +1 -1
- package/dist/index.d.ts +11 -124
- package/dist/index.js +150 -35
- package/dist/styles.css +1 -1
- package/dist/utils/actionQueue.d.ts +113 -0
- package/dist/utils/actionQueue.js +233 -0
- package/dist/utils/cn.js +2 -2
- package/dist/utils/dateUtils.js +1 -1
- package/dist/utils/formValidation.d.ts +20 -0
- package/dist/utils/formValidation.js +33 -0
- package/dist/utils/index.d.ts +14 -6
- package/dist/utils/optimisticErrors.d.ts +79 -0
- package/dist/utils/optimisticErrors.js +111 -0
- package/dist/utils/presenceUtils.d.ts +66 -0
- package/dist/utils/presenceUtils.js +110 -0
- package/dist/utils/retryUtils.d.ts +49 -0
- package/dist/utils/retryUtils.js +53 -0
- package/dist/utils/sseFormatParsers.d.ts +64 -0
- package/dist/utils/sseFormatParsers.js +124 -0
- package/dist/utils/stateMachine.d.ts +43 -0
- package/dist/utils/stateMachine.js +45 -0
- package/dist/utils/streamingErrors.d.ts +70 -0
- package/dist/utils/streamingErrors.js +110 -0
- package/package.json +69 -20
- package/dist/_virtual/jsx-runtime.js +0 -5
- package/dist/_virtual/jsx-runtime2.js +0 -3
- package/dist/_virtual/react-jsx-runtime.development.js +0 -3
- package/dist/_virtual/react-jsx-runtime.production.js +0 -3
- package/dist/components/ai/Message/Message.theme.d.ts +0 -2
- package/dist/components/ai/Message/Message.types.d.ts +0 -110
- package/dist/components/ai/Message/index.d.ts +0 -9
- package/dist/components/core/ChatMessage/ChatMessage.d.ts +0 -3
- package/dist/components/core/ChatMessage/ChatMessage.js +0 -62
- package/dist/components/core/ChatMessage/ChatMessage.theme.d.ts +0 -6
- package/dist/components/core/ChatMessage/ChatMessage.theme.js +0 -31
- package/dist/components/core/ChatMessage/ChatMessage.types.d.ts +0 -120
- package/dist/components/core/ChatMessage/index.d.ts +0 -2
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.js +0 -17
- package/dist/node_modules/@heroicons/react/16/solid/esm/CheckIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/16/solid/esm/LockClosedIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronRightIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/20/solid/esm/PaperAirplaneIcon.js +0 -24
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowTrendingDownIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowTrendingUpIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowUturnLeftIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowUturnRightIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3BottomLeftIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3BottomRightIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/Bars3Icon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/BoldIcon.js +0 -27
- package/dist/node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/CheckIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronDoubleLeftIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronDoubleRightIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronUpDownIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ChevronUpIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/Cog6ToothIcon.js +0 -32
- package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/EllipsisVerticalIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/ItalicIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/MinusIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/PlusIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/UnderlineIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/solid/esm/ArrowPathIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/BellIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/ExclamationTriangleIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/EyeIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/solid/esm/EyeSlashIcon.js +0 -28
- package/dist/node_modules/@heroicons/react/24/solid/esm/InformationCircleIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/LockClosedIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/PaintBrushIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/XCircleIcon.js +0 -26
- package/dist/node_modules/@heroicons/react/24/solid/esm/XMarkIcon.js +0 -26
- package/dist/node_modules/clsx/dist/clsx.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/animation/animate/single-value.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.js +0 -103
- package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.js +0 -85
- package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.js +0 -59
- package/dist/node_modules/framer-motion/dist/es/animation/interfaces/visual-element.js +0 -26
- package/dist/node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/animation/utils/calc-child-stagger.js +0 -15
- package/dist/node_modules/framer-motion/dist/es/animation/utils/default-transitions.js +0 -40
- package/dist/node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.js +0 -10
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js +0 -87
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js +0 -63
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js +0 -165
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +0 -44
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/components/Reorder/Group.js +0 -52
- package/dist/node_modules/framer-motion/dist/es/components/Reorder/Item.js +0 -33
- package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.js +0 -24
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +0 -17
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js +0 -9
- package/dist/node_modules/framer-motion/dist/es/context/ReorderContext.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/events/add-dom-event.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js +0 -15
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +0 -501
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js +0 -27
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.js +0 -116
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +0 -129
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js +0 -41
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js +0 -30
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +0 -157
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js +0 -50
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js +0 -33
- package/dist/node_modules/framer-motion/dist/es/motion/features/Feature.js +0 -9
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +0 -36
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js +0 -40
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js +0 -28
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js +0 -17
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js +0 -21
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +0 -147
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +0 -72
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +0 -49
- package/dist/node_modules/framer-motion/dist/es/motion/index.js +0 -107
- package/dist/node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +0 -38
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +0 -139
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +0 -79
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +0 -57
- package/dist/node_modules/framer-motion/dist/es/projection/animation/mix-values.js +0 -91
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/conversion.js +0 -33
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/copy.js +0 -31
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.js +0 -119
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.js +0 -52
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.js +0 -54
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/models.js +0 -17
- package/dist/node_modules/framer-motion/dist/es/projection/geometry/utils.js +0 -31
- package/dist/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.js +0 -27
- package/dist/node_modules/framer-motion/dist/es/projection/node/create-projection-node.js +0 -1582
- package/dist/node_modules/framer-motion/dist/es/projection/node/state.js +0 -19
- package/dist/node_modules/framer-motion/dist/es/projection/shared/stack.js +0 -112
- package/dist/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.js +0 -41
- package/dist/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.js +0 -35
- package/dist/node_modules/framer-motion/dist/es/projection/styles/scale-correction.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/projection/styles/transform.js +0 -49
- package/dist/node_modules/framer-motion/dist/es/projection/utils/each-axis.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/projection/utils/has-transform.js +0 -26
- package/dist/node_modules/framer-motion/dist/es/projection/utils/measure.js +0 -17
- package/dist/node_modules/framer-motion/dist/es/render/VisualElement.js +0 -489
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js +0 -45
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.js +0 -43
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js +0 -28
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +0 -59
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +0 -30
- package/dist/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.js +0 -44
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js +0 -10
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js +0 -57
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/build-styles.js +0 -65
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/build-transform.js +0 -62
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/render.js +0 -17
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.js +0 -19
- package/dist/node_modules/framer-motion/dist/es/render/store.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.js +0 -45
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +0 -33
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js +0 -24
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js +0 -10
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.js +0 -57
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.js +0 -30
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/path.js +0 -32
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/render.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.js +0 -19
- package/dist/node_modules/framer-motion/dist/es/render/utils/animation-state.js +0 -357
- package/dist/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/render/utils/flat-tree.js +0 -24
- package/dist/node_modules/framer-motion/dist/es/render/utils/get-variant-context.js +0 -28
- package/dist/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.js +0 -13
- package/dist/node_modules/framer-motion/dist/es/render/utils/is-variant-label.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/render/utils/motion-values.js +0 -51
- package/dist/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/render/utils/resolve-variants.js +0 -36
- package/dist/node_modules/framer-motion/dist/es/render/utils/setters.js +0 -31
- package/dist/node_modules/framer-motion/dist/es/render/utils/variant-props.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/utils/delay.js +0 -20
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js +0 -9
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js +0 -3
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/index.js +0 -19
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/state.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +0 -47
- package/dist/node_modules/framer-motion/dist/es/utils/shallow-compare.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js +0 -18
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/value/use-combine-values.js +0 -37
- package/dist/node_modules/framer-motion/dist/es/value/use-computed.js +0 -19
- package/dist/node_modules/framer-motion/dist/es/value/use-motion-value.js +0 -38
- package/dist/node_modules/framer-motion/dist/es/value/use-spring.js +0 -22
- package/dist/node_modules/framer-motion/dist/es/value/use-transform.js +0 -29
- package/dist/node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.js +0 -20
- package/dist/node_modules/framer-motion/dist/es/value/use-will-change/is.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js +0 -176
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js +0 -341
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js +0 -158
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js +0 -65
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js +0 -87
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js +0 -51
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring/defaults.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring/find.js +0 -86
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring/index.js +0 -176
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js +0 -19
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js +0 -131
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js +0 -147
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js +0 -30
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js +0 -36
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js +0 -42
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js +0 -42
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js +0 -30
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js +0 -28
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js +0 -29
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js +0 -43
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js +0 -71
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js +0 -81
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js +0 -31
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js +0 -28
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js +0 -37
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js +0 -83
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js +0 -83
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js +0 -28
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js +0 -79
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js +0 -47
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js +0 -93
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/utils/transform.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/value/index.js +0 -325
- package/dist/node_modules/motion-dom/dist/es/value/spring-value.js +0 -54
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js +0 -40
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js +0 -42
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js +0 -32
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js +0 -25
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js +0 -29
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js +0 -30
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js +0 -91
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js +0 -30
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js +0 -50
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js +0 -31
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js +0 -3
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js +0 -3
- package/dist/node_modules/motion-utils/dist/es/array.js +0 -21
- package/dist/node_modules/motion-utils/dist/es/clamp.js +0 -9
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/back.js +0 -9
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js +0 -8
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js +0 -51
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js +0 -3
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js +0 -41
- package/dist/node_modules/motion-utils/dist/es/errors.js +0 -18
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/global-config.js +0 -3
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js +0 -6
- package/dist/node_modules/motion-utils/dist/es/is-object.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js +0 -6
- package/dist/node_modules/motion-utils/dist/es/memo.js +0 -11
- package/dist/node_modules/motion-utils/dist/es/noop.js +0 -4
- package/dist/node_modules/motion-utils/dist/es/pipe.js +0 -11
- package/dist/node_modules/motion-utils/dist/es/progress.js +0 -19
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js +0 -40
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js +0 -12
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js +0 -11
- package/dist/node_modules/motion-utils/dist/es/warn-once.js +0 -11
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +0 -368
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +0 -44
- package/dist/node_modules/react/jsx-runtime.js +0 -19
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2956
- package/dist/node_modules/tslib/tslib.es6.js +0 -56
- /package/dist/components/{ai → core}/Message/MessageActions.d.ts +0 -0
- /package/dist/components/{ai → core}/Message/MessageContent.d.ts +0 -0
- /package/dist/components/{ai → core}/Message/MessageTimestamp.d.ts +0 -0
- /package/dist/components/{ai → core}/Message/TypeWriter.d.ts +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presence Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for formatting presence and typing indicators.
|
|
5
|
+
*/
|
|
6
|
+
import { PresenceUser, TypingUser } from "../components/ai/PresenceProvider/PresenceProvider.types";
|
|
7
|
+
/**
|
|
8
|
+
* Format typing users into human-readable text
|
|
9
|
+
*
|
|
10
|
+
* @param users - Array of users currently typing
|
|
11
|
+
* @param maxVisible - Maximum users to show by name (default: 3)
|
|
12
|
+
* @returns Formatted text like "Alice is typing..." or "3 people are typing..."
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* formatTypingText([{ id: '1', name: 'Alice' }]) // "Alice is typing..."
|
|
16
|
+
* formatTypingText([{ id: '1', name: 'Alice' }, { id: '2', name: 'Bob' }]) // "Alice and Bob are typing..."
|
|
17
|
+
* formatTypingText([...4 users...]) // "Alice, Bob, Charlie, and 1 other are typing..."
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatTypingText(users: TypingUser[], maxVisible?: number): string;
|
|
20
|
+
/**
|
|
21
|
+
* Format presence count into human-readable text
|
|
22
|
+
*
|
|
23
|
+
* @param count - Number of users online
|
|
24
|
+
* @returns Formatted text like "5 users online" or "1 user online"
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* formatPresenceCount(1) // "1 user online"
|
|
28
|
+
* formatPresenceCount(5) // "5 users online"
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatPresenceCount(count: number): string;
|
|
31
|
+
/**
|
|
32
|
+
* Validate presence user data
|
|
33
|
+
* Type guard to ensure object conforms to PresenceUser interface
|
|
34
|
+
*
|
|
35
|
+
* @param user - Unknown object to validate
|
|
36
|
+
* @returns True if valid PresenceUser
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const data = await fetchUserData();
|
|
40
|
+
* if (validatePresenceUser(data)) {
|
|
41
|
+
* // TypeScript knows data is PresenceUser
|
|
42
|
+
* console.log(data.name);
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
export declare function validatePresenceUser(user: unknown): user is PresenceUser;
|
|
46
|
+
/**
|
|
47
|
+
* Validate typing user data
|
|
48
|
+
* Type guard to ensure object conforms to TypingUser interface
|
|
49
|
+
*
|
|
50
|
+
* @param user - Unknown object to validate
|
|
51
|
+
* @returns True if valid TypingUser
|
|
52
|
+
*/
|
|
53
|
+
export declare function validateTypingUser(user: unknown): user is TypingUser;
|
|
54
|
+
/**
|
|
55
|
+
* Sort presence users by various criteria
|
|
56
|
+
*
|
|
57
|
+
* @param users - Array of users to sort
|
|
58
|
+
* @param sortBy - Sort criteria or custom comparator
|
|
59
|
+
* @returns Sorted array (does not mutate original)
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* sortUsers(users, 'name') // Sort alphabetically by name
|
|
63
|
+
* sortUsers(users, 'joinedAt') // Sort by join time (newest first)
|
|
64
|
+
* sortUsers(users, (a, b) => a.metadata.score - b.metadata.score) // Custom sort
|
|
65
|
+
*/
|
|
66
|
+
export declare function sortUsers(users: PresenceUser[], sortBy: "name" | "joinedAt" | "status" | ((a: PresenceUser, b: PresenceUser) => number)): PresenceUser[];
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { __spreadArray } from '/Users/ggn/Development/ui-flik/node_modules/tslib/tslib.es6.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Presence Utilities
|
|
5
|
+
*
|
|
6
|
+
* Helper functions for formatting presence and typing indicators.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Format typing users into human-readable text
|
|
10
|
+
*
|
|
11
|
+
* @param users - Array of users currently typing
|
|
12
|
+
* @param maxVisible - Maximum users to show by name (default: 3)
|
|
13
|
+
* @returns Formatted text like "Alice is typing..." or "3 people are typing..."
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* formatTypingText([{ id: '1', name: 'Alice' }]) // "Alice is typing..."
|
|
17
|
+
* formatTypingText([{ id: '1', name: 'Alice' }, { id: '2', name: 'Bob' }]) // "Alice and Bob are typing..."
|
|
18
|
+
* formatTypingText([...4 users...]) // "Alice, Bob, Charlie, and 1 other are typing..."
|
|
19
|
+
*/
|
|
20
|
+
function formatTypingText(users, maxVisible) {
|
|
21
|
+
if (maxVisible === void 0) { maxVisible = 3; }
|
|
22
|
+
var count = users.length;
|
|
23
|
+
if (count === 0) {
|
|
24
|
+
return "";
|
|
25
|
+
}
|
|
26
|
+
if (count === 1) {
|
|
27
|
+
return "".concat(users[0].name, " is typing...");
|
|
28
|
+
}
|
|
29
|
+
if (count === 2) {
|
|
30
|
+
return "".concat(users[0].name, " and ").concat(users[1].name, " are typing...");
|
|
31
|
+
}
|
|
32
|
+
// 3 or more users
|
|
33
|
+
if (count <= maxVisible) {
|
|
34
|
+
var names = users
|
|
35
|
+
.slice(0, count - 1)
|
|
36
|
+
.map(function (u) { return u.name; })
|
|
37
|
+
.join(", ");
|
|
38
|
+
var lastName = users[count - 1].name;
|
|
39
|
+
return "".concat(names, ", and ").concat(lastName, " are typing...");
|
|
40
|
+
}
|
|
41
|
+
// More than maxVisible users
|
|
42
|
+
var visibleNames = users
|
|
43
|
+
.slice(0, maxVisible)
|
|
44
|
+
.map(function (u) { return u.name; })
|
|
45
|
+
.join(", ");
|
|
46
|
+
var remaining = count - maxVisible;
|
|
47
|
+
return "".concat(visibleNames, ", and ").concat(remaining, " ").concat(remaining === 1 ? "other" : "others", " are typing...");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format presence count into human-readable text
|
|
51
|
+
*
|
|
52
|
+
* @param count - Number of users online
|
|
53
|
+
* @returns Formatted text like "5 users online" or "1 user online"
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* formatPresenceCount(1) // "1 user online"
|
|
57
|
+
* formatPresenceCount(5) // "5 users online"
|
|
58
|
+
*/
|
|
59
|
+
function formatPresenceCount(count) {
|
|
60
|
+
if (count === 0) {
|
|
61
|
+
return "No users online";
|
|
62
|
+
}
|
|
63
|
+
if (count === 1) {
|
|
64
|
+
return "1 user online";
|
|
65
|
+
}
|
|
66
|
+
return "".concat(count, " users online");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Sort presence users by various criteria
|
|
70
|
+
*
|
|
71
|
+
* @param users - Array of users to sort
|
|
72
|
+
* @param sortBy - Sort criteria or custom comparator
|
|
73
|
+
* @returns Sorted array (does not mutate original)
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* sortUsers(users, 'name') // Sort alphabetically by name
|
|
77
|
+
* sortUsers(users, 'joinedAt') // Sort by join time (newest first)
|
|
78
|
+
* sortUsers(users, (a, b) => a.metadata.score - b.metadata.score) // Custom sort
|
|
79
|
+
*/
|
|
80
|
+
function sortUsers(users, sortBy) {
|
|
81
|
+
var sorted = __spreadArray([], users, true); // Don't mutate original
|
|
82
|
+
if (typeof sortBy === "function") {
|
|
83
|
+
return sorted.sort(sortBy);
|
|
84
|
+
}
|
|
85
|
+
switch (sortBy) {
|
|
86
|
+
case "name":
|
|
87
|
+
return sorted.sort(function (a, b) { return a.name.localeCompare(b.name); });
|
|
88
|
+
case "joinedAt":
|
|
89
|
+
return sorted.sort(function (a, b) {
|
|
90
|
+
var _a, _b, _c, _d;
|
|
91
|
+
var aTime = (_b = (_a = a.joinedAt) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0;
|
|
92
|
+
var bTime = (_d = (_c = b.joinedAt) === null || _c === void 0 ? void 0 : _c.getTime()) !== null && _d !== void 0 ? _d : 0;
|
|
93
|
+
return bTime - aTime; // Newest first
|
|
94
|
+
});
|
|
95
|
+
case "status": {
|
|
96
|
+
// Order: online > busy > away > offline
|
|
97
|
+
var statusOrder_1 = { online: 0, busy: 1, away: 2, offline: 3 };
|
|
98
|
+
return sorted.sort(function (a, b) {
|
|
99
|
+
var _a, _b;
|
|
100
|
+
var aOrder = statusOrder_1[(_a = a.status) !== null && _a !== void 0 ? _a : "offline"];
|
|
101
|
+
var bOrder = statusOrder_1[(_b = b.status) !== null && _b !== void 0 ? _b : "offline"];
|
|
102
|
+
return aOrder - bOrder;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
default:
|
|
106
|
+
return sorted;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export { formatPresenceCount, formatTypingText, sortUsers };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry Logic Utilities
|
|
3
|
+
* Handles exponential backoff and retry decision logic for streaming errors
|
|
4
|
+
*/
|
|
5
|
+
import type { StreamingError } from './streamingErrors';
|
|
6
|
+
/**
|
|
7
|
+
* Retry configuration options
|
|
8
|
+
*/
|
|
9
|
+
export interface RetryConfig {
|
|
10
|
+
/** Maximum number of retry attempts (default: 3) */
|
|
11
|
+
maxAttempts?: number;
|
|
12
|
+
/** Initial delay in milliseconds (default: 1000) */
|
|
13
|
+
initialDelay?: number;
|
|
14
|
+
/** Delay multiplier for exponential backoff (default: 2) */
|
|
15
|
+
backoffMultiplier?: number;
|
|
16
|
+
/** Maximum delay cap in milliseconds (default: 10000) */
|
|
17
|
+
maxDelay?: number;
|
|
18
|
+
/** Custom retry logic function */
|
|
19
|
+
shouldRetry?: (error: StreamingError, attempt: number) => boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Calculate retry delay using exponential backoff
|
|
23
|
+
*
|
|
24
|
+
* @param attempt - Current retry attempt number (0-indexed)
|
|
25
|
+
* @param config - Retry configuration options
|
|
26
|
+
* @returns Delay in milliseconds before next retry
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* calculateRetryDelay(0) // Returns: 1000ms
|
|
30
|
+
* calculateRetryDelay(1) // Returns: 2000ms
|
|
31
|
+
* calculateRetryDelay(2) // Returns: 4000ms
|
|
32
|
+
* calculateRetryDelay(3) // Returns: 8000ms
|
|
33
|
+
* calculateRetryDelay(4) // Returns: 10000ms (capped at maxDelay)
|
|
34
|
+
*/
|
|
35
|
+
export declare const calculateRetryDelay: (attempt: number, config?: RetryConfig) => number;
|
|
36
|
+
/**
|
|
37
|
+
* Determine if a streaming error should be retried
|
|
38
|
+
*
|
|
39
|
+
* @param error - The streaming error that occurred
|
|
40
|
+
* @param attempt - Current retry attempt number (0-indexed)
|
|
41
|
+
* @param config - Retry configuration options
|
|
42
|
+
* @returns True if should retry, false otherwise
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* shouldRetry(networkError, 0) // Returns: true
|
|
46
|
+
* shouldRetry(networkError, 3) // Returns: false (max attempts reached)
|
|
47
|
+
* shouldRetry(parseError, 0) // Returns: false (not retryable)
|
|
48
|
+
*/
|
|
49
|
+
export declare const shouldRetry: (error: StreamingError, attempt: number, config?: RetryConfig) => boolean;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry Logic Utilities
|
|
3
|
+
* Handles exponential backoff and retry decision logic for streaming errors
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Calculate retry delay using exponential backoff
|
|
7
|
+
*
|
|
8
|
+
* @param attempt - Current retry attempt number (0-indexed)
|
|
9
|
+
* @param config - Retry configuration options
|
|
10
|
+
* @returns Delay in milliseconds before next retry
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* calculateRetryDelay(0) // Returns: 1000ms
|
|
14
|
+
* calculateRetryDelay(1) // Returns: 2000ms
|
|
15
|
+
* calculateRetryDelay(2) // Returns: 4000ms
|
|
16
|
+
* calculateRetryDelay(3) // Returns: 8000ms
|
|
17
|
+
* calculateRetryDelay(4) // Returns: 10000ms (capped at maxDelay)
|
|
18
|
+
*/
|
|
19
|
+
var calculateRetryDelay = function (attempt, config) {
|
|
20
|
+
var initialDelay = (config === null || config === void 0 ? void 0 : config.initialDelay) || 1000;
|
|
21
|
+
var multiplier = (config === null || config === void 0 ? void 0 : config.backoffMultiplier) || 2;
|
|
22
|
+
var maxDelay = (config === null || config === void 0 ? void 0 : config.maxDelay) || 10000;
|
|
23
|
+
var delay = initialDelay * Math.pow(multiplier, attempt);
|
|
24
|
+
return Math.min(delay, maxDelay);
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Determine if a streaming error should be retried
|
|
28
|
+
*
|
|
29
|
+
* @param error - The streaming error that occurred
|
|
30
|
+
* @param attempt - Current retry attempt number (0-indexed)
|
|
31
|
+
* @param config - Retry configuration options
|
|
32
|
+
* @returns True if should retry, false otherwise
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* shouldRetry(networkError, 0) // Returns: true
|
|
36
|
+
* shouldRetry(networkError, 3) // Returns: false (max attempts reached)
|
|
37
|
+
* shouldRetry(parseError, 0) // Returns: false (not retryable)
|
|
38
|
+
*/
|
|
39
|
+
var shouldRetry = function (error, attempt, config) {
|
|
40
|
+
var maxAttempts = (config === null || config === void 0 ? void 0 : config.maxAttempts) || 3;
|
|
41
|
+
// Use custom retry logic if provided
|
|
42
|
+
if (config === null || config === void 0 ? void 0 : config.shouldRetry) {
|
|
43
|
+
return config.shouldRetry(error, attempt);
|
|
44
|
+
}
|
|
45
|
+
// Don't retry if max attempts reached
|
|
46
|
+
if (attempt >= maxAttempts) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Only retry if error is marked as retryable
|
|
50
|
+
return error.retryable;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export { calculateRetryDelay, shouldRetry };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE Format Parsers for different AI providers
|
|
3
|
+
* Handles parsing Server-Sent Events from OpenAI, Anthropic (Claude), and Google Gemini APIs
|
|
4
|
+
*/
|
|
5
|
+
export type SSEFormat = 'openai' | 'anthropic' | 'google-gemini';
|
|
6
|
+
export type SSEParser = (line: string) => string | null;
|
|
7
|
+
/**
|
|
8
|
+
* OpenAI streaming format parser
|
|
9
|
+
* Format: data: {"choices":[{"delta":{"content":"token"}}]}
|
|
10
|
+
* End signal: data: [DONE]
|
|
11
|
+
*
|
|
12
|
+
* @param line - Raw SSE line from stream
|
|
13
|
+
* @returns Extracted token or null
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* parseOpenAI('data: {"choices":[{"delta":{"content":"Hello"}}]}')
|
|
17
|
+
* // Returns: "Hello"
|
|
18
|
+
*/
|
|
19
|
+
export declare const parseOpenAI: SSEParser;
|
|
20
|
+
/**
|
|
21
|
+
* Anthropic (Claude) streaming format parser
|
|
22
|
+
* Format:
|
|
23
|
+
* event: content_block_delta
|
|
24
|
+
* data: {"delta":{"type":"text_delta","text":"token"}}
|
|
25
|
+
*
|
|
26
|
+
* @param line - Raw SSE line from stream
|
|
27
|
+
* @returns Extracted token or null
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* parseAnthropic('data: {"delta":{"type":"text_delta","text":"Hello"}}')
|
|
31
|
+
* // Returns: "Hello"
|
|
32
|
+
*/
|
|
33
|
+
export declare const parseAnthropic: SSEParser;
|
|
34
|
+
/**
|
|
35
|
+
* Google Gemini streaming format parser
|
|
36
|
+
* Format: data: {"candidates":[{"content":{"parts":[{"text":"token"}]}}]}
|
|
37
|
+
*
|
|
38
|
+
* @param line - Raw SSE line from stream
|
|
39
|
+
* @returns Extracted token or null
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* parseGemini('data: {"candidates":[{"content":{"parts":[{"text":"Hello"}]}}]}')
|
|
43
|
+
* // Returns: "Hello"
|
|
44
|
+
*/
|
|
45
|
+
export declare const parseGemini: SSEParser;
|
|
46
|
+
/**
|
|
47
|
+
* Parser registry mapping format names to parser functions
|
|
48
|
+
*/
|
|
49
|
+
export declare const SSE_PARSERS: Record<SSEFormat, SSEParser>;
|
|
50
|
+
/**
|
|
51
|
+
* Parse an SSE line using the specified format parser
|
|
52
|
+
*
|
|
53
|
+
* @param line - Raw SSE line from stream
|
|
54
|
+
* @param format - AI provider format or custom parser function
|
|
55
|
+
* @returns Extracted token or null
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // Using predefined format
|
|
59
|
+
* parseSSELine('data: {...}', 'openai')
|
|
60
|
+
*
|
|
61
|
+
* // Using custom parser
|
|
62
|
+
* parseSSELine('data: {...}', (line) => customParser(line))
|
|
63
|
+
*/
|
|
64
|
+
export declare const parseSSELine: (line: string, format: SSEFormat | SSEParser) => string | null;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE Format Parsers for different AI providers
|
|
3
|
+
* Handles parsing Server-Sent Events from OpenAI, Anthropic (Claude), and Google Gemini APIs
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* OpenAI streaming format parser
|
|
7
|
+
* Format: data: {"choices":[{"delta":{"content":"token"}}]}
|
|
8
|
+
* End signal: data: [DONE]
|
|
9
|
+
*
|
|
10
|
+
* @param line - Raw SSE line from stream
|
|
11
|
+
* @returns Extracted token or null
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* parseOpenAI('data: {"choices":[{"delta":{"content":"Hello"}}]}')
|
|
15
|
+
* // Returns: "Hello"
|
|
16
|
+
*/
|
|
17
|
+
var parseOpenAI = function (line) {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
if (!line.startsWith('data: '))
|
|
20
|
+
return null;
|
|
21
|
+
var data = line.slice(6).trim();
|
|
22
|
+
// Handle stream end signal
|
|
23
|
+
if (data === '[DONE]')
|
|
24
|
+
return null;
|
|
25
|
+
try {
|
|
26
|
+
var parsed = JSON.parse(data);
|
|
27
|
+
return ((_c = (_b = (_a = parsed.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.delta) === null || _c === void 0 ? void 0 : _c.content) || null;
|
|
28
|
+
}
|
|
29
|
+
catch (_d) {
|
|
30
|
+
// Invalid JSON - skip this line
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Anthropic (Claude) streaming format parser
|
|
36
|
+
* Format:
|
|
37
|
+
* event: content_block_delta
|
|
38
|
+
* data: {"delta":{"type":"text_delta","text":"token"}}
|
|
39
|
+
*
|
|
40
|
+
* @param line - Raw SSE line from stream
|
|
41
|
+
* @returns Extracted token or null
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* parseAnthropic('data: {"delta":{"type":"text_delta","text":"Hello"}}')
|
|
45
|
+
* // Returns: "Hello"
|
|
46
|
+
*/
|
|
47
|
+
var parseAnthropic = function (line) {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
if (!line.startsWith('data: '))
|
|
50
|
+
return null;
|
|
51
|
+
var data = line.slice(6).trim();
|
|
52
|
+
try {
|
|
53
|
+
var parsed = JSON.parse(data);
|
|
54
|
+
// Anthropic sends different event types - we only care about text deltas
|
|
55
|
+
if (parsed.type === 'content_block_delta') {
|
|
56
|
+
return ((_a = parsed.delta) === null || _a === void 0 ? void 0 : _a.text) || null;
|
|
57
|
+
}
|
|
58
|
+
// Also handle direct delta format
|
|
59
|
+
if (((_b = parsed.delta) === null || _b === void 0 ? void 0 : _b.type) === 'text_delta') {
|
|
60
|
+
return parsed.delta.text || null;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
catch (_c) {
|
|
65
|
+
// Invalid JSON - skip this line
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Google Gemini streaming format parser
|
|
71
|
+
* Format: data: {"candidates":[{"content":{"parts":[{"text":"token"}]}}]}
|
|
72
|
+
*
|
|
73
|
+
* @param line - Raw SSE line from stream
|
|
74
|
+
* @returns Extracted token or null
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* parseGemini('data: {"candidates":[{"content":{"parts":[{"text":"Hello"}]}}]}')
|
|
78
|
+
* // Returns: "Hello"
|
|
79
|
+
*/
|
|
80
|
+
var parseGemini = function (line) {
|
|
81
|
+
var _a, _b, _c, _d, _e;
|
|
82
|
+
if (!line.startsWith('data: '))
|
|
83
|
+
return null;
|
|
84
|
+
var data = line.slice(6).trim();
|
|
85
|
+
try {
|
|
86
|
+
var parsed = JSON.parse(data);
|
|
87
|
+
return ((_e = (_d = (_c = (_b = (_a = parsed.candidates) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.text) || null;
|
|
88
|
+
}
|
|
89
|
+
catch (_f) {
|
|
90
|
+
// Invalid JSON - skip this line
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Parser registry mapping format names to parser functions
|
|
96
|
+
*/
|
|
97
|
+
var SSE_PARSERS = {
|
|
98
|
+
'openai': parseOpenAI,
|
|
99
|
+
'anthropic': parseAnthropic,
|
|
100
|
+
'google-gemini': parseGemini,
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Parse an SSE line using the specified format parser
|
|
104
|
+
*
|
|
105
|
+
* @param line - Raw SSE line from stream
|
|
106
|
+
* @param format - AI provider format or custom parser function
|
|
107
|
+
* @returns Extracted token or null
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* // Using predefined format
|
|
111
|
+
* parseSSELine('data: {...}', 'openai')
|
|
112
|
+
*
|
|
113
|
+
* // Using custom parser
|
|
114
|
+
* parseSSELine('data: {...}', (line) => customParser(line))
|
|
115
|
+
*/
|
|
116
|
+
var parseSSELine = function (line, format) {
|
|
117
|
+
var _a;
|
|
118
|
+
if (typeof format === 'function') {
|
|
119
|
+
return format(line);
|
|
120
|
+
}
|
|
121
|
+
return ((_a = SSE_PARSERS[format]) === null || _a === void 0 ? void 0 : _a.call(SSE_PARSERS, line)) || null;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export { SSE_PARSERS, parseAnthropic, parseGemini, parseOpenAI, parseSSELine };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form State Machine Logic
|
|
3
|
+
* Lightweight engine for declarative form transitions and branching.
|
|
4
|
+
*/
|
|
5
|
+
export type StateIdentifier = string;
|
|
6
|
+
export interface StateMachineConfig<TContext = any> {
|
|
7
|
+
/** The initial state name */
|
|
8
|
+
initial: StateIdentifier;
|
|
9
|
+
/** State definitions */
|
|
10
|
+
states: Record<StateIdentifier, StateDefinition<TContext>>;
|
|
11
|
+
}
|
|
12
|
+
export interface StateDefinition<TContext = any> {
|
|
13
|
+
/** Map of events to transitions */
|
|
14
|
+
on?: Record<string, Transition<TContext>>;
|
|
15
|
+
/** Actions executed when entering this state */
|
|
16
|
+
entry?: Array<(context: TContext) => void>;
|
|
17
|
+
/** Actions executed when exiting this state */
|
|
18
|
+
exit?: Array<(context: TContext) => void>;
|
|
19
|
+
}
|
|
20
|
+
export type Transition<TContext = any> = StateIdentifier | TransitionConfig<TContext>;
|
|
21
|
+
export interface TransitionConfig<TContext = any> {
|
|
22
|
+
/** Target state */
|
|
23
|
+
target: StateIdentifier;
|
|
24
|
+
/** Optional conditional guard */
|
|
25
|
+
guard?: (context: TContext) => boolean;
|
|
26
|
+
/** Actions to execute during transition */
|
|
27
|
+
actions?: Array<(context: TContext) => void>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Result of a state transition
|
|
31
|
+
*/
|
|
32
|
+
export interface TransitionResult<TContext> {
|
|
33
|
+
/** The new state name */
|
|
34
|
+
value: StateIdentifier;
|
|
35
|
+
/** Actions to be performed by the runner */
|
|
36
|
+
actions: Array<(context: TContext) => void>;
|
|
37
|
+
/** Whether the transition actually occurred */
|
|
38
|
+
changed: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pure transition function for the state machine
|
|
42
|
+
*/
|
|
43
|
+
export declare function transition<TContext>(config: StateMachineConfig<TContext>, currentState: StateIdentifier, event: string, context: TContext): TransitionResult<TContext>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form State Machine Logic
|
|
3
|
+
* Lightweight engine for declarative form transitions and branching.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Pure transition function for the state machine
|
|
7
|
+
*/
|
|
8
|
+
function transition(config, currentState, event, context) {
|
|
9
|
+
var stateDef = config.states[currentState];
|
|
10
|
+
if (!stateDef || !stateDef.on) {
|
|
11
|
+
return { value: currentState, actions: [], changed: false };
|
|
12
|
+
}
|
|
13
|
+
var transitionDef = stateDef.on[event];
|
|
14
|
+
if (!transitionDef) {
|
|
15
|
+
return { value: currentState, actions: [], changed: false };
|
|
16
|
+
}
|
|
17
|
+
var targetConfig = typeof transitionDef === "string"
|
|
18
|
+
? { target: transitionDef }
|
|
19
|
+
: transitionDef;
|
|
20
|
+
// Check guard if present
|
|
21
|
+
if (targetConfig.guard && !targetConfig.guard(context)) {
|
|
22
|
+
return { value: currentState, actions: [], changed: false };
|
|
23
|
+
}
|
|
24
|
+
var resultActions = [];
|
|
25
|
+
// Exit current state actions
|
|
26
|
+
if (stateDef.exit) {
|
|
27
|
+
resultActions.push.apply(resultActions, stateDef.exit);
|
|
28
|
+
}
|
|
29
|
+
// Transition specific actions
|
|
30
|
+
if (targetConfig.actions) {
|
|
31
|
+
resultActions.push.apply(resultActions, targetConfig.actions);
|
|
32
|
+
}
|
|
33
|
+
// Entry next state actions
|
|
34
|
+
var nextStateDef = config.states[targetConfig.target];
|
|
35
|
+
if (nextStateDef && nextStateDef.entry) {
|
|
36
|
+
resultActions.push.apply(resultActions, nextStateDef.entry);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
value: targetConfig.target,
|
|
40
|
+
actions: resultActions,
|
|
41
|
+
changed: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { transition };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Error Classes
|
|
3
|
+
* Defines error types for SSE streaming with retryability flags
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base streaming error interface
|
|
7
|
+
*/
|
|
8
|
+
export interface StreamingError {
|
|
9
|
+
type: 'network' | 'timeout' | 'parse' | 'abort' | 'server';
|
|
10
|
+
message: string;
|
|
11
|
+
details?: unknown;
|
|
12
|
+
retryable: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Network error - typically connection issues or fetch failures
|
|
16
|
+
* Retryable: Yes
|
|
17
|
+
*/
|
|
18
|
+
export declare class StreamingNetworkError extends Error implements StreamingError {
|
|
19
|
+
details?: unknown | undefined;
|
|
20
|
+
type: "network";
|
|
21
|
+
retryable: boolean;
|
|
22
|
+
constructor(message: string, details?: unknown | undefined);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Timeout error - request exceeded specified timeout duration
|
|
26
|
+
* Retryable: Yes
|
|
27
|
+
*/
|
|
28
|
+
export declare class StreamingTimeoutError extends Error implements StreamingError {
|
|
29
|
+
type: "timeout";
|
|
30
|
+
retryable: boolean;
|
|
31
|
+
constructor(timeout: number);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parse error - invalid JSON or malformed SSE data
|
|
35
|
+
* Retryable: No (indicates server-side issue or format mismatch)
|
|
36
|
+
*/
|
|
37
|
+
export declare class StreamingParseError extends Error implements StreamingError {
|
|
38
|
+
chunk?: string | undefined;
|
|
39
|
+
type: "parse";
|
|
40
|
+
retryable: boolean;
|
|
41
|
+
constructor(message: string, chunk?: string | undefined);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Abort error - user manually cancelled the stream
|
|
45
|
+
* Retryable: No (user initiated)
|
|
46
|
+
*/
|
|
47
|
+
export declare class StreamingAbortError extends Error implements StreamingError {
|
|
48
|
+
type: "abort";
|
|
49
|
+
retryable: boolean;
|
|
50
|
+
constructor();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Server error - HTTP error response from server (4xx, 5xx)
|
|
54
|
+
* Retryable: No for 4xx, could be Yes for 5xx but defaulting to No
|
|
55
|
+
*/
|
|
56
|
+
export declare class StreamingServerError extends Error implements StreamingError {
|
|
57
|
+
status: number;
|
|
58
|
+
details?: unknown | undefined;
|
|
59
|
+
type: "server";
|
|
60
|
+
retryable: boolean;
|
|
61
|
+
constructor(status: number, statusText: string, details?: unknown | undefined);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Normalize any error into a StreamingError
|
|
65
|
+
* Used to convert unknown errors (from fetch, network, etc.) into typed streaming errors
|
|
66
|
+
*
|
|
67
|
+
* @param error - Any error object
|
|
68
|
+
* @returns Normalized StreamingError
|
|
69
|
+
*/
|
|
70
|
+
export declare const normalizeError: (error: unknown) => StreamingError;
|