tempest-react-sdk 0.53.0 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/dist/access/Can.cjs +1 -1
- package/dist/access/Can.cjs.map +1 -1
- package/dist/access/Can.js +3 -3
- package/dist/access/Can.js.map +1 -1
- package/dist/audio/level-meter.cjs +1 -1
- package/dist/audio/level-meter.cjs.map +1 -1
- package/dist/audio/level-meter.js +15 -15
- package/dist/audio/level-meter.js.map +1 -1
- package/dist/audio/noise-floor.cjs +2 -0
- package/dist/audio/noise-floor.cjs.map +1 -0
- package/dist/audio/noise-floor.js +27 -0
- package/dist/audio/noise-floor.js.map +1 -0
- package/dist/audio/voice-activity.cjs +2 -0
- package/dist/audio/voice-activity.cjs.map +1 -0
- package/dist/audio/voice-activity.js +26 -0
- package/dist/audio/voice-activity.js.map +1 -0
- package/dist/audio/voice-chain-stages.cjs +2 -0
- package/dist/audio/voice-chain-stages.cjs.map +1 -0
- package/dist/audio/voice-chain-stages.js +82 -0
- package/dist/audio/voice-chain-stages.js.map +1 -0
- package/dist/audio/voice-chain.cjs +2 -0
- package/dist/audio/voice-chain.cjs.map +1 -0
- package/dist/audio/voice-chain.js +74 -0
- package/dist/audio/voice-chain.js.map +1 -0
- package/dist/auth/lazy-with-retry.cjs.map +1 -1
- package/dist/auth/lazy-with-retry.js.map +1 -1
- package/dist/auth/passkey.cjs.map +1 -1
- package/dist/auth/passkey.js.map +1 -1
- package/dist/br/BrazilStateCitySelect.cjs +1 -1
- package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
- package/dist/br/BrazilStateCitySelect.js +36 -28
- package/dist/br/BrazilStateCitySelect.js.map +1 -1
- package/dist/br/data/br-centroids.cjs +1 -1
- package/dist/br/data/br-centroids.cjs.map +1 -1
- package/dist/br/data/br-centroids.js +11105 -11045
- package/dist/br/data/br-centroids.js.map +1 -1
- package/dist/br/data/br-locations.cjs +1 -1
- package/dist/br/data/br-locations.cjs.map +1 -1
- package/dist/br/data/br-locations.js +5803 -137
- package/dist/br/data/br-locations.js.map +1 -1
- package/dist/br/data/br-uf-geo.cjs +1 -1
- package/dist/br/data/br-uf-geo.cjs.map +1 -1
- package/dist/br/data/br-uf-geo.js +5721 -6777
- package/dist/br/data/br-uf-geo.js.map +1 -1
- package/dist/br/data/mun/AC.cjs +1 -1
- package/dist/br/data/mun/AC.cjs.map +1 -1
- package/dist/br/data/mun/AC.js +681 -689
- package/dist/br/data/mun/AC.js.map +1 -1
- package/dist/br/data/mun/AL.cjs +1 -1
- package/dist/br/data/mun/AL.cjs.map +1 -1
- package/dist/br/data/mun/AL.js +949 -844
- package/dist/br/data/mun/AL.js.map +1 -1
- package/dist/br/data/mun/AM.cjs +1 -1
- package/dist/br/data/mun/AM.cjs.map +1 -1
- package/dist/br/data/mun/AM.js +4337 -4218
- package/dist/br/data/mun/AM.js.map +1 -1
- package/dist/br/data/mun/AP.cjs +1 -1
- package/dist/br/data/mun/AP.cjs.map +1 -1
- package/dist/br/data/mun/AP.js +786 -780
- package/dist/br/data/mun/AP.js.map +1 -1
- package/dist/br/data/mun/BA.cjs +1 -1
- package/dist/br/data/mun/BA.cjs.map +1 -1
- package/dist/br/data/mun/BA.js +6329 -5633
- package/dist/br/data/mun/BA.js.map +1 -1
- package/dist/br/data/mun/CE.cjs +1 -1
- package/dist/br/data/mun/CE.cjs.map +1 -1
- package/dist/br/data/mun/CE.js +2544 -2487
- package/dist/br/data/mun/CE.js.map +1 -1
- package/dist/br/data/mun/DF.cjs +1 -1
- package/dist/br/data/mun/DF.cjs.map +1 -1
- package/dist/br/data/mun/DF.js +17 -16
- package/dist/br/data/mun/DF.js.map +1 -1
- package/dist/br/data/mun/ES.cjs +1 -1
- package/dist/br/data/mun/ES.cjs.map +1 -1
- package/dist/br/data/mun/ES.js +1101 -1070
- package/dist/br/data/mun/ES.js.map +1 -1
- package/dist/br/data/mun/GO.cjs +1 -1
- package/dist/br/data/mun/GO.cjs.map +1 -1
- package/dist/br/data/mun/GO.js +4632 -4636
- package/dist/br/data/mun/GO.js.map +1 -1
- package/dist/br/data/mun/MA.cjs +1 -1
- package/dist/br/data/mun/MA.cjs.map +1 -1
- package/dist/br/data/mun/MA.js +3603 -3457
- package/dist/br/data/mun/MA.js.map +1 -1
- package/dist/br/data/mun/MG.cjs +1 -1
- package/dist/br/data/mun/MG.cjs.map +1 -1
- package/dist/br/data/mun/MG.js +12716 -11739
- package/dist/br/data/mun/MG.js.map +1 -1
- package/dist/br/data/mun/MS.cjs +1 -1
- package/dist/br/data/mun/MS.cjs.map +1 -1
- package/dist/br/data/mun/MS.js +2182 -2335
- package/dist/br/data/mun/MS.js.map +1 -1
- package/dist/br/data/mun/MT.cjs +1 -1
- package/dist/br/data/mun/MT.cjs.map +1 -1
- package/dist/br/data/mun/MT.js +4808 -4896
- package/dist/br/data/mun/MT.js.map +1 -1
- package/dist/br/data/mun/PA.cjs +1 -1
- package/dist/br/data/mun/PA.cjs.map +1 -1
- package/dist/br/data/mun/PA.js +4981 -4901
- package/dist/br/data/mun/PA.js.map +1 -1
- package/dist/br/data/mun/PB.cjs +1 -1
- package/dist/br/data/mun/PB.cjs.map +1 -1
- package/dist/br/data/mun/PB.js +2418 -1956
- package/dist/br/data/mun/PB.js.map +1 -1
- package/dist/br/data/mun/PE.cjs +1 -1
- package/dist/br/data/mun/PE.cjs.map +1 -1
- package/dist/br/data/mun/PE.js +2164 -1987
- package/dist/br/data/mun/PE.js.map +1 -1
- package/dist/br/data/mun/PI.cjs +1 -1
- package/dist/br/data/mun/PI.cjs.map +1 -1
- package/dist/br/data/mun/PI.js +2982 -2844
- package/dist/br/data/mun/PI.js.map +1 -1
- package/dist/br/data/mun/PR.cjs +1 -1
- package/dist/br/data/mun/PR.cjs.map +1 -1
- package/dist/br/data/mun/PR.js +5425 -5240
- package/dist/br/data/mun/PR.js.map +1 -1
- package/dist/br/data/mun/RJ.cjs +1 -1
- package/dist/br/data/mun/RJ.cjs.map +1 -1
- package/dist/br/data/mun/RJ.js +1395 -1178
- package/dist/br/data/mun/RJ.js.map +1 -1
- package/dist/br/data/mun/RN.cjs +1 -1
- package/dist/br/data/mun/RN.cjs.map +1 -1
- package/dist/br/data/mun/RN.js +1608 -1382
- package/dist/br/data/mun/RN.js.map +1 -1
- package/dist/br/data/mun/RO.cjs +1 -1
- package/dist/br/data/mun/RO.cjs.map +1 -1
- package/dist/br/data/mun/RO.js +1392 -1470
- package/dist/br/data/mun/RO.js.map +1 -1
- package/dist/br/data/mun/RR.cjs +1 -1
- package/dist/br/data/mun/RR.cjs.map +1 -1
- package/dist/br/data/mun/RR.js +795 -778
- package/dist/br/data/mun/RR.js.map +1 -1
- package/dist/br/data/mun/RS.cjs +1 -1
- package/dist/br/data/mun/RS.cjs.map +1 -1
- package/dist/br/data/mun/RS.js +7579 -6424
- package/dist/br/data/mun/RS.js.map +1 -1
- package/dist/br/data/mun/SC.cjs +1 -1
- package/dist/br/data/mun/SC.cjs.map +1 -1
- package/dist/br/data/mun/SC.js +3979 -3357
- package/dist/br/data/mun/SC.js.map +1 -1
- package/dist/br/data/mun/SE.cjs +1 -1
- package/dist/br/data/mun/SE.cjs.map +1 -1
- package/dist/br/data/mun/SE.js +812 -625
- package/dist/br/data/mun/SE.js.map +1 -1
- package/dist/br/data/mun/SP.cjs +1 -1
- package/dist/br/data/mun/SP.cjs.map +1 -1
- package/dist/br/data/mun/SP.js +7866 -6803
- package/dist/br/data/mun/SP.js.map +1 -1
- package/dist/br/data/mun/TO.cjs +1 -1
- package/dist/br/data/mun/TO.cjs.map +1 -1
- package/dist/br/data/mun/TO.js +2763 -2817
- package/dist/br/data/mun/TO.js.map +1 -1
- package/dist/br/locations.cjs +1 -1
- package/dist/br/locations.cjs.map +1 -1
- package/dist/br/locations.js +97 -24
- package/dist/br/locations.js.map +1 -1
- package/dist/br/scales.cjs +1 -1
- package/dist/br/scales.cjs.map +1 -1
- package/dist/br/scales.js +8 -4
- package/dist/br/scales.js.map +1 -1
- package/dist/br/whatsapp.cjs +2 -0
- package/dist/br/whatsapp.cjs.map +1 -0
- package/dist/br/whatsapp.js +21 -0
- package/dist/br/whatsapp.js.map +1 -0
- package/dist/br.cjs +1 -1
- package/dist/br.cjs.map +1 -1
- package/dist/br.d.ts +188 -10
- package/dist/br.js +18 -17
- package/dist/br.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.js +30 -27
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/Command/Command.cjs +1 -1
- package/dist/components/Command/Command.cjs.map +1 -1
- package/dist/components/Command/Command.js +78 -75
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/Drawer/Drawer.cjs +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.js +42 -39
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +111 -67
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/Modal/Modal.cjs +1 -1
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js +45 -42
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Money/Money.cjs +1 -1
- package/dist/components/Money/Money.cjs.map +1 -1
- package/dist/components/Money/Money.js +10 -9
- package/dist/components/Money/Money.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs +1 -1
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js +38 -31
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.module.cjs +1 -1
- package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.module.js +4 -4
- package/dist/components/Pagination/Pagination.module.js.map +1 -1
- package/dist/components/Portal/Portal.cjs +1 -1
- package/dist/components/Portal/Portal.cjs.map +1 -1
- package/dist/components/Portal/Portal.js +9 -6
- package/dist/components/Portal/Portal.js.map +1 -1
- package/dist/components/Portal/portal-host.cjs +2 -0
- package/dist/components/Portal/portal-host.cjs.map +1 -0
- package/dist/components/Portal/portal-host.js +11 -0
- package/dist/components/Portal/portal-host.js.map +1 -0
- package/dist/components/Scheduler/Scheduler.cjs +1 -1
- package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.js +83 -82
- package/dist/components/Scheduler/Scheduler.js.map +1 -1
- package/dist/components/Toast/ToastProvider.cjs +1 -1
- package/dist/components/Toast/ToastProvider.cjs.map +1 -1
- package/dist/components/Toast/ToastProvider.js +55 -53
- package/dist/components/Toast/ToastProvider.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.cjs +1 -1
- package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.js +41 -31
- package/dist/components/VirtualList/VirtualList.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.js +78 -68
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
- package/dist/forms/masked-inputs.cjs +1 -1
- package/dist/forms/masked-inputs.cjs.map +1 -1
- package/dist/forms/masked-inputs.js +20 -19
- package/dist/forms/masked-inputs.js.map +1 -1
- package/dist/hooks/use-fullscreen-element.cjs +2 -0
- package/dist/hooks/use-fullscreen-element.cjs.map +1 -0
- package/dist/hooks/use-fullscreen-element.js +20 -0
- package/dist/hooks/use-fullscreen-element.js.map +1 -0
- package/dist/hooks/use-fullscreen.cjs +2 -0
- package/dist/hooks/use-fullscreen.cjs.map +1 -0
- package/dist/hooks/use-fullscreen.js +66 -0
- package/dist/hooks/use-fullscreen.js.map +1 -0
- package/dist/hooks/use-push-to-talk.cjs +2 -0
- package/dist/hooks/use-push-to-talk.cjs.map +1 -0
- package/dist/hooks/use-push-to-talk.js +61 -0
- package/dist/hooks/use-push-to-talk.js.map +1 -0
- package/dist/http/describe-api-error.cjs.map +1 -1
- package/dist/http/describe-api-error.js.map +1 -1
- package/dist/http/errors.cjs +1 -1
- package/dist/http/errors.cjs.map +1 -1
- package/dist/http/errors.js +34 -16
- package/dist/http/errors.js.map +1 -1
- package/dist/http/parse-response.cjs +2 -2
- package/dist/http/parse-response.cjs.map +1 -1
- package/dist/http/parse-response.js +9 -8
- package/dist/http/parse-response.js.map +1 -1
- package/dist/i18n/create-i18n.cjs +1 -1
- package/dist/i18n/create-i18n.cjs.map +1 -1
- package/dist/i18n/create-i18n.js +28 -27
- package/dist/i18n/create-i18n.js.map +1 -1
- package/dist/router/AppRouter.cjs +1 -1
- package/dist/router/AppRouter.cjs.map +1 -1
- package/dist/router/AppRouter.js +28 -21
- package/dist/router/AppRouter.js.map +1 -1
- package/dist/router/RouteGuard.cjs +1 -1
- package/dist/router/RouteGuard.cjs.map +1 -1
- package/dist/router/RouteGuard.js +4 -4
- package/dist/router/RouteGuard.js.map +1 -1
- package/dist/sse/create-event-stream.cjs +1 -1
- package/dist/sse/create-event-stream.cjs.map +1 -1
- package/dist/sse/create-event-stream.js +34 -38
- package/dist/sse/create-event-stream.js.map +1 -1
- package/dist/styles/AIChat.css +79 -0
- package/dist/styles/Accordion.css +12 -0
- package/dist/styles/Alert.css +32 -0
- package/dist/styles/AppBar.css +17 -0
- package/dist/styles/AppShell.css +8 -0
- package/dist/styles/AspectRatio.css +3 -0
- package/dist/styles/AudioPlayer.css +13 -0
- package/dist/styles/AudioRecorder.css +20 -0
- package/dist/styles/Avatar.css +13 -0
- package/dist/styles/AvatarGroup.css +18 -0
- package/dist/styles/Badge.css +25 -0
- package/dist/styles/Banner.css +13 -0
- package/dist/styles/BarList.css +10 -0
- package/dist/styles/BarcodeScanner.css +21 -0
- package/dist/styles/BottomNavigation.css +10 -0
- package/dist/styles/BottomSheet.css +11 -0
- package/dist/styles/BrazilMap.css +20 -0
- package/dist/styles/Breadcrumbs.css +8 -0
- package/dist/styles/Button.css +42 -0
- package/dist/styles/Calendar.css +16 -0
- package/dist/styles/Card.css +15 -0
- package/dist/styles/Carousel.css +17 -0
- package/dist/styles/Center.css +5 -0
- package/dist/styles/Chat.css +35 -0
- package/dist/styles/Checkbox.css +11 -0
- package/dist/styles/ChipInput.css +13 -0
- package/dist/styles/CodeBlock.css +25 -0
- package/dist/styles/Collapsible.css +6 -0
- package/dist/styles/Combobox.css +18 -0
- package/dist/styles/Command.css +20 -0
- package/dist/styles/ContextMenu.css +11 -0
- package/dist/styles/CopyButton.css +4 -0
- package/dist/styles/DataList.css +3 -0
- package/dist/styles/DataTable.css +19 -0
- package/dist/styles/DateRangePicker.css +22 -0
- package/dist/styles/DescriptionList.css +4 -0
- package/dist/styles/Divider.css +11 -0
- package/dist/styles/Drawer.css +22 -0
- package/dist/styles/DropdownMenu.css +16 -0
- package/dist/styles/Dropzone.css +7 -0
- package/dist/styles/EmptyState.css +6 -0
- package/dist/styles/ErrorState.css +6 -0
- package/dist/styles/ErrorText.css +2 -0
- package/dist/styles/FileUpload.css +17 -0
- package/dist/styles/FilterBar.css +19 -0
- package/dist/styles/FloatingActionButton.css +23 -0
- package/dist/styles/Form.css +21 -0
- package/dist/styles/HoverCard.css +11 -0
- package/dist/styles/IconPicker.css +6 -0
- package/dist/styles/Image.css +2 -0
- package/dist/styles/ImageCropper.css +16 -0
- package/dist/styles/Input.css +24 -0
- package/dist/styles/InstallBanner.css +8 -0
- package/dist/styles/Kanban.css +15 -0
- package/dist/styles/Kbd.css +5 -0
- package/dist/styles/Label.css +3 -0
- package/dist/styles/Layout.css +22 -0
- package/dist/styles/Lightbox.css +21 -0
- package/dist/styles/ListTile.css +14 -0
- package/dist/styles/MapLegend.css +9 -0
- package/dist/styles/Markdown.css +24 -0
- package/dist/styles/Masonry.css +4 -0
- package/dist/styles/Menubar.css +17 -0
- package/dist/styles/Modal.css +21 -0
- package/dist/styles/ModalsManager.css +2 -0
- package/dist/styles/MultiSelect.css +21 -0
- package/dist/styles/MunicipalitySearch.css +6 -0
- package/dist/styles/NProgress.css +2 -0
- package/dist/styles/Navbar.css +10 -0
- package/dist/styles/NavigationMenu.css +12 -0
- package/dist/styles/NavigationRail.css +14 -0
- package/dist/styles/NotificationCenter.css +21 -0
- package/dist/styles/OfflineIndicator.css +7 -0
- package/dist/styles/Page.css +13 -0
- package/dist/styles/Pagination.css +12 -0
- package/dist/styles/PasswordInput.css +21 -0
- package/dist/styles/PinInput.css +13 -0
- package/dist/styles/PixQRCode.css +9 -0
- package/dist/styles/Popover.css +10 -0
- package/dist/styles/Progress.css +11 -0
- package/dist/styles/QRCode.css +3 -0
- package/dist/styles/Radio.css +14 -0
- package/dist/styles/RangeSlider.css +15 -0
- package/dist/styles/RatingStars.css +11 -0
- package/dist/styles/RefreshIndicator.css +5 -0
- package/dist/styles/Resizable.css +13 -0
- package/dist/styles/RichTextEditor.css +19 -0
- package/dist/styles/SafeArea.css +7 -0
- package/dist/styles/Scheduler.css +24 -0
- package/dist/styles/ScrollArea.css +7 -0
- package/dist/styles/SearchBar.css +11 -0
- package/dist/styles/SegmentedControl.css +12 -0
- package/dist/styles/Select.css +14 -0
- package/dist/styles/Sidebar.css +19 -0
- package/dist/styles/SignaturePad.css +6 -0
- package/dist/styles/Skeleton.css +7 -0
- package/dist/styles/Slider.css +15 -0
- package/dist/styles/Spacer.css +4 -0
- package/dist/styles/Sparkline.css +4 -0
- package/dist/styles/Spinner.css +12 -0
- package/dist/styles/Stat.css +12 -0
- package/dist/styles/Stepper.css +17 -0
- package/dist/styles/StepperInput.css +15 -0
- package/dist/styles/Switch.css +11 -0
- package/dist/styles/SyncStatusBadge.css +13 -0
- package/dist/styles/Table.css +16 -0
- package/dist/styles/Tabs.css +14 -0
- package/dist/styles/Tag.css +14 -0
- package/dist/styles/Textarea.css +13 -0
- package/dist/styles/TimePicker.css +14 -0
- package/dist/styles/Timeline.css +17 -0
- package/dist/styles/Toast.css +21 -0
- package/dist/styles/Toggle.css +12 -0
- package/dist/styles/ToggleGroup.css +9 -0
- package/dist/styles/Tooltip.css +10 -0
- package/dist/styles/Tour.css +20 -0
- package/dist/styles/TrajectoryMap.css +16 -0
- package/dist/styles/Transfer.css +21 -0
- package/dist/styles/TreeView.css +17 -0
- package/dist/styles/TruncateText.css +2 -0
- package/dist/styles/UpdatePrompt.css +10 -0
- package/dist/styles/VirtualList.css +5 -0
- package/dist/styles/VirtualTable.css +17 -0
- package/dist/styles/VisuallyHidden.css +2 -0
- package/dist/styles/Wizard.css +4 -0
- package/dist/styles/actions.css +104 -0
- package/dist/styles/advanced.css +66 -0
- package/dist/styles/br.css +41 -0
- package/dist/styles/chat.css +113 -0
- package/dist/styles/core.css +40 -0
- package/dist/styles/data.css +222 -0
- package/dist/styles/editor.css +19 -0
- package/dist/styles/feedback.css +201 -0
- package/dist/styles/forms.css +321 -0
- package/dist/styles/geo.css +16 -0
- package/dist/styles/icons.css +6 -0
- package/dist/styles/identity.css +48 -0
- package/dist/styles/layout.css +122 -0
- package/dist/styles/media.css +52 -0
- package/dist/styles/navigation.css +167 -0
- package/dist/styles/overlay.css +73 -0
- package/dist/styles/utility.css +39 -0
- package/dist/styles.css +1 -1
- package/dist/sw/register-service-worker.cjs +1 -1
- package/dist/sw/register-service-worker.cjs.map +1 -1
- package/dist/sw/register-service-worker.js +21 -17
- package/dist/sw/register-service-worker.js.map +1 -1
- package/dist/sw.d.ts +17 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +904 -41
- package/dist/tempest-react-sdk.js +293 -286
- package/dist/utils/dev-mode.cjs.map +1 -1
- package/dist/utils/dev-mode.js.map +1 -1
- package/dist/utils/format.cjs +1 -1
- package/dist/utils/format.cjs.map +1 -1
- package/dist/utils/format.js +22 -14
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/intl-cache.cjs +2 -0
- package/dist/utils/intl-cache.cjs.map +1 -0
- package/dist/utils/intl-cache.js +23 -0
- package/dist/utils/intl-cache.js.map +1 -0
- package/dist/utils/json-frame.cjs +2 -0
- package/dist/utils/json-frame.cjs.map +1 -0
- package/dist/utils/json-frame.js +30 -0
- package/dist/utils/json-frame.js.map +1 -0
- package/dist/utils/numbers.cjs +1 -1
- package/dist/utils/numbers.cjs.map +1 -1
- package/dist/utils/numbers.js +8 -7
- package/dist/utils/numbers.js.map +1 -1
- package/dist/vision/results.cjs +1 -1
- package/dist/vision/results.cjs.map +1 -1
- package/dist/vision/results.js +26 -17
- package/dist/vision/results.js.map +1 -1
- package/dist/vision.d.ts +29 -0
- package/dist/vite/tempest-icons.cjs +1 -1
- package/dist/vite/tempest-icons.cjs.map +1 -1
- package/dist/vite/tempest-icons.js +1 -1
- package/dist/vite/tempest-icons.js.map +1 -1
- package/dist/webrtc/link-stats.cjs +2 -0
- package/dist/webrtc/link-stats.cjs.map +1 -0
- package/dist/webrtc/link-stats.js +74 -0
- package/dist/webrtc/link-stats.js.map +1 -0
- package/dist/webrtc/use-link-stats.cjs +2 -0
- package/dist/webrtc/use-link-stats.cjs.map +1 -0
- package/dist/webrtc/use-link-stats.js +22 -0
- package/dist/webrtc/use-link-stats.js.map +1 -0
- package/dist/ws/create-web-socket.cjs +1 -1
- package/dist/ws/create-web-socket.cjs.map +1 -1
- package/dist/ws/create-web-socket.js +81 -85
- package/dist/ws/create-web-socket.js.map +1 -1
- package/dist/ws/use-web-socket.cjs +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js +42 -48
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteGuard.cjs","names":[],"sources":["../../src/router/RouteGuard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Navigate } from \"react-router\";\n\nexport interface RouteGuardProps {\n /**\n * Whether access is allowed
|
|
1
|
+
{"version":3,"file":"RouteGuard.cjs","names":[],"sources":["../../src/router/RouteGuard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Navigate } from \"react-router\";\nimport type { RouteGuardResult } from \"./types\";\n\nexport interface RouteGuardProps {\n /**\n * Whether access is allowed — typically\n * `useAuthStore((s) => s.isAuthenticated)`.\n *\n * `\"pending\"` is the third answer, for a permission that has not resolved\n * yet: it holds the decision and renders {@link fallback} instead of\n * choosing between two wrong moves — redirecting someone who does have\n * access, or showing the screen to someone who does not.\n */\n when: RouteGuardResult;\n /**\n * Rendered while `when` is `\"pending\"`. Defaults to nothing, which is a\n * blank screen — pass the same spinner the rest of the app uses.\n */\n fallback?: ReactNode;\n /** Where to redirect when `when` is falsy (default: `\"/\"`). */\n redirectTo?: string;\n /** Replace history entry on redirect instead of pushing (default: true). */\n replace?: boolean;\n /** Protected content, usually `<Outlet />` for a guarded layout route. */\n children: ReactNode;\n}\n\n/**\n * Declarative route guard built on React Router's `<Navigate>`. Renders its\n * children when `when` is `true`, redirects when it is `false`, and holds on\n * `\"pending\"`. Pairs naturally with `createAuthStore` for protected areas, and\n * with `useCan` for permissions that resolve over the network.\n *\n * @example\n * <RouteGuard when={useAuthStore((s) => s.isAuthenticated)} redirectTo=\"/login\">\n * <Outlet />\n * </RouteGuard>\n *\n * @example\n * const { allowed, isLoading } = useCan({ action: \"read\", resource: \"finance\" });\n *\n * <RouteGuard when={isLoading ? \"pending\" : allowed} fallback={<Spinner />}>\n * <Outlet />\n * </RouteGuard>\n */\nexport function RouteGuard({\n when,\n fallback = null,\n redirectTo = \"/\",\n replace = true,\n children,\n}: RouteGuardProps) {\n if (when === \"pending\") return <>{fallback}</>;\n return <>{when ? children : <Navigate to={redirectTo} replace={replace} />}</>;\n}\n"],"mappings":"6DA8CA,SAAgB,EAAW,CACvB,OACA,WAAW,KACX,aAAa,IACb,UAAU,GACV,YACgB,CAEhB,OADI,IAAS,WAAkB,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SAAG,CAAW,CAAA,GACtC,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SAAG,EAAO,GAAW,EAAA,EAAA,IAAA,CAAC,EAAA,SAAD,CAAU,GAAI,EAAqB,SAAU,CAAA,CAAI,CAAA,CACjF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Fragment as e, jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import { Navigate as n } from "react-router";
|
|
3
3
|
//#region src/router/RouteGuard.tsx
|
|
4
|
-
function r({ when: r,
|
|
5
|
-
return /* @__PURE__ */ t(e, { children: r ?
|
|
6
|
-
to:
|
|
7
|
-
replace:
|
|
4
|
+
function r({ when: r, fallback: i = null, redirectTo: a = "/", replace: o = !0, children: s }) {
|
|
5
|
+
return r === "pending" ? /* @__PURE__ */ t(e, { children: i }) : /* @__PURE__ */ t(e, { children: r ? s : /* @__PURE__ */ t(n, {
|
|
6
|
+
to: a,
|
|
7
|
+
replace: o
|
|
8
8
|
}) });
|
|
9
9
|
}
|
|
10
10
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteGuard.js","names":[],"sources":["../../src/router/RouteGuard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Navigate } from \"react-router\";\n\nexport interface RouteGuardProps {\n /**\n * Whether access is allowed
|
|
1
|
+
{"version":3,"file":"RouteGuard.js","names":[],"sources":["../../src/router/RouteGuard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Navigate } from \"react-router\";\nimport type { RouteGuardResult } from \"./types\";\n\nexport interface RouteGuardProps {\n /**\n * Whether access is allowed — typically\n * `useAuthStore((s) => s.isAuthenticated)`.\n *\n * `\"pending\"` is the third answer, for a permission that has not resolved\n * yet: it holds the decision and renders {@link fallback} instead of\n * choosing between two wrong moves — redirecting someone who does have\n * access, or showing the screen to someone who does not.\n */\n when: RouteGuardResult;\n /**\n * Rendered while `when` is `\"pending\"`. Defaults to nothing, which is a\n * blank screen — pass the same spinner the rest of the app uses.\n */\n fallback?: ReactNode;\n /** Where to redirect when `when` is falsy (default: `\"/\"`). */\n redirectTo?: string;\n /** Replace history entry on redirect instead of pushing (default: true). */\n replace?: boolean;\n /** Protected content, usually `<Outlet />` for a guarded layout route. */\n children: ReactNode;\n}\n\n/**\n * Declarative route guard built on React Router's `<Navigate>`. Renders its\n * children when `when` is `true`, redirects when it is `false`, and holds on\n * `\"pending\"`. Pairs naturally with `createAuthStore` for protected areas, and\n * with `useCan` for permissions that resolve over the network.\n *\n * @example\n * <RouteGuard when={useAuthStore((s) => s.isAuthenticated)} redirectTo=\"/login\">\n * <Outlet />\n * </RouteGuard>\n *\n * @example\n * const { allowed, isLoading } = useCan({ action: \"read\", resource: \"finance\" });\n *\n * <RouteGuard when={isLoading ? \"pending\" : allowed} fallback={<Spinner />}>\n * <Outlet />\n * </RouteGuard>\n */\nexport function RouteGuard({\n when,\n fallback = null,\n redirectTo = \"/\",\n replace = true,\n children,\n}: RouteGuardProps) {\n if (when === \"pending\") return <>{fallback}</>;\n return <>{when ? children : <Navigate to={redirectTo} replace={replace} />}</>;\n}\n"],"mappings":";;;AA8CA,SAAgB,EAAW,EACvB,SACA,cAAW,MACX,gBAAa,KACb,aAAU,IACV,eACgB;CAEhB,OADI,MAAS,YAAkB,kBAAA,GAAA,EAAA,UAAG,EAAW,CAAA,IACtC,kBAAA,GAAA,EAAA,UAAG,IAAO,IAAW,kBAAC,GAAD;EAAU,IAAI;EAAqB;CAAU,CAAA,EAAI,CAAA;AACjF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require("../utils/json-frame.cjs");function t(t,n={}){let{withCredentials:r=!1,namedEvents:i=[],heartbeatEvents:a=[`ping`],maxRetries:o=10,initialBackoff:s=1e3,maxBackoff:c=3e4,parser:l,onOpen:u,onMessage:d,onError:f,onParseError:p,onStatusChange:m}=n,h=null,g=null,_=0,v=`idle`,y=!1;function b(e){v!==e&&(v=e,m?.(e))}function x(t,n){if(a.includes(t))return;let r=e.decodeFrame(typeof n.data==`string`?n.data:``,l,p,`createEventStream`);r.delivered&&d?.({event:t,data:r.data,id:n.lastEventId||void 0,raw:n})}function S(){if(y)return;if(_>=o){b(`error`);return}let e=Math.min(s*2**_,c);_+=1,g=setTimeout(C,e)}function C(){if(y)return;h&&h.close(),b(`connecting`);let e=new EventSource(t,{withCredentials:r});h=e,e.onopen=()=>{_=0,b(`open`),u?.()},e.onmessage=e=>x(`message`,e);for(let t of i)e.addEventListener(t,e=>x(t,e));for(let t of a)e.addEventListener(t,()=>{});e.onerror=t=>{f?.(t),e.close(),h=null,b(`closed`),S()}}function w(){y=!0,g&&=(clearTimeout(g),null),_=0,h&&=(h.close(),null),b(`closed`)}function T(){g&&=(clearTimeout(g),null),_=0,y=!1,C()}return C(),{close:w,reconnect:T,get status(){return v}}}exports.createEventStream=t;
|
|
2
2
|
//# sourceMappingURL=create-event-stream.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-event-stream.cjs","names":[],"sources":["../../src/sse/create-event-stream.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body is the SSE line protocol — accumulate\n * `data:` lines until a blank line, track `id:` for Last-Event-ID, honour `retry:` —\n * plus the reconnect that uses the id it just tracked.\n */\nexport type EventStreamStatus = \"idle\" | \"connecting\" | \"open\" | \"closed\" | \"error\";\n\nexport interface EventStreamMessage<T> {\n /** Server-named event (default `\"message\"`). */\n event: string;\n /** Parsed payload — JSON-decoded when possible, raw string otherwise. */\n data: T;\n /** Server-supplied id, if any. */\n id?: string;\n /** Raw `MessageEvent` for advanced cases. */\n raw: MessageEvent;\n}\n\nexport interface CreateEventStreamOptions<T> {\n /** Send cookies with the EventSource handshake. Default: false. */\n withCredentials?: boolean;\n /** Subscribe to named events in addition to `message`. */\n namedEvents?: readonly string[];\n /** Treat these named events as heartbeat-only (no callback). Default: `[\"ping\"]`. */\n heartbeatEvents?: readonly string[];\n /** Max reconnect attempts. Default: 10. Pass 0 to disable reconnect. */\n maxRetries?: number;\n /** Initial backoff in ms; doubles per attempt, capped at `maxBackoff`. Default: 1000. */\n initialBackoff?: number;\n /** Maximum backoff in ms. Default: 30000. */\n maxBackoff?: number;\n /** Parse `event.data`. Defaults to JSON with raw-string fallback. */\n parser?: (raw: string) => T;\n onOpen?: () => void;\n onMessage?: (message: EventStreamMessage<T>) => void;\n onError?: (error: Event) => void;\n onStatusChange?: (status: EventStreamStatus) => void;\n}\n\nexport interface EventStreamController {\n close: () => void;\n /** Force an immediate reconnect, resetting the retry counter. */\n reconnect: () => void;\n /** Current connection status. */\n readonly status: EventStreamStatus;\n}\n\
|
|
1
|
+
{"version":3,"file":"create-event-stream.cjs","names":[],"sources":["../../src/sse/create-event-stream.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body is the SSE line protocol — accumulate\n * `data:` lines until a blank line, track `id:` for Last-Event-ID, honour `retry:` —\n * plus the reconnect that uses the id it just tracked.\n */\nimport { decodeFrame } from \"../utils/json-frame\";\nexport type EventStreamStatus = \"idle\" | \"connecting\" | \"open\" | \"closed\" | \"error\";\n\nexport interface EventStreamMessage<T> {\n /** Server-named event (default `\"message\"`). */\n event: string;\n /** Parsed payload — JSON-decoded when possible, raw string otherwise. */\n data: T;\n /** Server-supplied id, if any. */\n id?: string;\n /** Raw `MessageEvent` for advanced cases. */\n raw: MessageEvent;\n}\n\nexport interface CreateEventStreamOptions<T> {\n /** Send cookies with the EventSource handshake. Default: false. */\n withCredentials?: boolean;\n /** Subscribe to named events in addition to `message`. */\n namedEvents?: readonly string[];\n /** Treat these named events as heartbeat-only (no callback). Default: `[\"ping\"]`. */\n heartbeatEvents?: readonly string[];\n /** Max reconnect attempts. Default: 10. Pass 0 to disable reconnect. */\n maxRetries?: number;\n /** Initial backoff in ms; doubles per attempt, capped at `maxBackoff`. Default: 1000. */\n initialBackoff?: number;\n /** Maximum backoff in ms. Default: 30000. */\n maxBackoff?: number;\n /** Parse `event.data`. Defaults to JSON with raw-string fallback. */\n parser?: (raw: string) => T;\n /**\n * A frame arrived that is not valid JSON, and no `parser` was supplied.\n *\n * Registering this drops the frame instead of delivering it: the previous\n * behaviour handed `onMessage` the raw `string` announced as your message\n * type, so the failure surfaced later, at the first property access, with\n * nothing left pointing at the parse. Leave it out and that behaviour is\n * kept, with a one-time warning in development builds.\n */\n onParseError?: (error: unknown, raw: string) => void;\n onOpen?: () => void;\n onMessage?: (message: EventStreamMessage<T>) => void;\n onError?: (error: Event) => void;\n onStatusChange?: (status: EventStreamStatus) => void;\n}\n\nexport interface EventStreamController {\n close: () => void;\n /** Force an immediate reconnect, resetting the retry counter. */\n reconnect: () => void;\n /** Current connection status. */\n readonly status: EventStreamStatus;\n}\n\n/**\n * Open a Server-Sent Events stream with automatic exponential-backoff reconnect.\n *\n * Heartbeat events (default `\"ping\"`) keep the socket alive without firing\n * `onMessage`. Pass `withCredentials: true` when the backend authenticates via\n * cookies. Call `close()` from the returned controller to tear down.\n *\n * @param url - Full SSE endpoint URL.\n * @param options - Stream configuration and callbacks.\n * @returns A controller exposing `close`, `reconnect` and the current `status`.\n */\nexport function createEventStream<T = unknown>(\n url: string,\n options: CreateEventStreamOptions<T> = {},\n): EventStreamController {\n const {\n withCredentials = false,\n namedEvents = [],\n heartbeatEvents = [\"ping\"],\n maxRetries = 10,\n initialBackoff = 1000,\n maxBackoff = 30000,\n parser,\n onOpen,\n onMessage,\n onError,\n onParseError,\n onStatusChange,\n } = options;\n\n let source: EventSource | null = null;\n let retryTimer: ReturnType<typeof setTimeout> | null = null;\n let retries = 0;\n let status: EventStreamStatus = \"idle\";\n let closed = false;\n\n function setStatus(next: EventStreamStatus): void {\n if (status === next) return;\n status = next;\n onStatusChange?.(next);\n }\n\n function emit(eventName: string, event: MessageEvent): void {\n if (heartbeatEvents.includes(eventName)) return;\n const decoded = decodeFrame<T>(\n typeof event.data === \"string\" ? event.data : \"\",\n parser,\n onParseError,\n \"createEventStream\",\n );\n if (!decoded.delivered) return;\n onMessage?.({\n event: eventName,\n data: decoded.data,\n id: event.lastEventId || undefined,\n raw: event,\n });\n }\n\n function scheduleReconnect(): void {\n if (closed) return;\n if (retries >= maxRetries) {\n setStatus(\"error\");\n return;\n }\n const delay = Math.min(initialBackoff * 2 ** retries, maxBackoff);\n retries += 1;\n retryTimer = setTimeout(connect, delay);\n }\n\n function connect(): void {\n if (closed) return;\n if (source) source.close();\n setStatus(\"connecting\");\n\n const es = new EventSource(url, { withCredentials });\n source = es;\n\n es.onopen = () => {\n retries = 0;\n setStatus(\"open\");\n onOpen?.();\n };\n\n es.onmessage = (event) => emit(\"message\", event);\n for (const name of namedEvents) {\n es.addEventListener(name, (event) => emit(name, event as MessageEvent));\n }\n for (const name of heartbeatEvents) {\n es.addEventListener(name, () => {\n /* heartbeat — keep socket alive */\n });\n }\n\n es.onerror = (event) => {\n onError?.(event);\n es.close();\n source = null;\n setStatus(\"closed\");\n scheduleReconnect();\n };\n }\n\n function close(): void {\n closed = true;\n if (retryTimer) {\n clearTimeout(retryTimer);\n retryTimer = null;\n }\n retries = 0;\n if (source) {\n source.close();\n source = null;\n }\n setStatus(\"closed\");\n }\n\n function reconnect(): void {\n if (retryTimer) {\n clearTimeout(retryTimer);\n retryTimer = null;\n }\n retries = 0;\n closed = false;\n connect();\n }\n\n connect();\n\n return {\n close,\n reconnect,\n get status() {\n return status;\n },\n };\n}\n"],"mappings":"2CAqEA,SAAgB,EACZ,EACA,EAAuC,CAAC,EACnB,CACrB,GAAM,CACF,kBAAkB,GAClB,cAAc,CAAC,EACf,kBAAkB,CAAC,MAAM,EACzB,aAAa,GACb,iBAAiB,IACjB,aAAa,IACb,SACA,SACA,YACA,UACA,eACA,kBACA,EAEA,EAA6B,KAC7B,EAAmD,KACnD,EAAU,EACV,EAA4B,OAC5B,EAAS,GAEb,SAAS,EAAU,EAA+B,CAC1C,IAAW,IACf,EAAS,EACT,IAAiB,CAAI,EACzB,CAEA,SAAS,EAAK,EAAmB,EAA2B,CACxD,GAAI,EAAgB,SAAS,CAAS,EAAG,OACzC,IAAM,EAAU,EAAA,YACZ,OAAO,EAAM,MAAS,SAAW,EAAM,KAAO,GAC9C,EACA,EACA,mBACJ,EACK,EAAQ,WACb,IAAY,CACR,MAAO,EACP,KAAM,EAAQ,KACd,GAAI,EAAM,aAAe,IAAA,GACzB,IAAK,CACT,CAAC,CACL,CAEA,SAAS,GAA0B,CAC/B,GAAI,EAAQ,OACZ,GAAI,GAAW,EAAY,CACvB,EAAU,OAAO,EACjB,MACJ,CACA,IAAM,EAAQ,KAAK,IAAI,EAAiB,GAAK,EAAS,CAAU,EAChE,GAAW,EACX,EAAa,WAAW,EAAS,CAAK,CAC1C,CAEA,SAAS,GAAgB,CACrB,GAAI,EAAQ,OACR,GAAQ,EAAO,MAAM,EACzB,EAAU,YAAY,EAEtB,IAAM,EAAK,IAAI,YAAY,EAAK,CAAE,iBAAgB,CAAC,EACnD,EAAS,EAET,EAAG,WAAe,CACd,EAAU,EACV,EAAU,MAAM,EAChB,IAAS,CACb,EAEA,EAAG,UAAa,GAAU,EAAK,UAAW,CAAK,EAC/C,IAAK,IAAM,KAAQ,EACf,EAAG,iBAAiB,EAAO,GAAU,EAAK,EAAM,CAAqB,CAAC,EAE1E,IAAK,IAAM,KAAQ,EACf,EAAG,iBAAiB,MAAY,CAEhC,CAAC,EAGL,EAAG,QAAW,GAAU,CACpB,IAAU,CAAK,EACf,EAAG,MAAM,EACT,EAAS,KACT,EAAU,QAAQ,EAClB,EAAkB,CACtB,CACJ,CAEA,SAAS,GAAc,CACnB,EAAS,GACT,AAEI,KADA,aAAa,CAAU,EACV,MAEjB,EAAU,EACV,AAEI,KADA,EAAO,MAAM,EACJ,MAEb,EAAU,QAAQ,CACtB,CAEA,SAAS,GAAkB,CACvB,AAEI,KADA,aAAa,CAAU,EACV,MAEjB,EAAU,EACV,EAAS,GACT,EAAQ,CACZ,CAIA,OAFA,EAAQ,EAED,CACH,QACA,YACA,IAAI,QAAS,CACT,OAAO,CACX,CACJ,CACJ"}
|
|
@@ -1,57 +1,53 @@
|
|
|
1
|
+
import { decodeFrame as e } from "../utils/json-frame.js";
|
|
1
2
|
//#region src/sse/create-event-stream.ts
|
|
2
|
-
function e(e) {
|
|
3
|
-
try {
|
|
4
|
-
return JSON.parse(e);
|
|
5
|
-
} catch {
|
|
6
|
-
return e;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
3
|
function t(t, n = {}) {
|
|
10
|
-
let { withCredentials: r = !1, namedEvents: i = [], heartbeatEvents: a = ["ping"], maxRetries: o = 10, initialBackoff: s = 1e3, maxBackoff: c = 3e4, parser: l
|
|
11
|
-
function
|
|
12
|
-
|
|
4
|
+
let { withCredentials: r = !1, namedEvents: i = [], heartbeatEvents: a = ["ping"], maxRetries: o = 10, initialBackoff: s = 1e3, maxBackoff: c = 3e4, parser: l, onOpen: u, onMessage: d, onError: f, onParseError: p, onStatusChange: m } = n, h = null, g = null, _ = 0, v = "idle", y = !1;
|
|
5
|
+
function b(e) {
|
|
6
|
+
v !== e && (v = e, m?.(e));
|
|
13
7
|
}
|
|
14
|
-
function
|
|
15
|
-
a.includes(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
function x(t, n) {
|
|
9
|
+
if (a.includes(t)) return;
|
|
10
|
+
let r = e(typeof n.data == "string" ? n.data : "", l, p, "createEventStream");
|
|
11
|
+
r.delivered && d?.({
|
|
12
|
+
event: t,
|
|
13
|
+
data: r.data,
|
|
14
|
+
id: n.lastEventId || void 0,
|
|
15
|
+
raw: n
|
|
20
16
|
});
|
|
21
17
|
}
|
|
22
|
-
function
|
|
23
|
-
if (
|
|
24
|
-
if (
|
|
25
|
-
|
|
18
|
+
function S() {
|
|
19
|
+
if (y) return;
|
|
20
|
+
if (_ >= o) {
|
|
21
|
+
b("error");
|
|
26
22
|
return;
|
|
27
23
|
}
|
|
28
|
-
let e = Math.min(s * 2 **
|
|
29
|
-
|
|
24
|
+
let e = Math.min(s * 2 ** _, c);
|
|
25
|
+
_ += 1, g = setTimeout(C, e);
|
|
30
26
|
}
|
|
31
|
-
function
|
|
32
|
-
if (
|
|
33
|
-
|
|
27
|
+
function C() {
|
|
28
|
+
if (y) return;
|
|
29
|
+
h && h.close(), b("connecting");
|
|
34
30
|
let e = new EventSource(t, { withCredentials: r });
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}, e.onmessage = (e) =>
|
|
38
|
-
for (let t of i) e.addEventListener(t, (e) =>
|
|
31
|
+
h = e, e.onopen = () => {
|
|
32
|
+
_ = 0, b("open"), u?.();
|
|
33
|
+
}, e.onmessage = (e) => x("message", e);
|
|
34
|
+
for (let t of i) e.addEventListener(t, (e) => x(t, e));
|
|
39
35
|
for (let t of a) e.addEventListener(t, () => {});
|
|
40
36
|
e.onerror = (t) => {
|
|
41
|
-
f?.(t), e.close(),
|
|
37
|
+
f?.(t), e.close(), h = null, b("closed"), S();
|
|
42
38
|
};
|
|
43
39
|
}
|
|
44
|
-
function C() {
|
|
45
|
-
v = !0, h &&= (clearTimeout(h), null), g = 0, m &&= (m.close(), null), y("closed");
|
|
46
|
-
}
|
|
47
40
|
function w() {
|
|
48
|
-
|
|
41
|
+
y = !0, g &&= (clearTimeout(g), null), _ = 0, h &&= (h.close(), null), b("closed");
|
|
42
|
+
}
|
|
43
|
+
function T() {
|
|
44
|
+
g &&= (clearTimeout(g), null), _ = 0, y = !1, C();
|
|
49
45
|
}
|
|
50
|
-
return
|
|
51
|
-
close:
|
|
52
|
-
reconnect:
|
|
46
|
+
return C(), {
|
|
47
|
+
close: w,
|
|
48
|
+
reconnect: T,
|
|
53
49
|
get status() {
|
|
54
|
-
return
|
|
50
|
+
return v;
|
|
55
51
|
}
|
|
56
52
|
};
|
|
57
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-event-stream.js","names":[],"sources":["../../src/sse/create-event-stream.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body is the SSE line protocol — accumulate\n * `data:` lines until a blank line, track `id:` for Last-Event-ID, honour `retry:` —\n * plus the reconnect that uses the id it just tracked.\n */\nexport type EventStreamStatus = \"idle\" | \"connecting\" | \"open\" | \"closed\" | \"error\";\n\nexport interface EventStreamMessage<T> {\n /** Server-named event (default `\"message\"`). */\n event: string;\n /** Parsed payload — JSON-decoded when possible, raw string otherwise. */\n data: T;\n /** Server-supplied id, if any. */\n id?: string;\n /** Raw `MessageEvent` for advanced cases. */\n raw: MessageEvent;\n}\n\nexport interface CreateEventStreamOptions<T> {\n /** Send cookies with the EventSource handshake. Default: false. */\n withCredentials?: boolean;\n /** Subscribe to named events in addition to `message`. */\n namedEvents?: readonly string[];\n /** Treat these named events as heartbeat-only (no callback). Default: `[\"ping\"]`. */\n heartbeatEvents?: readonly string[];\n /** Max reconnect attempts. Default: 10. Pass 0 to disable reconnect. */\n maxRetries?: number;\n /** Initial backoff in ms; doubles per attempt, capped at `maxBackoff`. Default: 1000. */\n initialBackoff?: number;\n /** Maximum backoff in ms. Default: 30000. */\n maxBackoff?: number;\n /** Parse `event.data`. Defaults to JSON with raw-string fallback. */\n parser?: (raw: string) => T;\n onOpen?: () => void;\n onMessage?: (message: EventStreamMessage<T>) => void;\n onError?: (error: Event) => void;\n onStatusChange?: (status: EventStreamStatus) => void;\n}\n\nexport interface EventStreamController {\n close: () => void;\n /** Force an immediate reconnect, resetting the retry counter. */\n reconnect: () => void;\n /** Current connection status. */\n readonly status: EventStreamStatus;\n}\n\
|
|
1
|
+
{"version":3,"file":"create-event-stream.js","names":[],"sources":["../../src/sse/create-event-stream.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body is the SSE line protocol — accumulate\n * `data:` lines until a blank line, track `id:` for Last-Event-ID, honour `retry:` —\n * plus the reconnect that uses the id it just tracked.\n */\nimport { decodeFrame } from \"../utils/json-frame\";\nexport type EventStreamStatus = \"idle\" | \"connecting\" | \"open\" | \"closed\" | \"error\";\n\nexport interface EventStreamMessage<T> {\n /** Server-named event (default `\"message\"`). */\n event: string;\n /** Parsed payload — JSON-decoded when possible, raw string otherwise. */\n data: T;\n /** Server-supplied id, if any. */\n id?: string;\n /** Raw `MessageEvent` for advanced cases. */\n raw: MessageEvent;\n}\n\nexport interface CreateEventStreamOptions<T> {\n /** Send cookies with the EventSource handshake. Default: false. */\n withCredentials?: boolean;\n /** Subscribe to named events in addition to `message`. */\n namedEvents?: readonly string[];\n /** Treat these named events as heartbeat-only (no callback). Default: `[\"ping\"]`. */\n heartbeatEvents?: readonly string[];\n /** Max reconnect attempts. Default: 10. Pass 0 to disable reconnect. */\n maxRetries?: number;\n /** Initial backoff in ms; doubles per attempt, capped at `maxBackoff`. Default: 1000. */\n initialBackoff?: number;\n /** Maximum backoff in ms. Default: 30000. */\n maxBackoff?: number;\n /** Parse `event.data`. Defaults to JSON with raw-string fallback. */\n parser?: (raw: string) => T;\n /**\n * A frame arrived that is not valid JSON, and no `parser` was supplied.\n *\n * Registering this drops the frame instead of delivering it: the previous\n * behaviour handed `onMessage` the raw `string` announced as your message\n * type, so the failure surfaced later, at the first property access, with\n * nothing left pointing at the parse. Leave it out and that behaviour is\n * kept, with a one-time warning in development builds.\n */\n onParseError?: (error: unknown, raw: string) => void;\n onOpen?: () => void;\n onMessage?: (message: EventStreamMessage<T>) => void;\n onError?: (error: Event) => void;\n onStatusChange?: (status: EventStreamStatus) => void;\n}\n\nexport interface EventStreamController {\n close: () => void;\n /** Force an immediate reconnect, resetting the retry counter. */\n reconnect: () => void;\n /** Current connection status. */\n readonly status: EventStreamStatus;\n}\n\n/**\n * Open a Server-Sent Events stream with automatic exponential-backoff reconnect.\n *\n * Heartbeat events (default `\"ping\"`) keep the socket alive without firing\n * `onMessage`. Pass `withCredentials: true` when the backend authenticates via\n * cookies. Call `close()` from the returned controller to tear down.\n *\n * @param url - Full SSE endpoint URL.\n * @param options - Stream configuration and callbacks.\n * @returns A controller exposing `close`, `reconnect` and the current `status`.\n */\nexport function createEventStream<T = unknown>(\n url: string,\n options: CreateEventStreamOptions<T> = {},\n): EventStreamController {\n const {\n withCredentials = false,\n namedEvents = [],\n heartbeatEvents = [\"ping\"],\n maxRetries = 10,\n initialBackoff = 1000,\n maxBackoff = 30000,\n parser,\n onOpen,\n onMessage,\n onError,\n onParseError,\n onStatusChange,\n } = options;\n\n let source: EventSource | null = null;\n let retryTimer: ReturnType<typeof setTimeout> | null = null;\n let retries = 0;\n let status: EventStreamStatus = \"idle\";\n let closed = false;\n\n function setStatus(next: EventStreamStatus): void {\n if (status === next) return;\n status = next;\n onStatusChange?.(next);\n }\n\n function emit(eventName: string, event: MessageEvent): void {\n if (heartbeatEvents.includes(eventName)) return;\n const decoded = decodeFrame<T>(\n typeof event.data === \"string\" ? event.data : \"\",\n parser,\n onParseError,\n \"createEventStream\",\n );\n if (!decoded.delivered) return;\n onMessage?.({\n event: eventName,\n data: decoded.data,\n id: event.lastEventId || undefined,\n raw: event,\n });\n }\n\n function scheduleReconnect(): void {\n if (closed) return;\n if (retries >= maxRetries) {\n setStatus(\"error\");\n return;\n }\n const delay = Math.min(initialBackoff * 2 ** retries, maxBackoff);\n retries += 1;\n retryTimer = setTimeout(connect, delay);\n }\n\n function connect(): void {\n if (closed) return;\n if (source) source.close();\n setStatus(\"connecting\");\n\n const es = new EventSource(url, { withCredentials });\n source = es;\n\n es.onopen = () => {\n retries = 0;\n setStatus(\"open\");\n onOpen?.();\n };\n\n es.onmessage = (event) => emit(\"message\", event);\n for (const name of namedEvents) {\n es.addEventListener(name, (event) => emit(name, event as MessageEvent));\n }\n for (const name of heartbeatEvents) {\n es.addEventListener(name, () => {\n /* heartbeat — keep socket alive */\n });\n }\n\n es.onerror = (event) => {\n onError?.(event);\n es.close();\n source = null;\n setStatus(\"closed\");\n scheduleReconnect();\n };\n }\n\n function close(): void {\n closed = true;\n if (retryTimer) {\n clearTimeout(retryTimer);\n retryTimer = null;\n }\n retries = 0;\n if (source) {\n source.close();\n source = null;\n }\n setStatus(\"closed\");\n }\n\n function reconnect(): void {\n if (retryTimer) {\n clearTimeout(retryTimer);\n retryTimer = null;\n }\n retries = 0;\n closed = false;\n connect();\n }\n\n connect();\n\n return {\n close,\n reconnect,\n get status() {\n return status;\n },\n };\n}\n"],"mappings":";;AAqEA,SAAgB,EACZ,GACA,IAAuC,CAAC,GACnB;CACrB,IAAM,EACF,qBAAkB,IAClB,iBAAc,CAAC,GACf,qBAAkB,CAAC,MAAM,GACzB,gBAAa,IACb,oBAAiB,KACjB,gBAAa,KACb,WACA,WACA,cACA,YACA,iBACA,sBACA,GAEA,IAA6B,MAC7B,IAAmD,MACnD,IAAU,GACV,IAA4B,QAC5B,IAAS;CAEb,SAAS,EAAU,GAA+B;EAC1C,MAAW,MACf,IAAS,GACT,IAAiB,CAAI;CACzB;CAEA,SAAS,EAAK,GAAmB,GAA2B;EACxD,IAAI,EAAgB,SAAS,CAAS,GAAG;EACzC,IAAM,IAAU,EACZ,OAAO,EAAM,QAAS,WAAW,EAAM,OAAO,IAC9C,GACA,GACA,mBACJ;EACK,EAAQ,aACb,IAAY;GACR,OAAO;GACP,MAAM,EAAQ;GACd,IAAI,EAAM,eAAe,KAAA;GACzB,KAAK;EACT,CAAC;CACL;CAEA,SAAS,IAA0B;EAC/B,IAAI,GAAQ;EACZ,IAAI,KAAW,GAAY;GACvB,EAAU,OAAO;GACjB;EACJ;EACA,IAAM,IAAQ,KAAK,IAAI,IAAiB,KAAK,GAAS,CAAU;EAEhE,AADA,KAAW,GACX,IAAa,WAAW,GAAS,CAAK;CAC1C;CAEA,SAAS,IAAgB;EACrB,IAAI,GAAQ;EAEZ,AADI,KAAQ,EAAO,MAAM,GACzB,EAAU,YAAY;EAEtB,IAAM,IAAK,IAAI,YAAY,GAAK,EAAE,mBAAgB,CAAC;EASnD,AARA,IAAS,GAET,EAAG,eAAe;GAGd,AAFA,IAAU,GACV,EAAU,MAAM,GAChB,IAAS;EACb,GAEA,EAAG,aAAa,MAAU,EAAK,WAAW,CAAK;EAC/C,KAAK,IAAM,KAAQ,GACf,EAAG,iBAAiB,IAAO,MAAU,EAAK,GAAM,CAAqB,CAAC;EAE1E,KAAK,IAAM,KAAQ,GACf,EAAG,iBAAiB,SAAY,CAEhC,CAAC;EAGL,EAAG,WAAW,MAAU;GAKpB,AAJA,IAAU,CAAK,GACf,EAAG,MAAM,GACT,IAAS,MACT,EAAU,QAAQ,GAClB,EAAkB;EACtB;CACJ;CAEA,SAAS,IAAc;EAWnB,AAVA,IAAS,IACT,AAEI,OADA,aAAa,CAAU,GACV,OAEjB,IAAU,GACV,AAEI,OADA,EAAO,MAAM,GACJ,OAEb,EAAU,QAAQ;CACtB;CAEA,SAAS,IAAkB;EAOvB,AANA,AAEI,OADA,aAAa,CAAU,GACV,OAEjB,IAAU,GACV,IAAS,IACT,EAAQ;CACZ;CAIA,OAFA,EAAQ,GAED;EACH;EACA;EACA,IAAI,SAAS;GACT,OAAO;EACX;CACJ;AACJ"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_panel_W0CCy{min-width:0;min-height:0;height:var(--tempest-ai-chat-height,100%);background-color:var(--tempest-bg);color:var(--tempest-text);font-family:var(--tempest-font-sans);flex-direction:column;display:flex}
|
|
3
|
+
.tempest_header_KYy5l{padding:var(--tempest-space-3) var(--tempest-space-4);border-bottom:1px solid var(--tempest-border);flex:none}
|
|
4
|
+
.tempest_threadWrapper_LjoF6{flex:auto;min-width:0;min-height:0;display:flex;position:relative}
|
|
5
|
+
.tempest_thread_RqELz{gap:var(--tempest-space-5);min-width:0;min-height:0;padding:var(--tempest-space-4);overscroll-behavior:contain;flex-direction:column;flex:auto;display:flex;overflow-y:auto}
|
|
6
|
+
.tempest_thread_RqELz:focus-visible{outline:2px solid var(--tempest-primary);outline-offset:-2px}
|
|
7
|
+
.tempest_jump_oBKxQ{right:var(--tempest-space-4);bottom:var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface);width:2rem;height:2rem;color:var(--tempest-text);box-shadow:var(--tempest-shadow-md);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}
|
|
8
|
+
.tempest_jump_oBKxQ:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px}
|
|
9
|
+
@media (pointer:coarse){.tempest_jump_oBKxQ:after{content:"";position:absolute;inset:-6px}}
|
|
10
|
+
.tempest_turn_k7h7J{gap:var(--tempest-space-2);min-width:0;max-width:var(--tempest-ai-chat-width,48rem);flex-direction:column;width:100%;margin-inline:auto;display:flex}
|
|
11
|
+
.tempest_userTurn_7Csx0{align-items:flex-end}
|
|
12
|
+
.tempest_systemTurn_xpQmC{padding:var(--tempest-space-2) var(--tempest-space-3);border:1px dashed var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-surface);color:var(--tempest-text-muted);font-size:var(--tempest-text-sm)}
|
|
13
|
+
.tempest_turnHeader_l7lv3{align-items:center;gap:var(--tempest-space-2);min-width:0;display:flex}
|
|
14
|
+
.tempest_avatar_XqQ8R{flex:none;display:inline-flex}
|
|
15
|
+
.tempest_role_Vz6Dn{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);font-weight:var(--tempest-weight-semibold)}
|
|
16
|
+
.tempest_visuallyHiddenRole_raKmR{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
|
|
17
|
+
.tempest_model_Z55Ho,.tempest_time_o07s8{color:var(--tempest-text-muted);font-size:var(--tempest-text-2xs);font-variant-numeric:tabular-nums}
|
|
18
|
+
.tempest_body_GnhC7{overflow-wrap:anywhere;min-width:0}
|
|
19
|
+
.tempest_userTurn_7Csx0 .tempest_body_GnhC7{padding:var(--tempest-space-2) var(--tempest-space-3);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-primary-soft);color:var(--tempest-primary-on-soft);font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-normal);max-width:min(85%,36rem)}
|
|
20
|
+
.tempest_plain_MRQet{white-space:pre-wrap}
|
|
21
|
+
.tempest_markdownRoot_nem2U{font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-relaxed)}
|
|
22
|
+
.tempest_streamingBody_YMx1->.tempest_markdownRoot_nem2U>:last-child:after{content:"▍";color:var(--tempest-primary);margin-left:.125em;animation:1s steps(2,jump-none) infinite tempest_caretBlink_IpIIw}
|
|
23
|
+
@keyframes tempest_caretBlink_IpIIw{to{opacity:.2}}
|
|
24
|
+
@media (prefers-reduced-motion:reduce){.tempest_streamingBody_YMx1->.tempest_markdownRoot_nem2U>:last-child:after{animation:none}}
|
|
25
|
+
.tempest_dots_FtZUe{align-items:center;gap:3px;display:inline-flex}
|
|
26
|
+
.tempest_dots_FtZUe>span{background-color:var(--tempest-text-subtle);width:5px;height:5px;animation:tempest_dotPulse_nZJHU 1.2s var(--tempest-ease-in-out) infinite;border-radius:50%}
|
|
27
|
+
.tempest_dots_FtZUe>span:nth-child(2){animation-delay:.15s}
|
|
28
|
+
.tempest_dots_FtZUe>span:nth-child(3){animation-delay:.3s}
|
|
29
|
+
@keyframes tempest_dotPulse_nZJHU{0%,60%,to{opacity:.25}30%{opacity:1}}
|
|
30
|
+
@media (prefers-reduced-motion:reduce){.tempest_dots_FtZUe>span{opacity:.6;animation:none}}
|
|
31
|
+
.tempest_thinking_Dk96l{align-items:center;gap:var(--tempest-space-2);max-width:var(--tempest-ai-chat-width,48rem);width:100%;color:var(--tempest-text-muted);font-size:var(--tempest-text-sm);margin:0 auto;display:flex}
|
|
32
|
+
.tempest_reasoning_kJof1{border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-surface)}
|
|
33
|
+
.tempest_reasoning_kJof1 button[aria-expanded]{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);font-weight:var(--tempest-weight-medium)}
|
|
34
|
+
.tempest_reasoning_kJof1 button[aria-expanded=true] .tempest_reasoningChevron_TObJ2{transform:rotate(90deg)}
|
|
35
|
+
.tempest_reasoningChevron_TObJ2{transition:transform var(--tempest-duration-fast) var(--tempest-ease-out);flex:none}
|
|
36
|
+
@media (prefers-reduced-motion:reduce){.tempest_reasoningChevron_TObJ2{transition:none}}
|
|
37
|
+
.tempest_reasoningBody_ZR910{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);line-height:var(--tempest-leading-relaxed);white-space:pre-wrap}
|
|
38
|
+
.tempest_attachments_qQH3a{gap:var(--tempest-space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}
|
|
39
|
+
.tempest_attachment_z4T-R{align-items:center;gap:var(--tempest-space-2);max-width:16rem;padding:var(--tempest-space-1) var(--tempest-space-2);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-surface);font-size:var(--tempest-text-xs);display:inline-flex}
|
|
40
|
+
.tempest_attachmentName_2DCGR{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
|
|
41
|
+
.tempest_attachmentMeta_xBy5U{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);flex:none}
|
|
42
|
+
.tempest_thumb_w70uR{border-radius:var(--tempest-radius-sm);object-fit:cover;width:4rem;height:4rem;display:block}
|
|
43
|
+
.tempest_error_CS0Gp{align-items:center;gap:var(--tempest-space-2);padding:var(--tempest-space-2) var(--tempest-space-3);border:1px solid var(--tempest-danger);border-radius:var(--tempest-radius-md);background-color:var(--tempest-danger-bg);color:var(--tempest-text);font-size:var(--tempest-text-sm);margin:0;display:flex}
|
|
44
|
+
.tempest_retry_8a6Vm{color:var(--tempest-danger);font:inherit;font-weight:var(--tempest-weight-medium);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}
|
|
45
|
+
.tempest_actions_SZnxe{align-items:center;gap:var(--tempest-space-1);opacity:0;transition:opacity var(--tempest-duration-fast) var(--tempest-ease-out);display:flex}
|
|
46
|
+
.tempest_turn_k7h7J:hover .tempest_actions_SZnxe,.tempest_actions_SZnxe:focus-within{opacity:1}
|
|
47
|
+
@media (hover:none){.tempest_actions_SZnxe{opacity:1}}
|
|
48
|
+
@media (prefers-reduced-motion:reduce){.tempest_actions_SZnxe{transition:none}}
|
|
49
|
+
.tempest_actions_SZnxe .tempest_action_YPvQH{border-radius:var(--tempest-radius-sm);width:1.75rem;height:1.75rem;color:var(--tempest-text-muted);cursor:pointer;transition:var(--tempest-transition-color);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}
|
|
50
|
+
@media (pointer:coarse){.tempest_actions_SZnxe .tempest_action_YPvQH:after{content:"";position:absolute;inset:-8px}}
|
|
51
|
+
@media (hover:hover) and (pointer:fine){.tempest_actions_SZnxe .tempest_action_YPvQH:hover{background-color:var(--tempest-surface-2);color:var(--tempest-text)}}
|
|
52
|
+
.tempest_actions_SZnxe .tempest_action_YPvQH:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:1px}
|
|
53
|
+
.tempest_actions_SZnxe .tempest_action_YPvQH[data-copied],.tempest_actions_SZnxe .tempest_actionActive_DW5O1{color:var(--tempest-primary);background:0 0}
|
|
54
|
+
@media (prefers-reduced-motion:reduce){.tempest_actions_SZnxe .tempest_action_YPvQH{transition:none}}
|
|
55
|
+
.tempest_editor_rk4hA{gap:var(--tempest-space-2);flex-direction:column;width:100%;max-width:min(85%,36rem);display:flex}
|
|
56
|
+
.tempest_editField_Z9neJ{width:100%;padding:var(--tempest-space-2) var(--tempest-space-3);border:1px solid var(--tempest-primary);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-bg);color:var(--tempest-text);font:inherit;font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-normal);resize:vertical}
|
|
57
|
+
.tempest_editField_Z9neJ:focus-visible{outline:2px solid var(--tempest-primary);outline-offset:-1px}
|
|
58
|
+
.tempest_editActions_vfC0b{justify-content:flex-end;gap:var(--tempest-space-2);display:flex}
|
|
59
|
+
.tempest_ghost_S1yuC{padding:var(--tempest-space-1) var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);color:var(--tempest-text);font:inherit;font-size:var(--tempest-text-sm);cursor:pointer;background-color:#0000}
|
|
60
|
+
.tempest_primary_wZ-Wu{padding:var(--tempest-space-1) var(--tempest-space-3);border-radius:var(--tempest-radius-md);background-color:var(--tempest-primary);color:var(--tempest-primary-foreground);font:inherit;font-size:var(--tempest-text-sm);font-weight:var(--tempest-weight-medium);cursor:pointer;border:none}
|
|
61
|
+
.tempest_primary_wZ-Wu:disabled{background-color:var(--tempest-surface-3);color:var(--tempest-text-subtle);cursor:not-allowed}
|
|
62
|
+
.tempest_suggestions_V7Zhh{align-items:flex-start;gap:var(--tempest-space-2);max-width:var(--tempest-ai-chat-width,48rem);flex-direction:column;width:100%;margin:auto auto 0;display:flex}
|
|
63
|
+
.tempest_suggestionsTitle_Z-wWe{color:var(--tempest-text-muted);font-size:var(--tempest-text-sm);margin:0}
|
|
64
|
+
.tempest_suggestion_4NYhq{padding:var(--tempest-space-2) var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-surface);color:var(--tempest-text);font:inherit;font-size:var(--tempest-text-sm);text-align:left;cursor:pointer}
|
|
65
|
+
@media (hover:hover) and (pointer:fine){.tempest_suggestion_4NYhq:hover{background-color:var(--tempest-surface-2)}}
|
|
66
|
+
.tempest_suggestion_4NYhq:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px}
|
|
67
|
+
.tempest_composer_AaB1Q{gap:var(--tempest-space-1);padding:var(--tempest-space-3) var(--tempest-space-4);border-top:1px solid var(--tempest-border);flex-direction:column;flex:none;display:flex}
|
|
68
|
+
.tempest_composerBox_Fz-GG{align-items:flex-end;gap:var(--tempest-space-2);max-width:var(--tempest-ai-chat-width,48rem);width:100%;padding:var(--tempest-space-2);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface);margin-inline:auto;display:flex}
|
|
69
|
+
.tempest_composerBox_Fz-GG:focus-within{border-color:var(--tempest-primary)}
|
|
70
|
+
.tempest_field_7m1Pa{min-width:0;padding:var(--tempest-space-1) var(--tempest-space-2);color:inherit;font:inherit;font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-normal);resize:none;background:0 0;border:none;flex:auto}
|
|
71
|
+
.tempest_field_7m1Pa:focus-visible{outline:none}
|
|
72
|
+
.tempest_field_7m1Pa:disabled{color:var(--tempest-text-subtle);cursor:not-allowed}
|
|
73
|
+
.tempest_composerActions_z1oj9{align-items:center;gap:var(--tempest-space-2);flex:none;display:flex}
|
|
74
|
+
.tempest_composerFooter_WZ1Fo{max-width:var(--tempest-ai-chat-width,48rem);width:100%;padding-inline:var(--tempest-space-2);color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);margin-inline:auto}
|
|
75
|
+
.tempest_send_eVkd6{padding:var(--tempest-space-2) var(--tempest-space-4);border-radius:var(--tempest-radius-md);background-color:var(--tempest-primary);color:var(--tempest-primary-foreground);font:inherit;font-size:var(--tempest-text-sm);font-weight:var(--tempest-weight-medium);cursor:pointer;border:none}
|
|
76
|
+
.tempest_send_eVkd6:disabled{background-color:var(--tempest-surface-3);color:var(--tempest-text-subtle);cursor:not-allowed}
|
|
77
|
+
.tempest_stop_KWS9o{align-items:center;gap:var(--tempest-space-2);padding:var(--tempest-space-2) var(--tempest-space-4);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-surface-2);color:var(--tempest-text);font:inherit;font-size:var(--tempest-text-sm);font-weight:var(--tempest-weight-medium);cursor:pointer;display:inline-flex}
|
|
78
|
+
.tempest_stopGlyph_Nc19c{background-color:currentColor;border-radius:2px;width:.625rem;height:.625rem;display:inline-block}
|
|
79
|
+
@media (width<=480px){.tempest_thread_RqELz{gap:var(--tempest-space-4);padding:var(--tempest-space-3)}.tempest_userTurn_7Csx0 .tempest_body_GnhC7,.tempest_editor_rk4hA{max-width:100%}.tempest_composer_AaB1Q{padding:var(--tempest-space-2) var(--tempest-space-3)}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_accordion_LVhhv{border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-bg);flex-direction:column;width:100%;display:flex;overflow:hidden}
|
|
3
|
+
.tempest_item_7ryVk{border-bottom:1px solid var(--tempest-border)}
|
|
4
|
+
.tempest_item_7ryVk:last-child{border-bottom:none}
|
|
5
|
+
.tempest_header_WaTdJ{margin:0}
|
|
6
|
+
.tempest_trigger_9BYFY{justify-content:space-between;align-items:center;gap:var(--tempest-space-3);width:100%;padding:var(--tempest-space-3) var(--tempest-space-4);text-align:left;color:var(--tempest-text);font-family:var(--tempest-font-sans);font-size:var(--tempest-text-base);font-weight:var(--tempest-weight-semibold);line-height:var(--tempest-leading-snug);cursor:pointer;transition:var(--tempest-transition-color);background:0 0;border:none;display:flex}
|
|
7
|
+
@media (hover:hover) and (pointer:fine){.tempest_trigger_9BYFY:hover{background-color:var(--tempest-surface)}}
|
|
8
|
+
.tempest_trigger_9BYFY:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:-2px}
|
|
9
|
+
.tempest_trigger_9BYFY:disabled{opacity:.55;cursor:not-allowed}
|
|
10
|
+
.tempest_chevron_i-HVZ{transition:transform var(--tempest-duration-base) var(--tempest-ease-emphasized);color:var(--tempest-text-muted);flex-shrink:0}
|
|
11
|
+
.tempest_open_98jLY .tempest_chevron_i-HVZ{transform:rotate(180deg)}
|
|
12
|
+
.tempest_panel_Wx50w{padding:0 var(--tempest-space-4) var(--tempest-space-4);color:var(--tempest-text);line-height:var(--tempest-leading-normal)}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_alert_7cYyI{align-items:flex-start;gap:var(--tempest-space-3);padding:var(--tempest-space-3) var(--tempest-space-4);border-radius:var(--tempest-radius-lg);font-family:var(--tempest-font-sans);font-size:var(--tempest-text-base);line-height:var(--tempest-leading-snug);color:var(--tempest-text);border:1px solid #0000;width:100%;display:flex}
|
|
3
|
+
.tempest_content_UXnmZ{flex:1;min-width:0}
|
|
4
|
+
.tempest_title_abGgF{font-size:var(--tempest-text-base);font-weight:var(--tempest-weight-semibold);line-height:var(--tempest-leading-snug);margin:0}
|
|
5
|
+
.tempest_description_pXPvw{font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-snug);color:var(--tempest-text-muted);margin:2px 0 0}
|
|
6
|
+
.tempest_icon_Zg6SB{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-top:1px;display:inline-flex}
|
|
7
|
+
.tempest_close_narep{color:inherit;opacity:.7;border-radius:var(--tempest-radius-sm);transition:var(--tempest-transition-color), opacity var(--tempest-duration-fast) var(--tempest-ease-out);background:0 0;border:none;align-items:center;margin-left:auto;padding:4px;display:flex}
|
|
8
|
+
.tempest_close_narep:hover{opacity:1;background-color:#0f172a0f}
|
|
9
|
+
.tempest_close_narep:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:var(--tempest-focus-ring-offset)}
|
|
10
|
+
.tempest_neutral_J7MH1{background-color:var(--tempest-surface);color:var(--tempest-text);border-color:var(--tempest-border)}
|
|
11
|
+
.tempest_neutral_J7MH1.tempest_solid_s-oW5{background-color:var(--tempest-gray-700);color:#fff;border-color:#0000}
|
|
12
|
+
.tempest_neutral_J7MH1.tempest_outline_v7w9b{border-color:var(--tempest-border-strong);background-color:#0000}
|
|
13
|
+
.tempest_info_9r3r1{background-color:var(--tempest-info-bg);color:var(--tempest-info-fg);border-color:var(--tempest-info-border)}
|
|
14
|
+
.tempest_info_9r3r1 .tempest_description_pXPvw{color:var(--tempest-info-fg);opacity:.85}
|
|
15
|
+
.tempest_info_9r3r1.tempest_solid_s-oW5{background-color:var(--tempest-info-solid);color:var(--tempest-info-on-solid);border-color:#0000}
|
|
16
|
+
.tempest_info_9r3r1.tempest_solid_s-oW5 .tempest_description_pXPvw{color:#ffffffe6}
|
|
17
|
+
.tempest_info_9r3r1.tempest_outline_v7w9b{color:var(--tempest-info);border-color:var(--tempest-info);background-color:#0000}
|
|
18
|
+
.tempest_success_1bzoB{background-color:var(--tempest-success-bg);color:var(--tempest-success-fg);border-color:var(--tempest-success-border)}
|
|
19
|
+
.tempest_success_1bzoB .tempest_description_pXPvw{color:var(--tempest-success-fg);opacity:.85}
|
|
20
|
+
.tempest_success_1bzoB.tempest_solid_s-oW5{background-color:var(--tempest-success-solid);color:var(--tempest-success-on-solid);border-color:#0000}
|
|
21
|
+
.tempest_success_1bzoB.tempest_solid_s-oW5 .tempest_description_pXPvw{color:#ffffffe6}
|
|
22
|
+
.tempest_success_1bzoB.tempest_outline_v7w9b{color:var(--tempest-success);border-color:var(--tempest-success);background-color:#0000}
|
|
23
|
+
.tempest_warning_q-j1Q{background-color:var(--tempest-warning-bg);color:var(--tempest-warning-fg);border-color:var(--tempest-warning-border)}
|
|
24
|
+
.tempest_warning_q-j1Q .tempest_description_pXPvw{color:var(--tempest-warning-fg);opacity:.85}
|
|
25
|
+
.tempest_warning_q-j1Q.tempest_solid_s-oW5{background-color:var(--tempest-warning-solid);color:var(--tempest-warning-on-solid);border-color:#0000}
|
|
26
|
+
.tempest_warning_q-j1Q.tempest_solid_s-oW5 .tempest_description_pXPvw{color:#ffffffe6}
|
|
27
|
+
.tempest_warning_q-j1Q.tempest_outline_v7w9b{color:var(--tempest-warning);border-color:var(--tempest-warning);background-color:#0000}
|
|
28
|
+
.tempest_danger_CiZkW{background-color:var(--tempest-danger-bg);color:var(--tempest-danger-fg);border-color:var(--tempest-danger-border)}
|
|
29
|
+
.tempest_danger_CiZkW .tempest_description_pXPvw{color:var(--tempest-danger-fg);opacity:.85}
|
|
30
|
+
.tempest_danger_CiZkW.tempest_solid_s-oW5{background-color:var(--tempest-danger-solid);color:var(--tempest-danger-on-solid);border-color:#0000}
|
|
31
|
+
.tempest_danger_CiZkW.tempest_solid_s-oW5 .tempest_description_pXPvw{color:#ffffffe6}
|
|
32
|
+
.tempest_danger_CiZkW.tempest_outline_v7w9b{color:var(--tempest-danger);border-color:var(--tempest-danger);background-color:#0000}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_bar_SHqWS{align-items:center;gap:var(--tempest-space-2);width:100%;min-height:56px;padding:var(--tempest-space-3) var(--tempest-space-4);font-family:var(--tempest-font-sans);grid-template-columns:auto 1fr auto;display:grid}
|
|
3
|
+
.tempest_bar_SHqWS.tempest_centered_S0CCw{grid-template-columns:1fr auto 1fr}
|
|
4
|
+
.tempest_bar_SHqWS.tempest_surface_fusKb{background:var(--tempest-surface);color:var(--tempest-text)}
|
|
5
|
+
.tempest_bar_SHqWS.tempest_primary_QcCyN{background:var(--tempest-primary);color:var(--tempest-text-on-primary)}
|
|
6
|
+
.tempest_bar_SHqWS.tempest_transparent_uGrsu{color:inherit;background:0 0}
|
|
7
|
+
.tempest_bar_SHqWS.tempest_bordered_5M9FZ{border-bottom:1px solid var(--tempest-border)}
|
|
8
|
+
.tempest_bar_SHqWS.tempest_sticky_DStUO{z-index:30;position:sticky;top:0}
|
|
9
|
+
.tempest_bar_SHqWS.tempest_safeArea_Vo3Bi{padding-top:max(var(--tempest-space-3), env(safe-area-inset-top,0px))}
|
|
10
|
+
.tempest_leading_mXv-d{align-items:center;gap:var(--tempest-space-2);min-width:0;display:flex}
|
|
11
|
+
.tempest_actions_x7tMx{justify-content:flex-end;align-items:center;gap:var(--tempest-space-1);min-width:0;display:flex}
|
|
12
|
+
.tempest_title_qaMMQ{min-width:0;font-size:var(--tempest-text-xl);font-weight:var(--tempest-weight-bold);text-align:left;white-space:nowrap;text-overflow:ellipsis;margin:0;line-height:1.2;overflow:hidden}
|
|
13
|
+
.tempest_bar_SHqWS.tempest_centered_S0CCw .tempest_title_qaMMQ{text-align:center}
|
|
14
|
+
.tempest_brand_xKt54{font-size:var(--tempest-text-lg);font-weight:var(--tempest-weight-bold);color:inherit;white-space:nowrap}
|
|
15
|
+
.tempest_iconBtn_S-BTg{border-radius:var(--tempest-radius-full);width:36px;height:36px;color:inherit;cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}
|
|
16
|
+
.tempest_iconBtn_S-BTg:hover{background:var(--tempest-surface-2)}
|
|
17
|
+
.tempest_iconBtn_S-BTg:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:var(--tempest-focus-ring-offset)}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_shell_-xp0O{background:var(--tempest-bg);width:100%;min-height:100dvh;color:var(--tempest-text);font-family:var(--tempest-font-sans);flex-direction:column;display:flex}
|
|
3
|
+
.tempest_navbar_liTKV{flex:none}
|
|
4
|
+
.tempest_row_PE41P{flex:auto;width:100%;min-height:0;display:flex}
|
|
5
|
+
.tempest_sidebar_wyx-V{flex:none}
|
|
6
|
+
.tempest_main_O3GFv{flex:auto;min-width:0;overflow-x:auto}
|
|
7
|
+
.tempest_footer_IFW4q{flex:none}
|
|
8
|
+
.tempest_bottomNav_pKJ1v{z-index:30;flex:none;position:sticky;bottom:0}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_player_NEgFD{align-items:center;gap:var(--tempest-space-3);min-width:0;padding:var(--tempest-space-2) var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface);color:var(--tempest-text);font-family:var(--tempest-font-sans);display:flex}
|
|
3
|
+
.tempest_transport_-7WMK{border-radius:var(--tempest-radius-full);background-color:var(--tempest-primary);width:2.25rem;height:2.25rem;color:var(--tempest-primary-foreground);cursor:pointer;transition:var(--tempest-transition-color);border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}
|
|
4
|
+
.tempest_transport_-7WMK:disabled{background-color:var(--tempest-surface-3);color:var(--tempest-text-subtle);cursor:not-allowed}
|
|
5
|
+
.tempest_transport_-7WMK:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px}
|
|
6
|
+
@media (prefers-reduced-motion:reduce){.tempest_transport_-7WMK{transition:none}}
|
|
7
|
+
.tempest_seek_-iy4f{min-width:3rem;height:1.25rem;accent-color:var(--tempest-primary);cursor:pointer;background:0 0;flex:auto;margin:0}
|
|
8
|
+
.tempest_seek_-iy4f:disabled{accent-color:var(--tempest-surface-3);cursor:not-allowed}
|
|
9
|
+
.tempest_seek_-iy4f:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px;border-radius:var(--tempest-radius-sm)}
|
|
10
|
+
.tempest_time_zNVm8{gap:var(--tempest-space-1);color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}
|
|
11
|
+
.tempest_actions_QZ7Yn{align-items:center;gap:var(--tempest-space-1);flex:none;display:inline-flex}
|
|
12
|
+
@media (pointer:coarse){.tempest_transport_-7WMK:after{content:"";position:absolute;inset:-4px}}
|
|
13
|
+
@media (width<=480px){.tempest_player_NEgFD{gap:var(--tempest-space-2);padding:var(--tempest-space-2)}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_recorder_4p8pT{gap:var(--tempest-space-2);min-width:0;padding:var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-bg);color:var(--tempest-text);font-family:var(--tempest-font-sans);flex-direction:column;display:flex}
|
|
3
|
+
.tempest_row_gNlbi{align-items:center;gap:var(--tempest-space-2);flex-wrap:wrap;min-width:0;display:flex}
|
|
4
|
+
.tempest_record_dhkt8,.tempest_stop_yMMLh,.tempest_secondary_C13wq{align-items:center;gap:var(--tempest-space-2);padding:var(--tempest-space-2) var(--tempest-space-3);border-radius:var(--tempest-radius-md);font:inherit;font-size:var(--tempest-text-sm);font-weight:var(--tempest-weight-medium);cursor:pointer;transition:var(--tempest-transition-color);border:1px solid #0000;flex:none;display:inline-flex;position:relative}
|
|
5
|
+
.tempest_record_dhkt8{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}
|
|
6
|
+
.tempest_record_dhkt8:disabled{background-color:var(--tempest-surface-3);color:var(--tempest-text-subtle);cursor:not-allowed}
|
|
7
|
+
.tempest_stop_yMMLh{border-color:var(--tempest-danger);background-color:var(--tempest-danger-bg);color:var(--tempest-danger-fg)}
|
|
8
|
+
.tempest_secondary_C13wq{border-color:var(--tempest-border);background-color:var(--tempest-surface);color:var(--tempest-text);padding-inline:var(--tempest-space-2)}
|
|
9
|
+
.tempest_record_dhkt8:focus-visible,.tempest_stop_yMMLh:focus-visible,.tempest_secondary_C13wq:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px}
|
|
10
|
+
@media (prefers-reduced-motion:reduce){.tempest_record_dhkt8,.tempest_stop_yMMLh,.tempest_secondary_C13wq{transition:none}}
|
|
11
|
+
@media (pointer:coarse){.tempest_secondary_C13wq:after{content:"";position:absolute;inset:-6px}}
|
|
12
|
+
.tempest_meter_6QDc9{border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface-2);flex:6rem;min-width:3rem;height:.5rem;overflow:hidden}
|
|
13
|
+
.tempest_meterFill_oUoGY{background-color:var(--tempest-success);transform-origin:0;width:100%;height:100%;transition:transform 80ms linear;display:block;transform:scaleX(0)}
|
|
14
|
+
@media (prefers-reduced-motion:reduce){.tempest_meterFill_oUoGY{transition:none}}
|
|
15
|
+
.tempest_clock_VGvvJ{color:var(--tempest-text);font-size:var(--tempest-text-sm);font-variant-numeric:tabular-nums;flex:none}
|
|
16
|
+
.tempest_max_kx9VL{color:var(--tempest-text-muted)}
|
|
17
|
+
.tempest_status_v2kHH{min-height:1.25em;color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);margin:0}
|
|
18
|
+
.tempest_notice_MtPVY{color:var(--tempest-text-muted);font-size:var(--tempest-text-sm);margin:0}
|
|
19
|
+
.tempest_footer_tfueB{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs)}
|
|
20
|
+
@media (width<=480px){.tempest_recorder_4p8pT{padding:var(--tempest-space-2)}.tempest_meter_6QDc9{flex-basis:100%;order:1}}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_avatar_3xMuZ{background-color:var(--tempest-surface-2);color:var(--tempest-text);font-family:var(--tempest-font-sans);font-weight:var(--tempest-weight-semibold);text-transform:uppercase;-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}
|
|
3
|
+
.tempest_image_ieqGp{object-fit:cover;width:100%;height:100%}
|
|
4
|
+
.tempest_xs_oSaLL{width:24px;height:24px;font-size:var(--tempest-text-2xs)}
|
|
5
|
+
.tempest_sm_sZ2bk{width:32px;height:32px;font-size:var(--tempest-text-xs)}
|
|
6
|
+
.tempest_md_Fdkbz{width:40px;height:40px;font-size:var(--tempest-text-base)}
|
|
7
|
+
.tempest_lg_pTTUA{width:56px;height:56px;font-size:var(--tempest-text-xl)}
|
|
8
|
+
.tempest_xl_mW58F{width:80px;height:80px;font-size:var(--tempest-text-3xl)}
|
|
9
|
+
.tempest_status_ISBnL{position:relative}
|
|
10
|
+
.tempest_dot_Wgfo-{border:2px solid var(--tempest-bg);border-radius:50%;width:28%;height:28%;position:absolute;bottom:0;right:0}
|
|
11
|
+
.tempest_dot_Wgfo-.tempest_online_-aWoW{background-color:var(--tempest-success-solid)}
|
|
12
|
+
.tempest_dot_Wgfo-.tempest_offline_-StX3{background-color:var(--tempest-text-subtle)}
|
|
13
|
+
.tempest_dot_Wgfo-.tempest_busy_TbwuF{background-color:var(--tempest-danger-solid)}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_group_qCSYk{align-items:center;display:inline-flex}
|
|
3
|
+
.tempest_slot_KyJQJ{border-radius:var(--tempest-radius-full);box-shadow:0 0 0 2px var(--tempest-bg);display:inline-flex}
|
|
4
|
+
.tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-10px)}
|
|
5
|
+
.tempest_xs_PPTP5 .tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-8px)}
|
|
6
|
+
.tempest_sm_ptoRA .tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-10px)}
|
|
7
|
+
.tempest_md_YbE61 .tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-12px)}
|
|
8
|
+
.tempest_lg_oAEMY .tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-16px)}
|
|
9
|
+
.tempest_xl_78RZG .tempest_slot_KyJQJ+.tempest_slot_KyJQJ{margin-inline-start:var(--tempest-avatar-overlap,-22px)}
|
|
10
|
+
.tempest_overflow_JZIo-{box-sizing:border-box;border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface-3);width:40px;height:40px;color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);font-weight:var(--tempest-weight-medium);font-variant-numeric:tabular-nums;border:0;justify-content:center;align-items:center;display:inline-flex}
|
|
11
|
+
.tempest_xs_PPTP5 .tempest_overflow_JZIo-{width:24px;height:24px;font-size:var(--tempest-text-2xs)}
|
|
12
|
+
.tempest_sm_ptoRA .tempest_overflow_JZIo-{width:32px;height:32px}
|
|
13
|
+
.tempest_lg_oAEMY .tempest_overflow_JZIo-{width:56px;height:56px;font-size:var(--tempest-text-sm)}
|
|
14
|
+
.tempest_xl_78RZG .tempest_overflow_JZIo-{width:80px;height:80px;font-size:var(--tempest-text-base)}
|
|
15
|
+
.tempest_overflowButton_hSf-2{cursor:pointer;transition:background-color var(--tempest-duration-fast) var(--tempest-ease-out)}
|
|
16
|
+
.tempest_overflowButton_hSf-2:hover{background-color:var(--tempest-border-strong);color:var(--tempest-text)}
|
|
17
|
+
.tempest_overflowButton_hSf-2:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:var(--tempest-focus-ring-offset)}
|
|
18
|
+
@media (prefers-reduced-motion:reduce){.tempest_overflowButton_hSf-2{transition:none}}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_badge_RsuMz{align-items:center;gap:var(--tempest-space-1);padding:2px var(--tempest-space-2);border-radius:var(--tempest-radius-full);font-family:var(--tempest-font-sans);font-size:var(--tempest-text-xs);font-weight:var(--tempest-weight-semibold);line-height:var(--tempest-leading-snug);letter-spacing:var(--tempest-tracking-normal);white-space:nowrap;border:1px solid #0000;display:inline-flex}
|
|
3
|
+
.tempest_sm_LYsCn{padding:1px var(--tempest-space-2);font-size:var(--tempest-text-2xs)}
|
|
4
|
+
.tempest_md_4Or8q{padding:2px var(--tempest-space-2);font-size:var(--tempest-text-xs)}
|
|
5
|
+
.tempest_lg_Bseje{padding:3px var(--tempest-space-3);font-size:var(--tempest-text-sm)}
|
|
6
|
+
.tempest_square_l63D-{border-radius:var(--tempest-radius-sm)}
|
|
7
|
+
.tempest_neutral_lulSm{background-color:var(--tempest-surface-2);color:var(--tempest-text)}
|
|
8
|
+
.tempest_neutral_lulSm.tempest_solid_0Leug{background-color:var(--tempest-gray-700);color:#fff}
|
|
9
|
+
.tempest_neutral_lulSm.tempest_outline_x06HL{color:var(--tempest-text);border-color:var(--tempest-border-strong);background-color:#0000}
|
|
10
|
+
.tempest_success_u9JiS{background-color:var(--tempest-success-bg);color:var(--tempest-success-fg)}
|
|
11
|
+
.tempest_success_u9JiS.tempest_solid_0Leug{background-color:var(--tempest-success-solid);color:var(--tempest-success-on-solid)}
|
|
12
|
+
.tempest_success_u9JiS.tempest_outline_x06HL{color:var(--tempest-success);border-color:var(--tempest-success-border);background-color:#0000}
|
|
13
|
+
.tempest_warning_nsGp-{background-color:var(--tempest-warning-bg);color:var(--tempest-warning-fg)}
|
|
14
|
+
.tempest_warning_nsGp-.tempest_solid_0Leug{background-color:var(--tempest-warning-solid);color:var(--tempest-warning-on-solid)}
|
|
15
|
+
.tempest_warning_nsGp-.tempest_outline_x06HL{color:var(--tempest-warning);border-color:var(--tempest-warning-border);background-color:#0000}
|
|
16
|
+
.tempest_danger_PD2hz{background-color:var(--tempest-danger-bg);color:var(--tempest-danger-fg)}
|
|
17
|
+
.tempest_danger_PD2hz.tempest_solid_0Leug{background-color:var(--tempest-danger-solid);color:var(--tempest-danger-on-solid)}
|
|
18
|
+
.tempest_danger_PD2hz.tempest_outline_x06HL{color:var(--tempest-danger);border-color:var(--tempest-danger-border);background-color:#0000}
|
|
19
|
+
.tempest_info_na6DQ{background-color:var(--tempest-info-bg);color:var(--tempest-info-fg)}
|
|
20
|
+
.tempest_info_na6DQ.tempest_solid_0Leug{background-color:var(--tempest-info-solid);color:var(--tempest-info-on-solid)}
|
|
21
|
+
.tempest_info_na6DQ.tempest_outline_x06HL{color:var(--tempest-info);border-color:var(--tempest-info-border);background-color:#0000}
|
|
22
|
+
.tempest_primary_S0WCS{background-color:var(--tempest-primary-soft);color:var(--tempest-primary-on-soft)}
|
|
23
|
+
.tempest_primary_S0WCS.tempest_solid_0Leug{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}
|
|
24
|
+
.tempest_primary_S0WCS.tempest_outline_x06HL{color:var(--tempest-primary);border-color:var(--tempest-primary);background-color:#0000}
|
|
25
|
+
.tempest_dot_i0c-G{border-radius:var(--tempest-radius-full);background-color:currentColor;flex-shrink:0;width:6px;height:6px;display:inline-block}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_banner_oyoWE{align-items:flex-start;gap:var(--tempest-space-3);padding:var(--tempest-space-3) var(--tempest-space-4);border-radius:var(--tempest-radius-md);width:100%;font-family:var(--tempest-font-sans);font-size:var(--tempest-text-sm);line-height:var(--tempest-leading-snug);border:1px solid;display:flex}
|
|
3
|
+
.tempest_banner_oyoWE.tempest_info_s2q0P{background:var(--tempest-info-bg);color:var(--tempest-info-fg);border-color:var(--tempest-info-border)}
|
|
4
|
+
.tempest_banner_oyoWE.tempest_success_uLYQ3{background:var(--tempest-success-bg);color:var(--tempest-success-fg);border-color:var(--tempest-success-border)}
|
|
5
|
+
.tempest_banner_oyoWE.tempest_warning_9rua8{background:var(--tempest-warning-bg);color:var(--tempest-warning-fg);border-color:var(--tempest-warning-border)}
|
|
6
|
+
.tempest_banner_oyoWE.tempest_danger_Uzb-6{background:var(--tempest-danger-bg);color:var(--tempest-danger-fg);border-color:var(--tempest-danger-border)}
|
|
7
|
+
.tempest_icon_vzKmx{flex:none;align-items:center;line-height:1;display:inline-flex}
|
|
8
|
+
.tempest_body_-Qm4K{flex:auto;min-width:0}
|
|
9
|
+
.tempest_title_AeTHT{margin:0 0 var(--tempest-space-1);font-weight:var(--tempest-weight-semibold)}
|
|
10
|
+
.tempest_description_nbyf-{margin:0}
|
|
11
|
+
.tempest_action_47P8e{flex:none}
|
|
12
|
+
.tempest_close_Iy2oN{color:currentColor;cursor:pointer;border-radius:var(--tempest-radius-sm);background:0 0;border:0;flex:none;width:24px;height:24px;padding:0;font-size:20px;line-height:1}
|
|
13
|
+
.tempest_close_Iy2oN:hover{background:color-mix(in srgb, currentColor 10%, transparent)}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_list_XtltA{gap:var(--tempest-space-3,.75rem);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}
|
|
3
|
+
.tempest_item_y-W9f{gap:var(--tempest-space-1,.25rem);flex-direction:column;display:flex}
|
|
4
|
+
.tempest_line_WKQ57{justify-content:space-between;align-items:baseline;gap:var(--tempest-space-3,.75rem);font-size:var(--tempest-font-size-sm,.8125rem);display:flex}
|
|
5
|
+
.tempest_label_AywVf{min-width:0;color:var(--tempest-text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
|
|
6
|
+
.tempest_value_Y0DD0{align-items:baseline;gap:var(--tempest-space-2,.5rem);color:var(--tempest-text);font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex}
|
|
7
|
+
.tempest_percentage_YTyMa{color:var(--tempest-text-subtle);font-size:var(--tempest-font-size-xs,.75rem)}
|
|
8
|
+
.tempest_track_OVSC3{border-radius:var(--tempest-radius-sm,.25rem);background-color:var(--tempest-surface-2);width:100%;height:.5rem;overflow:hidden}
|
|
9
|
+
.tempest_fill_kg-Vl{border-radius:inherit;height:100%;transition:width var(--tempest-duration-normal,.2s) ease}
|
|
10
|
+
@media (prefers-reduced-motion:reduce){.tempest_fill_kg-Vl{transition:none}}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_scanner_pIsey{gap:var(--tempest-space-2);min-width:0;color:var(--tempest-text);font-family:var(--tempest-font-sans);flex-direction:column;display:flex}
|
|
3
|
+
.tempest_viewport_PA5gg{border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface-3);width:100%;position:relative;overflow:hidden}
|
|
4
|
+
.tempest_video_vxiea{object-fit:cover;width:100%;height:100%;display:block}
|
|
5
|
+
.tempest_frame_sWB0M{background-image:linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0);pointer-events:none;background-position:0 0,0 0,100% 0,100% 0,0 100%,0 100%,100% 100%,100% 100%;background-repeat:no-repeat;background-size:22% 3px,3px 22%,22% 3px,3px 22%,22% 3px,3px 22%,22% 3px,3px 22%;position:absolute;inset:12%}
|
|
6
|
+
.tempest_laser_wloBH{background-color:var(--tempest-primary);opacity:.35;height:2px;position:absolute;top:0;left:0;right:0}
|
|
7
|
+
.tempest_laserActive_cCUwf{opacity:.9;animation:1.6s ease-in-out infinite alternate tempest_tempest-barcode-sweep_UmIe5}
|
|
8
|
+
@keyframes tempest_tempest-barcode-sweep_UmIe5{0%{top:0}to{top:calc(100% - 2px)}}
|
|
9
|
+
@media (prefers-reduced-motion:reduce){.tempest_laserActive_cCUwf{animation:none}}
|
|
10
|
+
.tempest_torch_aw7tt{top:var(--tempest-space-2);right:var(--tempest-space-2);padding:var(--tempest-space-2);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface);color:var(--tempest-text);cursor:pointer;transition:var(--tempest-transition-color);justify-content:center;align-items:center;display:inline-flex;position:absolute}
|
|
11
|
+
.tempest_torch_aw7tt[aria-pressed=true]{border-color:var(--tempest-warning);background-color:var(--tempest-warning-bg);color:var(--tempest-warning-fg)}
|
|
12
|
+
.tempest_torch_aw7tt:focus-visible,.tempest_retry_3K88V:focus-visible{outline:var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);outline-offset:2px}
|
|
13
|
+
@media (prefers-reduced-motion:reduce){.tempest_torch_aw7tt{transition:none}}
|
|
14
|
+
@media (pointer:coarse){.tempest_torch_aw7tt:after{content:"";position:absolute;inset:-8px}}
|
|
15
|
+
.tempest_overlay_ZWMCa{justify-content:center;align-items:center;gap:var(--tempest-space-2);padding:var(--tempest-space-3);background-color:var(--tempest-surface);text-align:center;flex-direction:column;display:flex;position:absolute;inset:0}
|
|
16
|
+
.tempest_overlayText_jBln2{color:var(--tempest-text);font-size:var(--tempest-text-sm);margin:0}
|
|
17
|
+
.tempest_retry_3K88V{padding:var(--tempest-space-2) var(--tempest-space-3);border-radius:var(--tempest-radius-md);background-color:var(--tempest-primary);color:var(--tempest-primary-foreground);font:inherit;font-size:var(--tempest-text-sm);font-weight:var(--tempest-weight-medium);cursor:pointer;border:1px solid #0000}
|
|
18
|
+
.tempest_status_9eKPi{align-items:center;gap:var(--tempest-space-1);min-height:1.25em;color:var(--tempest-text-muted);font-size:var(--tempest-text-xs);margin:0;display:flex}
|
|
19
|
+
.tempest_statusIcon_k2Hmu{flex:none}
|
|
20
|
+
.tempest_notice_ELics{padding:var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface);color:var(--tempest-text-muted);font-size:var(--tempest-text-sm);margin:0}
|
|
21
|
+
.tempest_footer_6SO7U{color:var(--tempest-text-muted);font-size:var(--tempest-text-xs)}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_bar_kp35Q{background:var(--tempest-surface);border-top:1px solid var(--tempest-border);width:100%;padding-bottom:env(safe-area-inset-bottom,0);font-family:var(--tempest-font-sans);display:flex}
|
|
3
|
+
.tempest_item_XfDIW{cursor:pointer;color:var(--tempest-text-muted);font-size:var(--tempest-text-2xs);transition:color var(--tempest-duration-fast,.12s) var(--tempest-ease-out,ease-out);background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;min-height:56px;padding:8px 4px;display:flex}
|
|
4
|
+
.tempest_item_XfDIW:hover{color:var(--tempest-text)}
|
|
5
|
+
.tempest_item_XfDIW.tempest_active_sK54f{color:var(--tempest-primary)}
|
|
6
|
+
.tempest_item_XfDIW:disabled{opacity:.4;cursor:not-allowed}
|
|
7
|
+
.tempest_iconWrap_yJ20b{display:inline-flex;position:relative}
|
|
8
|
+
.tempest_icon_TAjtI{justify-content:center;align-items:center;font-size:20px;line-height:1;display:inline-flex}
|
|
9
|
+
.tempest_badge_-c3Do{border-radius:var(--tempest-radius-full);background:var(--tempest-danger-solid);min-width:14px;height:14px;color:var(--tempest-danger-on-solid);text-align:center;font-size:10px;line-height:14px;font-weight:var(--tempest-weight-semibold);padding:0 4px;position:absolute;top:-4px;right:-8px}
|
|
10
|
+
.tempest_label_qJj3L{line-height:1}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* Generated by scripts/split-css.mjs — do not edit. */
|
|
2
|
+
.tempest_root_qXce2{z-index:60;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}
|
|
3
|
+
.tempest_backdrop_WLqh0{animation:tempest_fadeIn_fyyhf var(--tempest-duration-base,.2s) var(--tempest-ease-out,ease-out);background:#00000073;position:absolute;inset:0}
|
|
4
|
+
.tempest_sheet_Okz1P{background:var(--tempest-surface);border-top-left-radius:var(--tempest-radius-2xl,var(--tempest-radius-lg));border-top-right-radius:var(--tempest-radius-2xl,var(--tempest-radius-lg));width:100%;max-width:720px;max-height:90dvh;box-shadow:var(--tempest-shadow-xl,0 -10px 30px #00000040);padding-bottom:env(safe-area-inset-bottom,0);animation:tempest_slideUp_CSrpB var(--tempest-duration-base,.24s) var(--tempest-ease-out,ease-out);font-family:var(--tempest-font-sans);flex-direction:column;display:flex;position:relative;overflow:hidden}
|
|
5
|
+
.tempest_handle_GWCoK{padding:var(--tempest-space-2) 0;cursor:grab;background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:flex}
|
|
6
|
+
.tempest_handleBar_XPPiI{background:var(--tempest-gray-300);border-radius:var(--tempest-radius-full);width:36px;height:4px;display:block}
|
|
7
|
+
.tempest_title_i5Vuc{padding:var(--tempest-space-2) var(--tempest-space-4) var(--tempest-space-3);font-size:var(--tempest-text-lg);font-weight:var(--tempest-weight-semibold);color:var(--tempest-text);border-bottom:1px solid var(--tempest-border);flex:none}
|
|
8
|
+
.tempest_body_bgDhJ{padding:var(--tempest-space-4);color:var(--tempest-text);flex:auto;overflow-y:auto}
|
|
9
|
+
@keyframes tempest_fadeIn_fyyhf{0%{opacity:0}to{opacity:1}}
|
|
10
|
+
@keyframes tempest_slideUp_CSrpB{0%{transform:translateY(100%)}to{transform:translateY(0)}}
|
|
11
|
+
@media (prefers-reduced-motion:reduce){.tempest_backdrop_WLqh0,.tempest_sheet_Okz1P{animation:none}}
|