tempest-react-sdk 0.78.0 → 0.79.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 +6 -6
- package/bin/lib/openapi/generate.mjs +168 -64
- package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
- package/bin/lib/openapi/generate.test.mjs +263 -1
- package/dist/access/Can.cjs.map +1 -1
- package/dist/access/Can.js.map +1 -1
- package/dist/access/access-control-context.cjs.map +1 -1
- package/dist/access/access-control-context.js.map +1 -1
- package/dist/access/create-role-access-control.cjs.map +1 -1
- package/dist/access/create-role-access-control.js.map +1 -1
- package/dist/access/permissions-from-token.cjs.map +1 -1
- package/dist/access/permissions-from-token.js.map +1 -1
- package/dist/access/use-can.cjs.map +1 -1
- package/dist/access/use-can.js.map +1 -1
- package/dist/app/AppProviders.cjs.map +1 -1
- package/dist/app/AppProviders.js.map +1 -1
- package/dist/audio/audio-bus.cjs.map +1 -1
- package/dist/audio/audio-bus.js.map +1 -1
- package/dist/audio/audio-output.cjs.map +1 -1
- package/dist/audio/audio-output.js.map +1 -1
- package/dist/audio/audio-player.cjs.map +1 -1
- package/dist/audio/audio-player.js.map +1 -1
- package/dist/audio/audio-recorder.cjs.map +1 -1
- package/dist/audio/audio-recorder.js.map +1 -1
- package/dist/audio/duration.cjs.map +1 -1
- package/dist/audio/duration.js.map +1 -1
- package/dist/audio/level-meter.cjs.map +1 -1
- package/dist/audio/level-meter.js.map +1 -1
- package/dist/audio/media-access.cjs.map +1 -1
- package/dist/audio/media-access.js.map +1 -1
- package/dist/audio/noise-floor.cjs.map +1 -1
- package/dist/audio/noise-floor.js.map +1 -1
- package/dist/audio/sfx-pool.cjs.map +1 -1
- package/dist/audio/sfx-pool.js.map +1 -1
- package/dist/audio/use-audio-bus.cjs.map +1 -1
- package/dist/audio/use-audio-bus.js.map +1 -1
- package/dist/audio/use-audio-recorder.cjs.map +1 -1
- package/dist/audio/use-audio-recorder.js.map +1 -1
- package/dist/audio/use-audio.cjs.map +1 -1
- package/dist/audio/use-audio.js.map +1 -1
- package/dist/audio/use-microphone.cjs +1 -1
- package/dist/audio/use-microphone.cjs.map +1 -1
- package/dist/audio/use-microphone.js +1 -5
- package/dist/audio/use-microphone.js.map +1 -1
- package/dist/audio/use-sfx-pool.cjs.map +1 -1
- package/dist/audio/use-sfx-pool.js.map +1 -1
- package/dist/audio/voice-activity.cjs.map +1 -1
- package/dist/audio/voice-activity.js.map +1 -1
- package/dist/audio/voice-chain-stages.cjs.map +1 -1
- package/dist/audio/voice-chain-stages.js.map +1 -1
- package/dist/audio/voice-chain.cjs.map +1 -1
- package/dist/audio/voice-chain.js.map +1 -1
- package/dist/audio/wav.cjs.map +1 -1
- package/dist/audio/wav.js.map +1 -1
- package/dist/auth/AuthGuard.cjs.map +1 -1
- package/dist/auth/AuthGuard.js.map +1 -1
- package/dist/auth/create-auth-store.cjs.map +1 -1
- package/dist/auth/create-auth-store.js.map +1 -1
- package/dist/auth/create-tempest-auth.cjs +1 -1
- package/dist/auth/create-tempest-auth.cjs.map +1 -1
- package/dist/auth/create-tempest-auth.js +1 -3
- package/dist/auth/create-tempest-auth.js.map +1 -1
- package/dist/auth/jwt.cjs.map +1 -1
- package/dist/auth/jwt.js.map +1 -1
- 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/auth/refresh-queue.cjs.map +1 -1
- package/dist/auth/refresh-queue.js.map +1 -1
- package/dist/auth/use-passkey.cjs +1 -1
- package/dist/auth/use-passkey.cjs.map +1 -1
- package/dist/auth/use-passkey.js +1 -1
- package/dist/auth/use-passkey.js.map +1 -1
- package/dist/br/BrazilMap.cjs.map +1 -1
- package/dist/br/BrazilMap.js.map +1 -1
- package/dist/br/BrazilMap.module.cjs.map +1 -1
- package/dist/br/BrazilMap.module.js.map +1 -1
- package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
- package/dist/br/BrazilStateCitySelect.js.map +1 -1
- package/dist/br/BrazilStateMap.cjs.map +1 -1
- package/dist/br/BrazilStateMap.js.map +1 -1
- package/dist/br/MapLegend.cjs.map +1 -1
- package/dist/br/MapLegend.js.map +1 -1
- package/dist/br/MapLegend.module.cjs.map +1 -1
- package/dist/br/MapLegend.module.js.map +1 -1
- package/dist/br/MapMarkers.cjs.map +1 -1
- package/dist/br/MapMarkers.js.map +1 -1
- package/dist/br/MapTooltip.cjs.map +1 -1
- package/dist/br/MapTooltip.js.map +1 -1
- package/dist/br/MunicipalitySearch.cjs +1 -1
- package/dist/br/MunicipalitySearch.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.js +2 -5
- package/dist/br/MunicipalitySearch.js.map +1 -1
- package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.module.js.map +1 -1
- package/dist/br/PixQRCode.cjs.map +1 -1
- package/dist/br/PixQRCode.js.map +1 -1
- package/dist/br/PixQRCode.module.cjs.map +1 -1
- package/dist/br/PixQRCode.module.js.map +1 -1
- package/dist/br/boleto.cjs.map +1 -1
- package/dist/br/boleto.js.map +1 -1
- package/dist/br/br-geo.cjs.map +1 -1
- package/dist/br/br-geo.js.map +1 -1
- package/dist/br/data/br-centroids.cjs.map +1 -1
- package/dist/br/data/br-centroids.js.map +1 -1
- package/dist/br/data/br-locations.cjs.map +1 -1
- package/dist/br/data/br-locations.js.map +1 -1
- package/dist/br/data/br-uf-geo.cjs.map +1 -1
- package/dist/br/data/br-uf-geo.js.map +1 -1
- package/dist/br/data/mun/AC.cjs.map +1 -1
- package/dist/br/data/mun/AC.js.map +1 -1
- package/dist/br/data/mun/AL.cjs.map +1 -1
- package/dist/br/data/mun/AL.js.map +1 -1
- package/dist/br/data/mun/AM.cjs.map +1 -1
- package/dist/br/data/mun/AM.js.map +1 -1
- package/dist/br/data/mun/AP.cjs.map +1 -1
- package/dist/br/data/mun/AP.js.map +1 -1
- package/dist/br/data/mun/BA.cjs.map +1 -1
- package/dist/br/data/mun/BA.js.map +1 -1
- package/dist/br/data/mun/CE.cjs.map +1 -1
- package/dist/br/data/mun/CE.js.map +1 -1
- package/dist/br/data/mun/DF.cjs.map +1 -1
- package/dist/br/data/mun/DF.js.map +1 -1
- package/dist/br/data/mun/ES.cjs.map +1 -1
- package/dist/br/data/mun/ES.js.map +1 -1
- package/dist/br/data/mun/GO.cjs.map +1 -1
- package/dist/br/data/mun/GO.js.map +1 -1
- package/dist/br/data/mun/MA.cjs.map +1 -1
- package/dist/br/data/mun/MA.js.map +1 -1
- package/dist/br/data/mun/MG.cjs.map +1 -1
- package/dist/br/data/mun/MG.js.map +1 -1
- package/dist/br/data/mun/MS.cjs.map +1 -1
- package/dist/br/data/mun/MS.js.map +1 -1
- package/dist/br/data/mun/MT.cjs.map +1 -1
- package/dist/br/data/mun/MT.js.map +1 -1
- package/dist/br/data/mun/PA.cjs.map +1 -1
- package/dist/br/data/mun/PA.js.map +1 -1
- package/dist/br/data/mun/PB.cjs.map +1 -1
- package/dist/br/data/mun/PB.js.map +1 -1
- package/dist/br/data/mun/PE.cjs.map +1 -1
- package/dist/br/data/mun/PE.js.map +1 -1
- package/dist/br/data/mun/PI.cjs.map +1 -1
- package/dist/br/data/mun/PI.js.map +1 -1
- package/dist/br/data/mun/PR.cjs.map +1 -1
- package/dist/br/data/mun/PR.js.map +1 -1
- package/dist/br/data/mun/RJ.cjs.map +1 -1
- package/dist/br/data/mun/RJ.js.map +1 -1
- package/dist/br/data/mun/RN.cjs.map +1 -1
- package/dist/br/data/mun/RN.js.map +1 -1
- package/dist/br/data/mun/RO.cjs.map +1 -1
- package/dist/br/data/mun/RO.js.map +1 -1
- package/dist/br/data/mun/RR.cjs.map +1 -1
- package/dist/br/data/mun/RR.js.map +1 -1
- package/dist/br/data/mun/RS.cjs.map +1 -1
- package/dist/br/data/mun/RS.js.map +1 -1
- package/dist/br/data/mun/SC.cjs.map +1 -1
- package/dist/br/data/mun/SC.js.map +1 -1
- package/dist/br/data/mun/SE.cjs.map +1 -1
- package/dist/br/data/mun/SE.js.map +1 -1
- package/dist/br/data/mun/SP.cjs.map +1 -1
- package/dist/br/data/mun/SP.js.map +1 -1
- package/dist/br/data/mun/TO.cjs.map +1 -1
- package/dist/br/data/mun/TO.js.map +1 -1
- package/dist/br/geocode.cjs.map +1 -1
- package/dist/br/geocode.js.map +1 -1
- package/dist/br/holidays.cjs.map +1 -1
- package/dist/br/holidays.js.map +1 -1
- package/dist/br/locations.cjs.map +1 -1
- package/dist/br/locations.js.map +1 -1
- package/dist/br/nfe.cjs.map +1 -1
- package/dist/br/nfe.js.map +1 -1
- package/dist/br/pix.cjs +1 -1
- package/dist/br/pix.cjs.map +1 -1
- package/dist/br/pix.js +108 -74
- package/dist/br/pix.js.map +1 -1
- package/dist/br/regions.cjs.map +1 -1
- package/dist/br/regions.js.map +1 -1
- package/dist/br/scales.cjs.map +1 -1
- package/dist/br/scales.js.map +1 -1
- package/dist/br/state-geo.cjs.map +1 -1
- package/dist/br/state-geo.js.map +1 -1
- package/dist/br/svg-utils.cjs.map +1 -1
- package/dist/br/svg-utils.js.map +1 -1
- package/dist/br/use-map-hover.cjs.map +1 -1
- package/dist/br/use-map-hover.js.map +1 -1
- package/dist/br/use-map-zoom.cjs.map +1 -1
- package/dist/br/use-map-zoom.js.map +1 -1
- package/dist/br/whatsapp.cjs.map +1 -1
- package/dist/br/whatsapp.js.map +1 -1
- package/dist/br.cjs.map +1 -1
- package/dist/br.d.ts +6 -2
- package/dist/br.js.map +1 -1
- package/dist/capture/barcode.cjs.map +1 -1
- package/dist/capture/barcode.js.map +1 -1
- package/dist/capture/media-recorder.cjs.map +1 -1
- package/dist/capture/media-recorder.js.map +1 -1
- package/dist/capture/use-barcode-scanner.cjs.map +1 -1
- package/dist/capture/use-barcode-scanner.js.map +1 -1
- package/dist/capture/use-screen-capture.cjs +1 -1
- package/dist/capture/use-screen-capture.cjs.map +1 -1
- package/dist/capture/use-screen-capture.js +1 -7
- package/dist/capture/use-screen-capture.js.map +1 -1
- package/dist/capture/use-speech-recognition.cjs +1 -1
- package/dist/capture/use-speech-recognition.cjs.map +1 -1
- package/dist/capture/use-speech-recognition.js +35 -36
- package/dist/capture/use-speech-recognition.js.map +1 -1
- package/dist/capture/use-torch.cjs.map +1 -1
- package/dist/capture/use-torch.js.map +1 -1
- package/dist/capture/use-video-recorder.cjs.map +1 -1
- package/dist/capture/use-video-recorder.js.map +1 -1
- package/dist/capture/video-recorder.cjs.map +1 -1
- package/dist/capture/video-recorder.js.map +1 -1
- package/dist/charts/AreaChart.cjs.map +1 -1
- package/dist/charts/AreaChart.js.map +1 -1
- package/dist/charts/BarChart.cjs.map +1 -1
- package/dist/charts/BarChart.js.map +1 -1
- package/dist/charts/LineChart.cjs.map +1 -1
- package/dist/charts/LineChart.js.map +1 -1
- package/dist/charts/PieChart.cjs.map +1 -1
- package/dist/charts/PieChart.js.map +1 -1
- package/dist/charts/RadarChart.cjs.map +1 -1
- package/dist/charts/RadarChart.js.map +1 -1
- package/dist/charts/palette.cjs.map +1 -1
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts/scales.cjs.map +1 -1
- package/dist/charts/scales.js.map +1 -1
- package/dist/charts/types.cjs.map +1 -1
- package/dist/charts/types.js.map +1 -1
- package/dist/charts/use-chart-colors.cjs.map +1 -1
- package/dist/charts/use-chart-colors.js.map +1 -1
- package/dist/components/AIChat/AIChat.cjs +1 -1
- package/dist/components/AIChat/AIChat.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.js +1 -5
- package/dist/components/AIChat/AIChat.js.map +1 -1
- package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.module.js.map +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
- package/dist/components/AIChat/AIChatComposer.js +1 -7
- package/dist/components/AIChat/AIChatComposer.js.map +1 -1
- package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
- package/dist/components/AIChat/AIChatTurn.js.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.module.js.map +1 -1
- package/dist/components/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/Alert.module.cjs.map +1 -1
- package/dist/components/Alert/Alert.module.js.map +1 -1
- package/dist/components/AppBar/AppBar.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.js.map +1 -1
- package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.module.js.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
- package/dist/components/AppShell/AppShell.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.module.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
- package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
- package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.module.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/Badge.module.cjs.map +1 -1
- package/dist/components/Badge/Badge.module.js.map +1 -1
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.module.cjs.map +1 -1
- package/dist/components/Banner/Banner.module.js.map +1 -1
- package/dist/components/BarList/BarList.cjs.map +1 -1
- package/dist/components/BarList/BarList.js.map +1 -1
- package/dist/components/BarList/BarList.module.cjs.map +1 -1
- package/dist/components/BarList/BarList.module.js.map +1 -1
- package/dist/components/BarList/bar-list-model.cjs.map +1 -1
- package/dist/components/BarList/bar-list-model.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.cjs.map +1 -1
- package/dist/components/Button/Button.module.js.map +1 -1
- package/dist/components/Button/ButtonContent.cjs.map +1 -1
- package/dist/components/Button/ButtonContent.js.map +1 -1
- package/dist/components/Button/ButtonSlot.cjs.map +1 -1
- package/dist/components/Button/ButtonSlot.js.map +1 -1
- package/dist/components/Button/button-class.cjs.map +1 -1
- package/dist/components/Button/button-class.js.map +1 -1
- package/dist/components/Button/link-rel.cjs.map +1 -1
- package/dist/components/Button/link-rel.js.map +1 -1
- package/dist/components/Button/slot.cjs.map +1 -1
- package/dist/components/Button/slot.js.map +1 -1
- package/dist/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.module.js.map +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.module.cjs.map +1 -1
- package/dist/components/Card/Card.module.js.map +1 -1
- package/dist/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.module.js.map +1 -1
- package/dist/components/Center/Center.cjs.map +1 -1
- package/dist/components/Center/Center.js.map +1 -1
- package/dist/components/Center/Center.module.cjs.map +1 -1
- package/dist/components/Center/Center.module.js.map +1 -1
- package/dist/components/Chat/Chat.cjs.map +1 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/Chat/Chat.module.cjs.map +1 -1
- package/dist/components/Chat/Chat.module.js.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
- package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
- package/dist/components/Chat/ChatAttachments.js.map +1 -1
- package/dist/components/Chat/ChatBubble.cjs.map +1 -1
- package/dist/components/Chat/ChatBubble.js.map +1 -1
- package/dist/components/Chat/ChatComposer.cjs.map +1 -1
- package/dist/components/Chat/ChatComposer.js.map +1 -1
- package/dist/components/Chat/chat-groups.cjs +1 -1
- package/dist/components/Chat/chat-groups.cjs.map +1 -1
- package/dist/components/Chat/chat-groups.js +2 -6
- package/dist/components/Chat/chat-groups.js.map +1 -1
- package/dist/components/Chat/chat-receipt.cjs.map +1 -1
- package/dist/components/Chat/chat-receipt.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.cjs +1 -1
- package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.js +2 -12
- package/dist/components/ChipInput/ChipInput.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
- package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
- package/dist/components/CodeBlock/tokenize.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.module.js.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.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 +4 -11
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/Command/Command.module.cjs.map +1 -1
- package/dist/components/Command/Command.module.js.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
- package/dist/components/DataList/DataList.cjs.map +1 -1
- package/dist/components/DataList/DataList.js.map +1 -1
- package/dist/components/DataList/DataList.module.cjs.map +1 -1
- package/dist/components/DataList/DataList.module.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +6 -14
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.module.js.map +1 -1
- package/dist/components/DataTable/EditableCell.cjs +1 -1
- package/dist/components/DataTable/EditableCell.cjs.map +1 -1
- package/dist/components/DataTable/EditableCell.js +1 -9
- package/dist/components/DataTable/EditableCell.js.map +1 -1
- package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
- package/dist/components/DataTable/LoadingRows.js.map +1 -1
- package/dist/components/DataTable/edit-labels.cjs.map +1 -1
- package/dist/components/DataTable/edit-labels.js.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
- package/dist/components/Divider/Divider.cjs.map +1 -1
- package/dist/components/Divider/Divider.js.map +1 -1
- package/dist/components/Divider/Divider.module.cjs.map +1 -1
- package/dist/components/Divider/Divider.module.js.map +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.module.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 +2 -14
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.cjs +1 -1
- package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.js +7 -17
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
- package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
- package/dist/components/FilterBar/filter-apply.js.map +1 -1
- package/dist/components/FilterBar/filter-model.cjs.map +1 -1
- package/dist/components/FilterBar/filter-model.js.map +1 -1
- package/dist/components/FilterBar/filter-query.cjs +1 -1
- package/dist/components/FilterBar/filter-query.cjs.map +1 -1
- package/dist/components/FilterBar/filter-query.js +2 -5
- package/dist/components/FilterBar/filter-query.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
- package/dist/components/For/For.cjs.map +1 -1
- package/dist/components/For/For.js.map +1 -1
- package/dist/components/Form/Form.cjs.map +1 -1
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Form/Form.module.cjs.map +1 -1
- package/dist/components/Form/Form.module.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
- package/dist/components/Image/Image.cjs.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/Image/Image.module.cjs.map +1 -1
- package/dist/components/Image/Image.module.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.js +4 -8
- package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/Input.module.cjs.map +1 -1
- package/dist/components/Input/Input.module.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
- package/dist/components/InstallButton/install-hints.cjs.map +1 -1
- package/dist/components/InstallButton/install-hints.js.map +1 -1
- package/dist/components/Kanban/Kanban.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.js.map +1 -1
- package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.module.js.map +1 -1
- package/dist/components/Kbd/Kbd.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.js.map +1 -1
- package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.module.js.map +1 -1
- package/dist/components/Label/Label.cjs.map +1 -1
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Label/Label.module.cjs.map +1 -1
- package/dist/components/Label/Label.module.js.map +1 -1
- package/dist/components/Layout/Layout.cjs.map +1 -1
- package/dist/components/Layout/Layout.js.map +1 -1
- package/dist/components/Layout/Layout.module.cjs.map +1 -1
- package/dist/components/Layout/Layout.module.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.cjs +1 -1
- package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.js +1 -1
- package/dist/components/Lightbox/Lightbox.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
- package/dist/components/ListTile/ListTile.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.js.map +1 -1
- package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.module.js.map +1 -1
- package/dist/components/Markdown/Markdown.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.module.js.map +1 -1
- package/dist/components/Markdown/markdown-parse.cjs +2 -2
- package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
- package/dist/components/Markdown/markdown-parse.js +8 -27
- package/dist/components/Markdown/markdown-parse.js.map +1 -1
- package/dist/components/Masonry/Masonry.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.js.map +1 -1
- package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.module.js.map +1 -1
- package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
- package/dist/components/Masonry/masonry-layout.js.map +1 -1
- package/dist/components/Menubar/Menubar.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.js.map +1 -1
- package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.module.js.map +1 -1
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.cjs.map +1 -1
- package/dist/components/Modal/Modal.module.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
- package/dist/components/Money/Money.cjs.map +1 -1
- package/dist/components/Money/Money.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
- package/dist/components/NProgress/NProgress.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.js.map +1 -1
- package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.module.js.map +1 -1
- package/dist/components/Navbar/Navbar.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.js.map +1 -1
- package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.module.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
- package/dist/components/Page/Page.cjs.map +1 -1
- package/dist/components/Page/Page.js.map +1 -1
- package/dist/components/Page/Page.module.cjs.map +1 -1
- package/dist/components/Page/Page.module.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.module.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
- package/dist/components/PinInput/PinInput.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.js.map +1 -1
- package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.module.js.map +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/Popover.module.cjs.map +1 -1
- package/dist/components/Popover/Popover.module.js.map +1 -1
- package/dist/components/Portal/Portal.cjs.map +1 -1
- package/dist/components/Portal/Portal.js.map +1 -1
- package/dist/components/Portal/anchor-position.cjs.map +1 -1
- package/dist/components/Portal/anchor-position.js.map +1 -1
- package/dist/components/Portal/escape-layer.cjs.map +1 -1
- package/dist/components/Portal/escape-layer.js.map +1 -1
- package/dist/components/Portal/portal-host.cjs.map +1 -1
- package/dist/components/Portal/portal-host.js.map +1 -1
- package/dist/components/Portal/tab-bridge.cjs +1 -1
- package/dist/components/Portal/tab-bridge.cjs.map +1 -1
- package/dist/components/Portal/tab-bridge.js +1 -5
- package/dist/components/Portal/tab-bridge.js.map +1 -1
- package/dist/components/Progress/Progress.cjs.map +1 -1
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Progress/Progress.module.cjs.map +1 -1
- package/dist/components/Progress/Progress.module.js.map +1 -1
- package/dist/components/QRCode/QRCode.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.js.map +1 -1
- package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.module.js.map +1 -1
- package/dist/components/QRCode/qr-encode.cjs +1 -1
- package/dist/components/QRCode/qr-encode.cjs.map +1 -1
- package/dist/components/QRCode/qr-encode.js +7 -13
- package/dist/components/QRCode/qr-encode.js.map +1 -1
- package/dist/components/QRCode/qr-tables.cjs.map +1 -1
- package/dist/components/QRCode/qr-tables.js.map +1 -1
- package/dist/components/Radio/Radio.cjs.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/Radio.module.cjs.map +1 -1
- package/dist/components/Radio/Radio.module.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
- package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
- package/dist/components/Resizable/Resizable.cjs +1 -1
- package/dist/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.js +1 -9
- package/dist/components/Resizable/Resizable.js.map +1 -1
- package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.module.js.map +1 -1
- package/dist/components/Responsive/Responsive.cjs.map +1 -1
- package/dist/components/Responsive/Responsive.js.map +1 -1
- package/dist/components/Reveal/Reveal.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.js.map +1 -1
- package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.module.js.map +1 -1
- package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
- package/dist/components/Reveal/reveal-threshold.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
- package/dist/components/Select/CaretIcon.cjs.map +1 -1
- package/dist/components/Select/CaretIcon.js.map +1 -1
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/Select.module.cjs.map +1 -1
- package/dist/components/Select/Select.module.js.map +1 -1
- package/dist/components/Select/options.cjs.map +1 -1
- package/dist/components/Select/options.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.js +13 -23
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
- package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
- package/dist/components/Sidebar/active-nav-key.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.js +1 -5
- package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/Slider.module.cjs.map +1 -1
- package/dist/components/Slider/Slider.module.js.map +1 -1
- package/dist/components/Spacer/Spacer.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.js.map +1 -1
- package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.module.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
- package/dist/components/Spinner/Spinner.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.module.js.map +1 -1
- package/dist/components/Stat/Stat.cjs.map +1 -1
- package/dist/components/Stat/Stat.js.map +1 -1
- package/dist/components/Stat/Stat.module.cjs.map +1 -1
- package/dist/components/Stat/Stat.module.js.map +1 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.module.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Switch/Switch.module.cjs.map +1 -1
- package/dist/components/Switch/Switch.module.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/Table.module.cjs.map +1 -1
- package/dist/components/Table/Table.module.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.module.js.map +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Tag/Tag.module.cjs.map +1 -1
- package/dist/components/Tag/Tag.module.js.map +1 -1
- package/dist/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.module.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.module.js.map +1 -1
- package/dist/components/Toast/Toast.module.cjs.map +1 -1
- package/dist/components/Toast/Toast.module.js.map +1 -1
- package/dist/components/Toast/ToastProvider.cjs.map +1 -1
- package/dist/components/Toast/ToastProvider.js.map +1 -1
- package/dist/components/Toggle/Toggle.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.module.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
- package/dist/components/Tour/Tour.cjs +1 -1
- package/dist/components/Tour/Tour.cjs.map +1 -1
- package/dist/components/Tour/Tour.js +1 -5
- package/dist/components/Tour/Tour.js.map +1 -1
- package/dist/components/Tour/Tour.module.cjs.map +1 -1
- package/dist/components/Tour/Tour.module.js.map +1 -1
- package/dist/components/Tour/tour-position.cjs.map +1 -1
- package/dist/components/Tour/tour-position.js.map +1 -1
- package/dist/components/Transfer/Transfer.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.js.map +1 -1
- package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.module.js.map +1 -1
- package/dist/components/Transfer/transfer-state.cjs.map +1 -1
- package/dist/components/Transfer/transfer-state.js.map +1 -1
- package/dist/components/TreeView/TreeView.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.js.map +1 -1
- package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.module.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
- package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
- package/dist/components/Wizard/Wizard.cjs +1 -1
- package/dist/components/Wizard/Wizard.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.js +4 -11
- package/dist/components/Wizard/Wizard.js.map +1 -1
- package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.module.js.map +1 -1
- package/dist/data/create-data-provider.cjs.map +1 -1
- package/dist/data/create-data-provider.js.map +1 -1
- package/dist/data/data-provider-context.cjs.map +1 -1
- package/dist/data/data-provider-context.js.map +1 -1
- package/dist/data/use-resource.cjs.map +1 -1
- package/dist/data/use-resource.js.map +1 -1
- package/dist/editor/RichTextEditor.cjs.map +1 -1
- package/dist/editor/RichTextEditor.js.map +1 -1
- package/dist/editor/RichTextEditor.module.cjs.map +1 -1
- package/dist/editor/RichTextEditor.module.js.map +1 -1
- package/dist/editor.js +1 -2
- package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
- package/dist/error-boundary/ErrorBoundary.js.map +1 -1
- package/dist/error-boundary/use-error-handler.cjs.map +1 -1
- package/dist/error-boundary/use-error-handler.js.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
- package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
- package/dist/feature-flags/growthbook-adapter.js.map +1 -1
- package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
- package/dist/feature-flags/in-memory-adapter.js.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
- package/dist/forms/FormField.cjs.map +1 -1
- package/dist/forms/FormField.js.map +1 -1
- package/dist/forms/br-validators.cjs.map +1 -1
- package/dist/forms/br-validators.js.map +1 -1
- package/dist/forms/masked-inputs.cjs.map +1 -1
- package/dist/forms/masked-inputs.js.map +1 -1
- package/dist/forms/use-viacep.cjs.map +1 -1
- package/dist/forms/use-viacep.js.map +1 -1
- package/dist/forms/use-zod-form.cjs.map +1 -1
- package/dist/forms/use-zod-form.js.map +1 -1
- package/dist/forms/validate-form.cjs.map +1 -1
- package/dist/forms/validate-form.js.map +1 -1
- package/dist/forms/zod-resolver.cjs.map +1 -1
- package/dist/forms/zod-resolver.js.map +1 -1
- package/dist/geo/TrajectoryMap.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.js.map +1 -1
- package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.module.js.map +1 -1
- package/dist/geo/bounds.cjs.map +1 -1
- package/dist/geo/bounds.js.map +1 -1
- package/dist/geo/create-position-tracker.cjs +1 -1
- package/dist/geo/create-position-tracker.cjs.map +1 -1
- package/dist/geo/create-position-tracker.js +1 -7
- package/dist/geo/create-position-tracker.js.map +1 -1
- package/dist/geo/distance.cjs.map +1 -1
- package/dist/geo/distance.js.map +1 -1
- package/dist/geo/estimate.cjs.map +1 -1
- package/dist/geo/estimate.js.map +1 -1
- package/dist/geo/leaflet-map.cjs.map +1 -1
- package/dist/geo/leaflet-map.js.map +1 -1
- package/dist/geo/projection.cjs.map +1 -1
- package/dist/geo/projection.js.map +1 -1
- package/dist/geo/routing.cjs.map +1 -1
- package/dist/geo/routing.js.map +1 -1
- package/dist/geo/types.cjs.map +1 -1
- package/dist/geo/types.js.map +1 -1
- package/dist/geo/use-position-tracker.cjs.map +1 -1
- package/dist/geo/use-position-tracker.js.map +1 -1
- package/dist/hooks/pwa-env.cjs.map +1 -1
- package/dist/hooks/pwa-env.js.map +1 -1
- package/dist/hooks/tab-sequence.cjs.map +1 -1
- package/dist/hooks/tab-sequence.js.map +1 -1
- package/dist/hooks/use-announce.cjs +1 -1
- package/dist/hooks/use-announce.cjs.map +1 -1
- package/dist/hooks/use-announce.js +2 -2
- package/dist/hooks/use-announce.js.map +1 -1
- package/dist/hooks/use-async.cjs.map +1 -1
- package/dist/hooks/use-async.js.map +1 -1
- package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-before-install-prompt.js.map +1 -1
- package/dist/hooks/use-breakpoint.cjs.map +1 -1
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-click-outside.cjs.map +1 -1
- package/dist/hooks/use-click-outside.js.map +1 -1
- package/dist/hooks/use-client-filter.cjs.map +1 -1
- package/dist/hooks/use-client-filter.js.map +1 -1
- package/dist/hooks/use-clipboard.cjs.map +1 -1
- package/dist/hooks/use-clipboard.js.map +1 -1
- package/dist/hooks/use-countdown.cjs.map +1 -1
- package/dist/hooks/use-countdown.js.map +1 -1
- package/dist/hooks/use-counter.cjs.map +1 -1
- package/dist/hooks/use-counter.js.map +1 -1
- package/dist/hooks/use-debounce.cjs.map +1 -1
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-deep-memo.cjs.map +1 -1
- package/dist/hooks/use-deep-memo.js.map +1 -1
- package/dist/hooks/use-disclosure.cjs.map +1 -1
- package/dist/hooks/use-disclosure.js.map +1 -1
- package/dist/hooks/use-document-title.cjs.map +1 -1
- package/dist/hooks/use-document-title.js.map +1 -1
- package/dist/hooks/use-document-visibility.cjs.map +1 -1
- package/dist/hooks/use-document-visibility.js.map +1 -1
- package/dist/hooks/use-draft-filters.cjs.map +1 -1
- package/dist/hooks/use-draft-filters.js.map +1 -1
- package/dist/hooks/use-event-listener.cjs.map +1 -1
- package/dist/hooks/use-event-listener.js.map +1 -1
- package/dist/hooks/use-favicon.cjs.map +1 -1
- package/dist/hooks/use-favicon.js.map +1 -1
- package/dist/hooks/use-focus-trap.cjs.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
- package/dist/hooks/use-fullscreen-element.js.map +1 -1
- package/dist/hooks/use-fullscreen.cjs +1 -1
- package/dist/hooks/use-fullscreen.cjs.map +1 -1
- package/dist/hooks/use-fullscreen.js +7 -23
- package/dist/hooks/use-fullscreen.js.map +1 -1
- package/dist/hooks/use-geolocation.cjs.map +1 -1
- package/dist/hooks/use-geolocation.js.map +1 -1
- package/dist/hooks/use-hover.cjs.map +1 -1
- package/dist/hooks/use-hover.js.map +1 -1
- package/dist/hooks/use-idle.cjs.map +1 -1
- package/dist/hooks/use-idle.js.map +1 -1
- package/dist/hooks/use-install-prompt.cjs +1 -1
- package/dist/hooks/use-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-install-prompt.js +1 -1
- package/dist/hooks/use-install-prompt.js.map +1 -1
- package/dist/hooks/use-intersection-observer.cjs.map +1 -1
- package/dist/hooks/use-intersection-observer.js.map +1 -1
- package/dist/hooks/use-interval.cjs.map +1 -1
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-is-first-render.cjs.map +1 -1
- package/dist/hooks/use-is-first-render.js.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
- package/dist/hooks/use-latest-ref.cjs.map +1 -1
- package/dist/hooks/use-latest-ref.js.map +1 -1
- package/dist/hooks/use-list-state.cjs.map +1 -1
- package/dist/hooks/use-list-state.js.map +1 -1
- package/dist/hooks/use-local-storage.cjs +1 -1
- package/dist/hooks/use-local-storage.cjs.map +1 -1
- package/dist/hooks/use-local-storage.js +2 -5
- package/dist/hooks/use-local-storage.js.map +1 -1
- package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
- package/dist/hooks/use-long-press-handlers.js.map +1 -1
- package/dist/hooks/use-long-press.cjs.map +1 -1
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-map.cjs.map +1 -1
- package/dist/hooks/use-map.js.map +1 -1
- package/dist/hooks/use-media-devices.cjs.map +1 -1
- package/dist/hooks/use-media-devices.js.map +1 -1
- package/dist/hooks/use-media-permission.cjs +1 -1
- package/dist/hooks/use-media-permission.cjs.map +1 -1
- package/dist/hooks/use-media-permission.js +2 -5
- package/dist/hooks/use-media-permission.js.map +1 -1
- package/dist/hooks/use-media-query.cjs.map +1 -1
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-object-url.cjs.map +1 -1
- package/dist/hooks/use-object-url.js.map +1 -1
- package/dist/hooks/use-online.cjs.map +1 -1
- package/dist/hooks/use-online.js.map +1 -1
- package/dist/hooks/use-pagination.cjs.map +1 -1
- package/dist/hooks/use-pagination.js.map +1 -1
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.js.map +1 -1
- package/dist/hooks/use-push-to-talk.cjs.map +1 -1
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-queue.cjs.map +1 -1
- package/dist/hooks/use-queue.js.map +1 -1
- package/dist/hooks/use-resize-observer.cjs.map +1 -1
- package/dist/hooks/use-resize-observer.js.map +1 -1
- package/dist/hooks/use-scroll-lock.cjs.map +1 -1
- package/dist/hooks/use-scroll-lock.js.map +1 -1
- package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
- package/dist/hooks/use-scroll-overflow.js.map +1 -1
- package/dist/hooks/use-service-worker-update.cjs.map +1 -1
- package/dist/hooks/use-service-worker-update.js.map +1 -1
- package/dist/hooks/use-set.cjs.map +1 -1
- package/dist/hooks/use-set.js.map +1 -1
- package/dist/hooks/use-sortable.cjs.map +1 -1
- package/dist/hooks/use-sortable.js.map +1 -1
- package/dist/hooks/use-stable-callback.cjs.map +1 -1
- package/dist/hooks/use-stable-callback.js.map +1 -1
- package/dist/hooks/use-storage-estimate.cjs.map +1 -1
- package/dist/hooks/use-storage-estimate.js.map +1 -1
- package/dist/hooks/use-throttle.cjs.map +1 -1
- package/dist/hooks/use-throttle.js.map +1 -1
- package/dist/hooks/use-timeout.cjs.map +1 -1
- package/dist/hooks/use-timeout.js.map +1 -1
- package/dist/hooks/use-toggle.cjs.map +1 -1
- package/dist/hooks/use-toggle.js.map +1 -1
- package/dist/hooks/use-typewriter.cjs.map +1 -1
- package/dist/hooks/use-typewriter.js.map +1 -1
- package/dist/hooks/use-window-size.cjs.map +1 -1
- package/dist/hooks/use-window-size.js.map +1 -1
- package/dist/http/api-client.cjs.map +1 -1
- package/dist/http/api-client.js.map +1 -1
- package/dist/http/build-url.cjs.map +1 -1
- package/dist/http/build-url.js.map +1 -1
- package/dist/http/credential-scope.cjs.map +1 -1
- package/dist/http/credential-scope.js.map +1 -1
- package/dist/http/csrf.cjs.map +1 -1
- package/dist/http/csrf.js.map +1 -1
- package/dist/http/decode-response.cjs.map +1 -1
- package/dist/http/decode-response.js.map +1 -1
- 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.map +1 -1
- package/dist/http/errors.js.map +1 -1
- package/dist/http/idempotency.cjs.map +1 -1
- package/dist/http/idempotency.js.map +1 -1
- package/dist/http/parse-response.cjs.map +1 -1
- package/dist/http/parse-response.js.map +1 -1
- package/dist/http/resumable-upload.cjs.map +1 -1
- package/dist/http/resumable-upload.js.map +1 -1
- package/dist/http/retry.cjs.map +1 -1
- package/dist/http/retry.js.map +1 -1
- package/dist/http/timeout.cjs.map +1 -1
- package/dist/http/timeout.js.map +1 -1
- package/dist/http/upload-with-progress.cjs +1 -1
- package/dist/http/upload-with-progress.cjs.map +1 -1
- package/dist/http/upload-with-progress.js +2 -7
- package/dist/http/upload-with-progress.js.map +1 -1
- package/dist/http/use-describe-api-error.cjs.map +1 -1
- package/dist/http/use-describe-api-error.js.map +1 -1
- package/dist/http/use-poll.cjs +1 -1
- package/dist/http/use-poll.cjs.map +1 -1
- package/dist/http/use-poll.js +2 -5
- package/dist/http/use-poll.js.map +1 -1
- package/dist/i18n/I18nProvider.cjs.map +1 -1
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/create-i18n.cjs.map +1 -1
- package/dist/i18n/create-i18n.js.map +1 -1
- package/dist/icons/Icon.cjs.map +1 -1
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/IconPicker.cjs.map +1 -1
- package/dist/icons/IconPicker.js.map +1 -1
- package/dist/icons/IconPicker.module.cjs.map +1 -1
- package/dist/icons/IconPicker.module.js.map +1 -1
- package/dist/icons/IconProvider.cjs.map +1 -1
- package/dist/icons/IconProvider.js.map +1 -1
- package/dist/icons/alias.cjs.map +1 -1
- package/dist/icons/alias.js.map +1 -1
- package/dist/icons/generated/aliases.cjs.map +1 -1
- package/dist/icons/generated/aliases.js.map +1 -1
- package/dist/icons/generated/icon-names.cjs.map +1 -1
- package/dist/icons/generated/icon-names.js.map +1 -1
- package/dist/icons/generated/loaders.cjs.map +1 -1
- package/dist/icons/generated/loaders.js.map +1 -1
- package/dist/icons/generated/shard-00.cjs.map +1 -1
- package/dist/icons/generated/shard-00.js.map +1 -1
- package/dist/icons/generated/shard-01.cjs.map +1 -1
- package/dist/icons/generated/shard-01.js.map +1 -1
- package/dist/icons/generated/shard-02.cjs.map +1 -1
- package/dist/icons/generated/shard-02.js.map +1 -1
- package/dist/icons/generated/shard-03.cjs.map +1 -1
- package/dist/icons/generated/shard-03.js.map +1 -1
- package/dist/icons/generated/shard-04.cjs.map +1 -1
- package/dist/icons/generated/shard-04.js.map +1 -1
- package/dist/icons/generated/shard-05.cjs.map +1 -1
- package/dist/icons/generated/shard-05.js.map +1 -1
- package/dist/icons/generated/shard-06.cjs.map +1 -1
- package/dist/icons/generated/shard-06.js.map +1 -1
- package/dist/icons/generated/shard-07.cjs.map +1 -1
- package/dist/icons/generated/shard-07.js.map +1 -1
- package/dist/icons/generated/shard-08.cjs.map +1 -1
- package/dist/icons/generated/shard-08.js.map +1 -1
- package/dist/icons/generated/shard-09.cjs.map +1 -1
- package/dist/icons/generated/shard-09.js.map +1 -1
- package/dist/icons/generated/shard-10.cjs.map +1 -1
- package/dist/icons/generated/shard-10.js.map +1 -1
- package/dist/icons/generated/shard-11.cjs.map +1 -1
- package/dist/icons/generated/shard-11.js.map +1 -1
- package/dist/icons/generated/shard-12.cjs.map +1 -1
- package/dist/icons/generated/shard-12.js.map +1 -1
- package/dist/icons/generated/shard-13.cjs.map +1 -1
- package/dist/icons/generated/shard-13.js.map +1 -1
- package/dist/icons/generated/shard-14.cjs.map +1 -1
- package/dist/icons/generated/shard-14.js.map +1 -1
- package/dist/icons/generated/shard-15.cjs.map +1 -1
- package/dist/icons/generated/shard-15.js.map +1 -1
- package/dist/icons/generated/shard-16.cjs.map +1 -1
- package/dist/icons/generated/shard-16.js.map +1 -1
- package/dist/icons/generated/shard-17.cjs.map +1 -1
- package/dist/icons/generated/shard-17.js.map +1 -1
- package/dist/icons/generated/shard-18.cjs.map +1 -1
- package/dist/icons/generated/shard-18.js.map +1 -1
- package/dist/icons/generated/shard-19.cjs.map +1 -1
- package/dist/icons/generated/shard-19.js.map +1 -1
- package/dist/icons/generated/shard-20.cjs.map +1 -1
- package/dist/icons/generated/shard-20.js.map +1 -1
- package/dist/icons/generated/shard-21.cjs.map +1 -1
- package/dist/icons/generated/shard-21.js.map +1 -1
- package/dist/icons/generated/shard-22.cjs.map +1 -1
- package/dist/icons/generated/shard-22.js.map +1 -1
- package/dist/icons/generated/shard-23.cjs.map +1 -1
- package/dist/icons/generated/shard-23.js.map +1 -1
- package/dist/icons/generated/shard-24.cjs.map +1 -1
- package/dist/icons/generated/shard-24.js.map +1 -1
- package/dist/icons/generated/shard-25.cjs.map +1 -1
- package/dist/icons/generated/shard-25.js.map +1 -1
- package/dist/icons/generated/shard-26.cjs.map +1 -1
- package/dist/icons/generated/shard-26.js.map +1 -1
- package/dist/icons/generated/shard-27.cjs.map +1 -1
- package/dist/icons/generated/shard-27.js.map +1 -1
- package/dist/icons/generated/shard-28.cjs.map +1 -1
- package/dist/icons/generated/shard-28.js.map +1 -1
- package/dist/icons/generated/shard-29.cjs.map +1 -1
- package/dist/icons/generated/shard-29.js.map +1 -1
- package/dist/icons/generated/shard-30.cjs.map +1 -1
- package/dist/icons/generated/shard-30.js.map +1 -1
- package/dist/icons/generated/shard-31.cjs.map +1 -1
- package/dist/icons/generated/shard-31.js.map +1 -1
- package/dist/icons/generated/shard-32.cjs.map +1 -1
- package/dist/icons/generated/shard-32.js.map +1 -1
- package/dist/icons/generated/shard-33.cjs.map +1 -1
- package/dist/icons/generated/shard-33.js.map +1 -1
- package/dist/icons/generated/shard-34.cjs.map +1 -1
- package/dist/icons/generated/shard-34.js.map +1 -1
- package/dist/icons/generated/shard-35.cjs.map +1 -1
- package/dist/icons/generated/shard-35.js.map +1 -1
- package/dist/icons/generated/shard-36.cjs.map +1 -1
- package/dist/icons/generated/shard-36.js.map +1 -1
- package/dist/icons/generated/shard-37.cjs.map +1 -1
- package/dist/icons/generated/shard-37.js.map +1 -1
- package/dist/icons/generated/shard-38.cjs.map +1 -1
- package/dist/icons/generated/shard-38.js.map +1 -1
- package/dist/icons/generated/shard-39.cjs.map +1 -1
- package/dist/icons/generated/shard-39.js.map +1 -1
- package/dist/icons/generated/shard-40.cjs.map +1 -1
- package/dist/icons/generated/shard-40.js.map +1 -1
- package/dist/icons/generated/shard-41.cjs.map +1 -1
- package/dist/icons/generated/shard-41.js.map +1 -1
- package/dist/icons/generated/shard-42.cjs.map +1 -1
- package/dist/icons/generated/shard-42.js.map +1 -1
- package/dist/icons/generated/shard-43.cjs.map +1 -1
- package/dist/icons/generated/shard-43.js.map +1 -1
- package/dist/icons/generated/shard-44.cjs.map +1 -1
- package/dist/icons/generated/shard-44.js.map +1 -1
- package/dist/icons/generated/shard-45.cjs.map +1 -1
- package/dist/icons/generated/shard-45.js.map +1 -1
- package/dist/icons/icon-context.cjs.map +1 -1
- package/dist/icons/icon-context.js.map +1 -1
- package/dist/icons/is-icon-name.cjs.map +1 -1
- package/dist/icons/is-icon-name.js.map +1 -1
- package/dist/icons/material-symbols.cjs.map +1 -1
- package/dist/icons/material-symbols.js.map +1 -1
- package/dist/icons/normalize-icon-name.cjs.map +1 -1
- package/dist/icons/normalize-icon-name.js.map +1 -1
- package/dist/icons/shard-cache.cjs +1 -1
- package/dist/icons/shard-cache.cjs.map +1 -1
- package/dist/icons/shard-cache.js +2 -5
- package/dist/icons/shard-cache.js.map +1 -1
- package/dist/icons/use-icon.cjs.map +1 -1
- package/dist/icons/use-icon.js.map +1 -1
- package/dist/icons/validate-icon-name.cjs.map +1 -1
- package/dist/icons/validate-icon-name.js.map +1 -1
- package/dist/icons-virtual.cjs.map +1 -1
- package/dist/icons-virtual.js.map +1 -1
- package/dist/imaging/canvas.cjs.map +1 -1
- package/dist/imaging/canvas.js.map +1 -1
- package/dist/imaging/compress.cjs.map +1 -1
- package/dist/imaging/compress.js.map +1 -1
- package/dist/imaging/decode.cjs.map +1 -1
- package/dist/imaging/decode.js.map +1 -1
- package/dist/imaging/encode.cjs.map +1 -1
- package/dist/imaging/encode.js.map +1 -1
- package/dist/imaging/exceptions.cjs.map +1 -1
- package/dist/imaging/exceptions.js.map +1 -1
- package/dist/imaging/frame.cjs.map +1 -1
- package/dist/imaging/frame.js.map +1 -1
- package/dist/imaging/thumbnails.cjs.map +1 -1
- package/dist/imaging/thumbnails.js.map +1 -1
- package/dist/imaging/transform.cjs.map +1 -1
- package/dist/imaging/transform.js.map +1 -1
- package/dist/imaging/use-image-processing.cjs.map +1 -1
- package/dist/imaging/use-image-processing.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/neural.cjs.map +1 -1
- package/dist/neural.js.map +1 -1
- package/dist/oauth/GoogleSignIn.cjs +1 -1
- package/dist/oauth/GoogleSignIn.cjs.map +1 -1
- package/dist/oauth/GoogleSignIn.js +6 -9
- package/dist/oauth/GoogleSignIn.js.map +1 -1
- package/dist/oauth/callback.cjs.map +1 -1
- package/dist/oauth/callback.js.map +1 -1
- package/dist/oauth/use-oauth-callback.cjs.map +1 -1
- package/dist/oauth/use-oauth-callback.js.map +1 -1
- package/dist/offline/conflict.cjs.map +1 -1
- package/dist/offline/conflict.js.map +1 -1
- package/dist/offline/create-offline-database.cjs.map +1 -1
- package/dist/offline/create-offline-database.js.map +1 -1
- package/dist/offline/create-offline-store.cjs +1 -1
- package/dist/offline/create-offline-store.cjs.map +1 -1
- package/dist/offline/create-offline-store.js +1 -5
- package/dist/offline/create-offline-store.js.map +1 -1
- package/dist/offline/create-offline-sync.cjs +1 -1
- package/dist/offline/create-offline-sync.cjs.map +1 -1
- package/dist/offline/create-offline-sync.js +9 -14
- package/dist/offline/create-offline-sync.js.map +1 -1
- package/dist/offline/use-offline-sync.cjs.map +1 -1
- package/dist/offline/use-offline-sync.js.map +1 -1
- package/dist/perf/cache-size.cjs.map +1 -1
- package/dist/perf/cache-size.js.map +1 -1
- package/dist/perf/device.cjs.map +1 -1
- package/dist/perf/device.js.map +1 -1
- package/dist/perf/format.cjs.map +1 -1
- package/dist/perf/format.js.map +1 -1
- package/dist/perf/profiler.cjs.map +1 -1
- package/dist/perf/profiler.js.map +1 -1
- package/dist/push/use-push-subscription.cjs.map +1 -1
- package/dist/push/use-push-subscription.js.map +1 -1
- package/dist/push/utils.cjs.map +1 -1
- package/dist/push/utils.js.map +1 -1
- package/dist/push/web-push-client.cjs.map +1 -1
- package/dist/push/web-push-client.js.map +1 -1
- package/dist/query/QueryProvider.cjs.map +1 -1
- package/dist/query/QueryProvider.js.map +1 -1
- package/dist/query/constants.cjs.map +1 -1
- package/dist/query/constants.js.map +1 -1
- package/dist/query/create-query-keys.cjs.map +1 -1
- package/dist/query/create-query-keys.js.map +1 -1
- package/dist/query/foreign-client-warning.cjs.map +1 -1
- package/dist/query/foreign-client-warning.js.map +1 -1
- package/dist/query/offline-persistence.cjs +1 -1
- package/dist/query/offline-persistence.cjs.map +1 -1
- package/dist/query/offline-persistence.js +2 -10
- package/dist/query/offline-persistence.js.map +1 -1
- package/dist/query/optimistic.cjs.map +1 -1
- package/dist/query/optimistic.js.map +1 -1
- package/dist/query/pagination.cjs.map +1 -1
- package/dist/query/pagination.js.map +1 -1
- package/dist/query/retry-policy.cjs.map +1 -1
- package/dist/query/retry-policy.js.map +1 -1
- package/dist/query/use-cursor-query.cjs.map +1 -1
- package/dist/query/use-cursor-query.js.map +1 -1
- package/dist/query/use-offline-mutation.cjs.map +1 -1
- package/dist/query/use-offline-mutation.js.map +1 -1
- package/dist/query/use-paginated-query.cjs.map +1 -1
- package/dist/query/use-paginated-query.js.map +1 -1
- package/dist/router/AppRouter.cjs.map +1 -1
- package/dist/router/AppRouter.js.map +1 -1
- package/dist/router/RouteGuard.cjs.map +1 -1
- package/dist/router/RouteGuard.js.map +1 -1
- package/dist/router/index.js +2 -2
- package/dist/share/share-or-download.cjs.map +1 -1
- package/dist/share/share-or-download.js.map +1 -1
- package/dist/share/share.cjs.map +1 -1
- package/dist/share/share.js.map +1 -1
- package/dist/sse/create-event-stream.cjs.map +1 -1
- package/dist/sse/create-event-stream.js.map +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js.map +1 -1
- package/dist/store/create-selectors.cjs.map +1 -1
- package/dist/store/create-selectors.js.map +1 -1
- package/dist/store/create-store.cjs.map +1 -1
- package/dist/store/create-store.js.map +1 -1
- package/dist/sw/background-sync.cjs.map +1 -1
- package/dist/sw/background-sync.js.map +1 -1
- package/dist/sw/cache-inspect.cjs.map +1 -1
- package/dist/sw/cache-inspect.js.map +1 -1
- package/dist/sw/cache.cjs +1 -1
- package/dist/sw/cache.cjs.map +1 -1
- package/dist/sw/cache.js +2 -6
- package/dist/sw/cache.js.map +1 -1
- package/dist/sw/create-push-handler.cjs.map +1 -1
- package/dist/sw/create-push-handler.js.map +1 -1
- package/dist/sw/credential-headers.cjs.map +1 -1
- package/dist/sw/credential-headers.js.map +1 -1
- package/dist/sw/periodic-sync.cjs.map +1 -1
- package/dist/sw/periodic-sync.js.map +1 -1
- package/dist/sw/register-service-worker.cjs.map +1 -1
- package/dist/sw/register-service-worker.js.map +1 -1
- package/dist/sw/session-data.cjs.map +1 -1
- package/dist/sw/session-data.js.map +1 -1
- package/dist/tabular/assets.cjs.map +1 -1
- package/dist/tabular/assets.js.map +1 -1
- package/dist/tabular/cache.cjs.map +1 -1
- package/dist/tabular/cache.js.map +1 -1
- package/dist/tabular/compact.cjs.map +1 -1
- package/dist/tabular/compact.js.map +1 -1
- package/dist/tabular/exceptions.cjs.map +1 -1
- package/dist/tabular/exceptions.js.map +1 -1
- package/dist/tabular/manifest.cjs.map +1 -1
- package/dist/tabular/manifest.js.map +1 -1
- package/dist/tabular/predictor.cjs.map +1 -1
- package/dist/tabular/predictor.js.map +1 -1
- package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
- package/dist/tabular/use-tabular-predictor.js.map +1 -1
- package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
- package/dist/telemetry/TelemetryProvider.js.map +1 -1
- package/dist/telemetry/app-error-adapter.cjs.map +1 -1
- package/dist/telemetry/app-error-adapter.js.map +1 -1
- package/dist/telemetry/app-error-queue.cjs.map +1 -1
- package/dist/telemetry/app-error-queue.js.map +1 -1
- package/dist/telemetry/app-error-reporter.cjs.map +1 -1
- package/dist/telemetry/app-error-reporter.js.map +1 -1
- package/dist/telemetry/app-error-schema.cjs.map +1 -1
- package/dist/telemetry/app-error-schema.js.map +1 -1
- package/dist/telemetry/app-error-transport.cjs.map +1 -1
- package/dist/telemetry/app-error-transport.js.map +1 -1
- package/dist/telemetry/console-adapter.cjs.map +1 -1
- package/dist/telemetry/console-adapter.js.map +1 -1
- package/dist/telemetry/describe-app-error.cjs.map +1 -1
- package/dist/telemetry/describe-app-error.js.map +1 -1
- package/dist/telemetry/posthog-adapter.cjs +1 -1
- package/dist/telemetry/posthog-adapter.cjs.map +1 -1
- package/dist/telemetry/posthog-adapter.js +1 -5
- package/dist/telemetry/posthog-adapter.js.map +1 -1
- package/dist/telemetry/sentry-adapter.cjs.map +1 -1
- package/dist/telemetry/sentry-adapter.js.map +1 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +234 -3
- package/dist/tempest-react-sdk.js +85 -85
- package/dist/testing/create-mock-handlers.cjs.map +1 -1
- package/dist/testing/create-mock-handlers.js.map +1 -1
- package/dist/testing.js +1 -2
- package/dist/theme/ThemeProvider.cjs.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/apply-theme.cjs.map +1 -1
- package/dist/theme/apply-theme.js.map +1 -1
- package/dist/theme/color.cjs.map +1 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/create-theme.cjs.map +1 -1
- package/dist/theme/create-theme.js.map +1 -1
- package/dist/theme/data-viz-ramps.cjs.map +1 -1
- package/dist/theme/data-viz-ramps.js.map +1 -1
- package/dist/theme/initial-theme.cjs.map +1 -1
- package/dist/theme/initial-theme.js.map +1 -1
- package/dist/theme/inverse-render.cjs.map +1 -1
- package/dist/theme/inverse-render.js.map +1 -1
- package/dist/theme/inverse-restore.cjs.map +1 -1
- package/dist/theme/inverse-restore.js.map +1 -1
- package/dist/theme/inverse-surface.cjs.map +1 -1
- package/dist/theme/inverse-surface.js.map +1 -1
- package/dist/theme/status-tokens.cjs.map +1 -1
- package/dist/theme/status-tokens.js.map +1 -1
- package/dist/theme/theme-presets.cjs.map +1 -1
- package/dist/theme/theme-presets.js.map +1 -1
- package/dist/utils/absent.cjs.map +1 -1
- package/dist/utils/absent.js.map +1 -1
- package/dist/utils/arrays.cjs.map +1 -1
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/base64.cjs.map +1 -1
- package/dist/utils/base64.js.map +1 -1
- package/dist/utils/cn.cjs.map +1 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/compare-values.cjs.map +1 -1
- package/dist/utils/compare-values.js.map +1 -1
- package/dist/utils/compressed-storage.cjs.map +1 -1
- package/dist/utils/compressed-storage.js.map +1 -1
- package/dist/utils/csv.cjs.map +1 -1
- package/dist/utils/csv.js.map +1 -1
- package/dist/utils/dev-mode.cjs.map +1 -1
- package/dist/utils/dev-mode.js.map +1 -1
- package/dist/utils/duplicate-instance.cjs.map +1 -1
- package/dist/utils/duplicate-instance.js.map +1 -1
- package/dist/utils/format.cjs.map +1 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/functions.cjs +1 -1
- package/dist/utils/functions.cjs.map +1 -1
- package/dist/utils/functions.js +1 -1
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/guards.cjs.map +1 -1
- package/dist/utils/guards.js.map +1 -1
- package/dist/utils/ids.cjs.map +1 -1
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/intl-cache.cjs.map +1 -1
- package/dist/utils/intl-cache.js.map +1 -1
- package/dist/utils/json-frame.cjs.map +1 -1
- package/dist/utils/json-frame.js.map +1 -1
- package/dist/utils/numbers.cjs.map +1 -1
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/objects.cjs.map +1 -1
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/owner-fingerprint.cjs.map +1 -1
- package/dist/utils/owner-fingerprint.js.map +1 -1
- package/dist/utils/promises.cjs.map +1 -1
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/relative-time.cjs.map +1 -1
- package/dist/utils/relative-time.js.map +1 -1
- package/dist/utils/safe-url.cjs.map +1 -1
- package/dist/utils/safe-url.js.map +1 -1
- package/dist/utils/schema-like.cjs.map +1 -1
- package/dist/utils/schema-like.js.map +1 -1
- package/dist/utils/storage.cjs +1 -1
- package/dist/utils/storage.cjs.map +1 -1
- package/dist/utils/storage.js +2 -2
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/strings.cjs.map +1 -1
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/xlsx.cjs.map +1 -1
- package/dist/utils/xlsx.js.map +1 -1
- package/dist/vision/core/canvas.cjs.map +1 -1
- package/dist/vision/core/canvas.js.map +1 -1
- package/dist/vision/core/dtypes.cjs.map +1 -1
- package/dist/vision/core/dtypes.js.map +1 -1
- package/dist/vision/core/exceptions.cjs.map +1 -1
- package/dist/vision/core/exceptions.js.map +1 -1
- package/dist/vision/core/graph.cjs.map +1 -1
- package/dist/vision/core/graph.js.map +1 -1
- package/dist/vision/core/metadata.cjs +1 -1
- package/dist/vision/core/metadata.cjs.map +1 -1
- package/dist/vision/core/metadata.js +9 -26
- package/dist/vision/core/metadata.js.map +1 -1
- package/dist/vision/core/providers.cjs.map +1 -1
- package/dist/vision/core/providers.js.map +1 -1
- package/dist/vision/core/session.cjs.map +1 -1
- package/dist/vision/core/session.js.map +1 -1
- package/dist/vision/core/timing.cjs.map +1 -1
- package/dist/vision/core/timing.js.map +1 -1
- package/dist/vision/fusion.cjs.map +1 -1
- package/dist/vision/fusion.js.map +1 -1
- package/dist/vision/index.cjs.map +1 -1
- package/dist/vision/index.js.map +1 -1
- package/dist/vision/io/image.cjs.map +1 -1
- package/dist/vision/io/image.js.map +1 -1
- package/dist/vision/labels.cjs.map +1 -1
- package/dist/vision/labels.js.map +1 -1
- package/dist/vision/luminance.cjs.map +1 -1
- package/dist/vision/luminance.js.map +1 -1
- package/dist/vision/normalization.cjs.map +1 -1
- package/dist/vision/normalization.js.map +1 -1
- package/dist/vision/postprocess/classification.cjs.map +1 -1
- package/dist/vision/postprocess/classification.js.map +1 -1
- package/dist/vision/postprocess/detection.cjs.map +1 -1
- package/dist/vision/postprocess/detection.js.map +1 -1
- package/dist/vision/postprocess/segmentation.cjs.map +1 -1
- package/dist/vision/postprocess/segmentation.js.map +1 -1
- package/dist/vision/preprocess/image.cjs.map +1 -1
- package/dist/vision/preprocess/image.js.map +1 -1
- package/dist/vision/preprocess/pipeline.cjs.map +1 -1
- package/dist/vision/preprocess/pipeline.js.map +1 -1
- package/dist/vision/results.cjs.map +1 -1
- package/dist/vision/results.js.map +1 -1
- package/dist/vision/tasks/base.cjs.map +1 -1
- package/dist/vision/tasks/base.js.map +1 -1
- package/dist/vision/tasks/classifier.cjs.map +1 -1
- package/dist/vision/tasks/classifier.js.map +1 -1
- package/dist/vision/tasks/detectClassify.cjs.map +1 -1
- package/dist/vision/tasks/detectClassify.js.map +1 -1
- package/dist/vision/tasks/detector.cjs.map +1 -1
- package/dist/vision/tasks/detector.js.map +1 -1
- package/dist/vision/tasks/segmenter.cjs.map +1 -1
- package/dist/vision/tasks/segmenter.js.map +1 -1
- package/dist/vision/types.cjs.map +1 -1
- package/dist/vision/types.js.map +1 -1
- package/dist/vision/use-camera-stream.cjs +1 -1
- package/dist/vision/use-camera-stream.cjs.map +1 -1
- package/dist/vision/use-camera-stream.js +3 -9
- package/dist/vision/use-camera-stream.js.map +1 -1
- package/dist/vision/use-live-luminance.cjs +1 -1
- package/dist/vision/use-live-luminance.cjs.map +1 -1
- package/dist/vision/use-live-luminance.js +1 -5
- package/dist/vision/use-live-luminance.js.map +1 -1
- package/dist/vite/base-url.cjs.map +1 -1
- package/dist/vite/base-url.js.map +1 -1
- package/dist/vite/create-vite-config.cjs.map +1 -1
- package/dist/vite/create-vite-config.js.map +1 -1
- package/dist/vite/narrow-tokens.cjs.map +1 -1
- package/dist/vite/narrow-tokens.js.map +1 -1
- package/dist/vite/tempest-csp.cjs +1 -1
- package/dist/vite/tempest-csp.cjs.map +1 -1
- package/dist/vite/tempest-csp.js +2 -10
- package/dist/vite/tempest-csp.js.map +1 -1
- package/dist/vite/tempest-icons.cjs.map +1 -1
- package/dist/vite/tempest-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.js +9 -16
- package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
- package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
- package/dist/vite/tempest-pwa-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
- package/dist/vite/tempest-pwa-manifest.js.map +1 -1
- package/dist/vite/tempest-styles.cjs.map +1 -1
- package/dist/vite/tempest-styles.js.map +1 -1
- package/dist/vite/tempest-vitest.cjs.map +1 -1
- package/dist/vite/tempest-vitest.js.map +1 -1
- package/dist/webrtc/link-stats.cjs.map +1 -1
- package/dist/webrtc/link-stats.js.map +1 -1
- package/dist/webrtc/mesh-quality.cjs.map +1 -1
- package/dist/webrtc/mesh-quality.js.map +1 -1
- package/dist/webrtc/opus-sdp.cjs.map +1 -1
- package/dist/webrtc/opus-sdp.js.map +1 -1
- package/dist/webrtc/peer-link.cjs +1 -1
- package/dist/webrtc/peer-link.cjs.map +1 -1
- package/dist/webrtc/peer-link.js +2 -5
- package/dist/webrtc/peer-link.js.map +1 -1
- package/dist/webrtc/peer-mesh.cjs +1 -1
- package/dist/webrtc/peer-mesh.cjs.map +1 -1
- package/dist/webrtc/peer-mesh.js +8 -24
- package/dist/webrtc/peer-mesh.js.map +1 -1
- package/dist/webrtc/sender-bitrate.cjs.map +1 -1
- package/dist/webrtc/sender-bitrate.js.map +1 -1
- package/dist/webrtc/use-link-stats.cjs.map +1 -1
- package/dist/webrtc/use-link-stats.js.map +1 -1
- 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 +4 -22
- package/dist/ws/create-web-socket.js.map +1 -1
- package/dist/ws/resilience.cjs.map +1 -1
- package/dist/ws/resilience.js.map +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +9 -6
- package/template/package.json +1 -1
|
@@ -285,88 +285,88 @@ import { TempestDataProvider as Po, useDataProvider as Fo } from "./data/data-pr
|
|
|
285
285
|
import { listQueryKey as Io, oneQueryKey as Lo, useCreate as Ro, useDelete as zo, useList as Bo, useOne as Vo, useUpdate as Ho } from "./data/use-resource.js";
|
|
286
286
|
import { RouteGuard as Uo } from "./router/RouteGuard.js";
|
|
287
287
|
import { AppRouter as Wo, defineRoutes as Go } from "./router/AppRouter.js";
|
|
288
|
-
import {
|
|
289
|
-
import { createStore as
|
|
290
|
-
import { createSelectors as
|
|
291
|
-
import { ThemeProvider as
|
|
292
|
-
import { ErrorBoundary as
|
|
293
|
-
import { AppProviders as
|
|
294
|
-
import { createEventStream as
|
|
295
|
-
import { useEventStream as
|
|
296
|
-
import { isPushSupported as
|
|
297
|
-
import { WebPushClient as
|
|
298
|
-
import { usePushSubscription as
|
|
299
|
-
import { installNotificationClickHandler as
|
|
300
|
-
import { DEFAULT_CREDENTIAL_HEADERS as
|
|
301
|
-
import { createPartialResponse as
|
|
302
|
-
import { BACKGROUND_SYNC_CREDENTIALS_MESSAGE as
|
|
303
|
-
import { registerPeriodicSync as
|
|
304
|
-
import { clearCaches as
|
|
305
|
-
import { clearSessionData as
|
|
306
|
-
import { createAudioPlayer as
|
|
307
|
-
import { useAudio as
|
|
308
|
-
import { createSfxPool as
|
|
309
|
-
import { useSfxPool as
|
|
310
|
-
import { DEFAULT_MAX_GAIN as
|
|
311
|
-
import { useAudioBus as
|
|
312
|
-
import { DEFAULT_VOICE_CHAIN as
|
|
313
|
-
import { measureNoiseFloor as
|
|
314
|
-
import { monitorVoiceActivity as
|
|
315
|
-
import { createVideoRecorder as
|
|
316
|
-
import { useVideoRecorder as
|
|
317
|
-
import { isScreenCaptureSupported as
|
|
318
|
-
import { isSpeechRecognitionSupported as
|
|
319
|
-
import { createOfflineDatabase as
|
|
320
|
-
import { createOfflineSync as
|
|
321
|
-
import { higherVersionWins as
|
|
322
|
-
import { useErrorHandler as
|
|
323
|
-
import { FormField as
|
|
324
|
-
import { validateForm as
|
|
325
|
-
import { zodResolver as
|
|
326
|
-
import { useZodForm as
|
|
327
|
-
import { formatCEP as
|
|
328
|
-
import { CEPInput as
|
|
329
|
-
import { useViaCEP as
|
|
330
|
-
import { Controller as
|
|
331
|
-
import { HEARTBEAT_CLOSE_CODE as
|
|
332
|
-
import { createWebSocket as
|
|
333
|
-
import { useWebSocket as
|
|
334
|
-
import { setTunedLocalDescription as
|
|
335
|
-
import { setSenderBitrate as
|
|
336
|
-
import { createLinkStatsSampler as
|
|
337
|
-
import { useLinkStats as
|
|
338
|
-
import { resolveDegradation as
|
|
339
|
-
import { createPeerMesh as
|
|
340
|
-
import { clampLatitude as
|
|
341
|
-
import { EARTH_RADIUS_KM as
|
|
342
|
-
import { DEFAULT_CAR_SPEED_KMH as
|
|
343
|
-
import { boundingBox as
|
|
344
|
-
import { fitProjection as
|
|
345
|
-
import { createOSRMBackend as
|
|
346
|
-
import { createPositionTracker as
|
|
347
|
-
import { usePositionTracker as
|
|
348
|
-
import { TrajectoryMap as
|
|
349
|
-
import { applyTheme as
|
|
350
|
-
import { contrastRatio as
|
|
351
|
-
import { createTheme as
|
|
352
|
-
import { createInverseSurface as
|
|
353
|
-
import { getThemePreset as
|
|
354
|
-
import { getInitialTheme as
|
|
355
|
-
import { consoleSink as
|
|
356
|
-
import { TelemetryProvider as
|
|
357
|
-
import { consoleTelemetryAdapter as
|
|
358
|
-
import { createSentryTelemetryAdapter as
|
|
359
|
-
import { createPostHogTelemetryAdapter as
|
|
360
|
-
import { describeAppError as
|
|
361
|
-
import { createAppErrorReporter as
|
|
362
|
-
import { createAppErrorTelemetryAdapter as
|
|
363
|
-
import { FeatureFlagsProvider as
|
|
364
|
-
import { createInMemoryFlags as
|
|
365
|
-
import { createGrowthBookFeatureFlagsAdapter as
|
|
366
|
-
import { createLaunchDarklyFeatureFlagsAdapter as
|
|
367
|
-
import { DIVERGING_STEP_COUNT as
|
|
368
|
-
import { cachedResponseBytes as
|
|
369
|
-
import { readDeviceProfile as
|
|
370
|
-
import { formatDurationMs as
|
|
371
|
-
import { createInferenceProfiler as
|
|
372
|
-
export { Qt as ABSENT_TEXT, ri as AIChat, Zr as AIChatComposer, ni as AIChatTurn, Fr as ALL_BARCODE_FORMATS, Vt as ALL_OPTION_VALUE, ba as API_ERROR_OFFLINE_KEY, xa as API_ERROR_VALIDATION_KEY, wr as AUDIO_MIME_CANDIDATES, io as AccessControlProvider, t as Accordion, n as Alert, i as AppBar, ps as AppProviders, Wo as AppRouter, s as AppShell, c as AspectRatio, Sr as AudioPlayer, Pr as AudioRecorder, Ba as AuthGuard, l as Avatar, u as AvatarGroup, As as BACKGROUND_SYNC_CREDENTIALS_MESSAGE, a as BREAKPOINTS, d as Badge, f as Banner, ci as BarList, Ur as BarcodeScanner, p as BottomNavigation, h as BottomSheet, g as Breadcrumbs, Ko as BrowserRouter, _ as Button, v as ButtonSlot, go as CACHE_TIME, Sc as CEPInput, Cc as CNPJInput, wc as CPFInput, $n as Calendar, so as Can, y as Card, ar as Carousel, b as Center, yr as Chat, _r as ChatBubble, vr as ChatComposer, x as Checkbox, S as ChipInput, In as ClickOutside, An as CodeBlock, qn as Collapsible, w as Combobox, Xn as Command, Ln as ConditionalWrapper, E as ConfirmDialog, B as Container, Jn as ContextMenu, Oc as Controller, kn as CopyButton, Sa as DEFAULT_API_ERROR_STRINGS, Ir as DEFAULT_BARCODE_FORMATS, sl as DEFAULT_CAR_SPEED_KMH, Na as DEFAULT_CHUNK_SIZE, cl as DEFAULT_CIRCUITY_FACTOR, Es as DEFAULT_CREDENTIAL_HEADERS, da as DEFAULT_CSRF_COOKIE_NAME, fa as DEFAULT_CSRF_HEADER_NAME, Ws as DEFAULT_MAX_GAIN, ll as DEFAULT_MODE_DURATION_FACTORS, bn as DEFAULT_PLAYBACK_RATES, Ga as DEFAULT_PUB_KEY_CRED_PARAMS, ye as DEFAULT_PUSH_TO_TALK_KEY, qs as DEFAULT_VOICE_CHAIN, tu as DIVERGING_STEP_COUNT, Vn as DataList, or as DataTable, O as DatePicker, nr as DateRangePicker, Hn as DescriptionList, k as Divider, A as Drawer, j as DropdownMenu, M as Dropzone, nl as EARTH_RADIUS_KM, N as EmptyState, fs as ErrorBoundary, P as ErrorState, zn as ErrorText, Yl as FeatureFlagsProvider, F as FileUpload, pi as FilterBar, wi as FilterPanel, cr as FloatingActionButton, Rn as For, I as Form, L as FormActions, pc as FormField, kc as FormProvider, R as FormRow, z as FormSection, uo as GoogleSignIn, V as Grid, Fc as HEARTBEAT_CLOSE_CODE, qo as HashRouter, Ft as Hide, Yn as HoverCard, Ta as I18nProvider, Bn as Image, mn as ImageCropper, D as Input, X as InstallBanner, Z as InstallButton, mt as Kanban, gt as Kbd, Kn as Label, pr as Lightbox, Jo as Link, sr as ListTile, ti as Markdown, ai as Masonry, Yo as MemoryRouter, ir as Menubar, T as Modal, _t as ModalsProvider, Mn as Money, Tc as MoneyInput, tr as MultiSelect, bt as NProgressBar, Xo as NavLink, yt as Navbar, Zo as Navigate, rr as NavigationMenu, lr as NavigationRail, vn as NotificationCenter, po as OAuthCallbackError, nu as ORDINAL_START_STEP, ct as OfflineIndicator, Qo as Outlet, be as PUSH_TO_TALK_KEYS, wt as Page, Tt as Pagination, Ka as PasskeyError, Et as PasswordInput, Ec as PhoneInput, Ot as PinInput, kt as Popover, C as Portal, At as Progress, Tn as QRCapacityError, On as QRCode, xo as QueryProvider, _o as REFETCH_TIME, jt as Radio, Mt as RadioGroup, Nt as RangeSlider, Pt as RatingStars, dr as RefreshIndicator, jn as RelativeTime, Qn as Resizable, Pa as ResumableUploadSupersededError, Fn as Reveal, $o as Route, Uo as RouteGuard, es as Routes, ru as SEQUENTIAL_STEP_COUNT, vo as STALE_TIME, Lt as SafeArea, gn as Scheduler, Zn as ScrollArea, Rt as SearchBar, St as Section, Ct as SectionHeader, zt as SegmentedControl, Bt as Select, ma as SessionSupersededError, It as Show, Kt as Sidebar, mr as SignaturePad, qt as Skeleton, er as Slider, Jt as Spacer, hn as Sparkline, Yt as Spinner, H as Stack, Xt as Stat, Zt as Stepper, rn as StepperInput, an as Switch, ft as SyncStatusBadge, sn as Table, cn as Tabs, on as Tag, Vl as TelemetryProvider, ha as TempestApiError, Po as TempestDataProvider, ln as Textarea, us as ThemeProvider, ur as TimePicker, un as Timeline, fn as ToastProvider, Un as Toggle, Wn as ToggleGroup, Gn as ToggleGroupItem, dn as Tooltip, oi as Tour, bl as TrajectoryMap, ii as Transfer, Nn as TreeView, Pn as TruncateText, pt as UpdatePrompt, xn as VideoPlayer, Sn as VirtualList, wn as VirtualTable, dt as VisuallyHidden, vs as WebPushClient, ys as WebPushPermissionDeniedError, bs as WebPushUnsubscribeError, xs as WebPushUnsupportedError, fr as Wizard, Gt as activeNavKey, Wr as aiChatStrings, Te as announce, Si as applyFilters, ht as applyKanbanMove, xl as applyTheme, Gi as assertNever, qa as base64UrlToBytes, rl as bearingDeg, Mr as blobToWav, dl as boundingBox, fl as boundsCenter, la as buildApiUrl, si as buildBarListRows, U as buildOpenInChromeIntent, Ja as bytesToBase64Url, su as cachedResponseBytes, ji as camelCase, Mi as capitalize, Li as chunk, $t as clamp, Zc as clampLatitude, Ya as classifyPasskeyError, Ee as clearAnnouncer, js as clearBackgroundSyncQueue, Fs as clearCaches, Ls as clearSessionData, e as cn, Cn as compareValues, Di as compressToString, Oi as compressedStorage, ki as compressedStorageCodec, zl as consoleSink, Ul as consoleTelemetryAdapter, Cl as contrastRatio, ya as createApiClient, ql as createAppErrorReporter, Jl as createAppErrorTelemetryAdapter, Gs as createAudioBus, Rs as createAudioPlayer, Tr as createAudioRecorder, za as createAuthStore, Lr as createBarcodeDetector, wl as createColorScale, Mo as createDataProvider, ms as createEventStream, $l as createGrowthBookFeatureFlagsAdapter, wa as createI18n, Ql as createInMemoryFlags, uu as createInferenceProfiler, Pl as createInverseSurface, Ti as createJsonStorage, eu as createLaunchDarklyFeatureFlagsAdapter, Or as createLevelMeter, Hc as createLinkStatsSampler, Fa as createLocalUploadStorage, Bl as createLogger, Cr as createMediaRecorder, _l as createOSRMBackend, cc as createOfflineDatabase, Ao as createOfflineStore, lc as createOfflineSync, Ds as createPartialResponse, Xa as createPasskeyClient, Xc as createPeerMesh, vl as createPositionTracker, Gl as createPostHogTelemetryAdapter, yo as createQueryKeys, Wa as createRefreshQueue, Ia as createResumableUpload, co as createRoleAccessControl, ls as createSelectors, Wl as createSentryTelemetryAdapter, Hs as createSfxPool, cs as createStore, ro as createTempestAuth, Ml as createTheme, ec as createVideoRecorder, Js as createVoiceChain, Lc as createWebSocket, pa as csrfHeaders, Xi as debounce, Va as decodeJWT, Ai as decompressFromString, Vi as deepMerge, Y as defaultInstallHint, Go as defineRoutes, Ca as describeApiError, Kl as describeAppError, li as describeFilter, iu as divergingScale, sa as downloadCsv, So as emptyOffsetPage, No as encodeIdSegment, En as encodeQR, Nr as encodeWav, Dt as estimatePasswordStrength, et as estimateStorage, ul as estimateTravel, mo as exchangeOAuthCallback, pl as expandBounds, ui as filtersFromSearchParams, Ci as filtersToQueryParams, di as filtersToSearchParams, ml as fitProjection, en as formatBytes, _c as formatCEP, vc as formatCNPJ, mi as formatCPF, tn as formatCompactNumber, hi as formatCurrency, gi as formatDate, _i as formatDateForInput, vi as formatDateTime, yi as formatDateTimeForInput, lu as formatDurationMs, bi as formatPercent, xi as formatPhone, Ma as generateIdempotencyKey, Ll as getInitialTheme, Rr as getSupportedBarcodeFormats, Fl as getThemePreset, Ri as groupBy, il as haversineKm, Tl as hexToOklch, El as hexToRgb, Dl as hexToRgbaString, uc as higherVersionWins, Is as inspectCaches, Ms as installBackgroundSync, Cs as installNotificationClickHandler, Os as installPrecache, ws as installPushHandler, ks as installRuntimeCache, Ts as installSkipWaitingListener, W as isAndroid, G as isAndroidWithoutPromptApi, ga as isApiError, br as isAudioOutputSelectionSupported, Er as isAudioRecordingSupported, zr as isBarcodeDetectionSupported, Za as isConditionalMediationAvailable, Qc as isCoordinate, Co as isCursorPage, Ki as isDefined, Hi as isEmpty, _e as isFullscreenSupported, Gr as isGenerating, K as isIOS, Ha as isJWTExpired, Ar as isMediaCaptureSupported, qi as isNumber, wo as isOffsetPage, Qa as isPasskeySupported, Ji as isPlainObject, $a as isPlatformAuthenticatorAvailable, gs as isPushSupported, Ic as isRejectionCloseCode, _a as isRetriableStatus, ic as isScreenCaptureSupported, ia as isShareSupported, oc as isSpeechRecognitionSupported, q as isStandalone, Yi as isString, ua as isTrustedCredentialTarget, $c as isValidLatitude, el as isValidLongitude, tc as isVideoRecordingSupported, Ys as isVoiceChainIdle, Ni as kebabCase, Kr as lastAssistantId, dc as lastWriteWins, Ua as lazyWithRetry, Io as listQueryKey, Dn as matrixToPath, Zs as measureNoiseFloor, Zi as memoizeOne, $s as monitorVoiceActivity, Xs as monitorVoiceChain, rt as moveItem, Br as normalizeBarcode, tl as normalizeLongitude, xt as nprogress, Ol as oklchToHex, Ui as omit, Qi as once, Lo as oneQueryKey, fi as operatorsFor, Aa as parseResponse, al as pathLengthKm, nn as percentOf, lo as permissionsFromToken, jo as persistQueryClientOffline, Wi as pick, Dr as pickAudioMimeType, nc as pickVideoMimeType, zs as playAudio, Pi as pluralize, hl as projectMercator, Ns as provideBackgroundSyncCredentials, xe as pushToTalkKeyLabel, na as randomId, zi as range, Uc as readAvailableOutgoingKbps, cu as readDeviceProfile, ho as readOAuthCallbackParams, Wc as readQualityLimitation, Gc as readRelayed, Kc as readRoundTripMs, Sl as readThemeToken, kl as readableForeground, hr as receiptLabel, ts as redirect, Ps as registerPeriodicSync, Xe as registerServiceWorker, Al as relativeLuminance, _n as relativeTime, Oo as removeById, tt as requestPersistentStorage, Jc as resolveDegradation, gr as resolveReceiptState, va as retry, jl as rgbToHex, qr as roleLabel, Qr as safeAttachmentUrl, $r as safeImageUrl, ei as safeLinkUrl, Yc as scaleForRoom, au as scaleSteps, ou as sequentialScale, xr as setAudioOutput, r as setDevBuild, Vc as setSenderBitrate, zc as setTunedLocalDescription, aa as share, oa as shareOrDownloadBlob, bo as shouldRetryQuery, Ze as skipWaiting, ea as sleep, Fi as slugify, Bs as stopAudio, Ei as storage, Qs as suggestGateThreshold, Jr as tailSignature, Nl as themeContrast, Rl as themeInitScript, Il as themePresets, $i as throttle, ca as toCsv, Ht as toOptions, ol as toRadians, Ii as truncate, Bc as tuneOpus, Yr as turnTime, Bi as uniqueBy, yc as unmask, gl as unprojectMercator, Qe as unregisterAllServiceWorkers, La as uploadFingerprint, ja as uploadWithProgress, ko as upsertById, _s as urlBase64ToUint8Array, ao as useAccessControl, De as useAnnounce, ce as useAsync, Vs as useAudio, Ks as useAudioBus, kr as useAudioRecorder, Hr as useBarcodeScanner, he as useBeforeInstallPrompt, o as useBreakpoint, oo as useCan, Ke as useClickOutside, ee as useClientFilter, pe as useClipboard, ze as useCountdown, Re as useCounter, Ro as useCreate, Eo as useCursorQuery, Fo as useDataProvider, Q as useDebounce, te as useDeepMemo, zo as useDelete, ka as useDescribeApiError, Ie as useDisclosure, Ve as useDocumentTitle, ue as useDocumentVisibility, re as useDraftFilters, fc as useErrorHandler, ae as useEventListener, hs as useEventStream, He as useFavicon, Xl as useFeatureFlag, Ac as useFieldArray, Zl as useFlagValue, m as useFocusTrap, jc as useForm, Mc as useFormContext, Nc as useFormState, ve as useFullscreen, Ce as useGeolocation, Pe as useHover, Ea as useI18n, ge as useIdle, J as useInstallPrompt, de as useIntersectionObserver, Ae as useInterval, qe as useIsFirstRender, me as useKeyboardShortcut, ne as useLatestRef, qc as useLinkStats, Bo as useList, Le as useListState, oe as useLocalStorage, ns as useLocation, Fe as useLongPress, Ye as useLongPressHandlers, Ue as useMap, rs as useMatch, st as useMediaDevices, ot as useMediaPermission, ie as useMediaQuery, jr as useMicrophone, vt as useModals, is as useNavigate, yn as useNotificationInbox, fo as useOAuthCallback, Je as useObjectUrl, Do as useOfflineMutation, lt as useOfflineSync, Vo as useOne, le as useOnline, Da as useOptionalI18n, To as usePaginatedQuery, $ as usePagination, as as useParams, eo as usePasskeyCapabilities, to as usePasskeyRegistration, no as usePasskeySignIn, Ra as usePoll, yl as usePositionTracker, ke as usePrevious, Ss as usePushSubscription, Se as usePushToTalk, Ge as useQueue, fe as useResizeObserver, os as useRouteError, ac as useScreenCapture, we as useScrollLock, at as useScrollOverflow, ss as useSearchParams, $e as useServiceWorkerUpdate, We as useSet, Us as useSfxPool, it as useSortable, sc as useSpeechRecognition, Oe as useStableCallback, nt as useStorageEstimate, ut as useSyncStatus, Hl as useTelemetry, ds as useTheme, Me as useThrottle, je as useTimeout, pn as useToast, se as useToggle, Vr as useTorch, Oa as useTranslate, Be as useTypewriter, Ho as useUpdate, Dc as useViaCEP, rc as useVideoRecorder, Pc as useWatch, Rc as useWebSocket, Ne as useWindowSize, gc as useZodForm, bc as validateCNPJ, xc as validateCPF, mc as validateForm, Xr as visibleTurns, Ut as withAllOption, Wt as withEmptyOption, ta as withTimeout, ra as writeXlsx, hc as zodResolver };
|
|
288
|
+
import { Await as Ko, BrowserRouter as qo, HashRouter as Jo, IDLE_BLOCKER as Yo, IDLE_FETCHER as Xo, IDLE_NAVIGATION as Zo, Link as Qo, MemoryRouter as $o, NavLink as es, Navigate as ts, NavigationType as ns, Outlet as rs, Route as is, Router as as, RouterForm as os, RouterProvider as ss, Routes as cs, ScrollRestoration as ls, createBrowserRouter as us, createHashRouter as ds, createMemoryRouter as fs, createPath as ps, createRoutesFromChildren as ms, createRoutesFromElements as hs, createSearchParams as gs, data as _s, generatePath as vs, isRouteErrorResponse as ys, matchPath as bs, matchRoutes as xs, parsePath as Ss, redirect as Cs, redirectDocument as ws, renderMatches as Ts, replace as Es, resolvePath as Ds, useActionData as Os, useAsyncError as ks, useAsyncValue as As, useBeforeUnload as js, useBlocker as Ms, useFetcher as Ns, useFetchers as Ps, useFormAction as Fs, useHref as Is, useInRouterContext as Ls, useLinkClickHandler as Rs, useLoaderData as zs, useLocation as Bs, useMatch as Vs, useMatches as Hs, useNavigate as Us, useNavigation as Ws, useNavigationType as Gs, useOutlet as Ks, useOutletContext as qs, useParams as Js, useResolvedPath as Ys, useRevalidator as Xs, useRouteError as Zs, useRouteLoaderData as Qs, useRoutes as $s, useSearchParams as ec, useSubmit as tc, useViewTransitionState as nc } from "./router/index.js";
|
|
289
|
+
import { createStore as rc } from "./store/create-store.js";
|
|
290
|
+
import { createSelectors as ic } from "./store/create-selectors.js";
|
|
291
|
+
import { ThemeProvider as ac, useTheme as oc } from "./theme/ThemeProvider.js";
|
|
292
|
+
import { ErrorBoundary as sc } from "./error-boundary/ErrorBoundary.js";
|
|
293
|
+
import { AppProviders as cc } from "./app/AppProviders.js";
|
|
294
|
+
import { createEventStream as lc } from "./sse/create-event-stream.js";
|
|
295
|
+
import { useEventStream as uc } from "./sse/use-event-stream.js";
|
|
296
|
+
import { isPushSupported as dc, urlBase64ToUint8Array as fc } from "./push/utils.js";
|
|
297
|
+
import { WebPushClient as pc, WebPushPermissionDeniedError as mc, WebPushUnsubscribeError as hc, WebPushUnsupportedError as gc } from "./push/web-push-client.js";
|
|
298
|
+
import { usePushSubscription as _c } from "./push/use-push-subscription.js";
|
|
299
|
+
import { installNotificationClickHandler as vc, installPushHandler as yc, installSkipWaitingListener as bc } from "./sw/create-push-handler.js";
|
|
300
|
+
import { DEFAULT_CREDENTIAL_HEADERS as xc } from "./sw/credential-headers.js";
|
|
301
|
+
import { createPartialResponse as Sc, installPrecache as Cc, installRuntimeCache as wc } from "./sw/cache.js";
|
|
302
|
+
import { BACKGROUND_SYNC_CREDENTIALS_MESSAGE as Tc, clearBackgroundSyncQueue as Ec, installBackgroundSync as Dc, provideBackgroundSyncCredentials as Oc } from "./sw/background-sync.js";
|
|
303
|
+
import { registerPeriodicSync as kc } from "./sw/periodic-sync.js";
|
|
304
|
+
import { clearCaches as Ac, inspectCaches as jc } from "./sw/cache-inspect.js";
|
|
305
|
+
import { clearSessionData as Mc } from "./sw/session-data.js";
|
|
306
|
+
import { createAudioPlayer as Nc, playAudio as Pc, stopAudio as Fc } from "./audio/audio-player.js";
|
|
307
|
+
import { useAudio as Ic } from "./audio/use-audio.js";
|
|
308
|
+
import { createSfxPool as Lc } from "./audio/sfx-pool.js";
|
|
309
|
+
import { useSfxPool as Rc } from "./audio/use-sfx-pool.js";
|
|
310
|
+
import { DEFAULT_MAX_GAIN as zc, createAudioBus as Bc } from "./audio/audio-bus.js";
|
|
311
|
+
import { useAudioBus as Vc } from "./audio/use-audio-bus.js";
|
|
312
|
+
import { DEFAULT_VOICE_CHAIN as Hc, createVoiceChain as Uc, isVoiceChainIdle as Wc, monitorVoiceChain as Gc } from "./audio/voice-chain.js";
|
|
313
|
+
import { measureNoiseFloor as Kc, suggestGateThreshold as qc } from "./audio/noise-floor.js";
|
|
314
|
+
import { monitorVoiceActivity as Jc } from "./audio/voice-activity.js";
|
|
315
|
+
import { createVideoRecorder as Yc, isVideoRecordingSupported as Xc, pickVideoMimeType as Zc } from "./capture/video-recorder.js";
|
|
316
|
+
import { useVideoRecorder as Qc } from "./capture/use-video-recorder.js";
|
|
317
|
+
import { isScreenCaptureSupported as $c, useScreenCapture as el } from "./capture/use-screen-capture.js";
|
|
318
|
+
import { isSpeechRecognitionSupported as tl, useSpeechRecognition as nl } from "./capture/use-speech-recognition.js";
|
|
319
|
+
import { createOfflineDatabase as rl } from "./offline/create-offline-database.js";
|
|
320
|
+
import { createOfflineSync as il } from "./offline/create-offline-sync.js";
|
|
321
|
+
import { higherVersionWins as al, lastWriteWins as ol } from "./offline/conflict.js";
|
|
322
|
+
import { useErrorHandler as sl } from "./error-boundary/use-error-handler.js";
|
|
323
|
+
import { FormField as cl } from "./forms/FormField.js";
|
|
324
|
+
import { validateForm as ll } from "./forms/validate-form.js";
|
|
325
|
+
import { zodResolver as ul } from "./forms/zod-resolver.js";
|
|
326
|
+
import { useZodForm as dl } from "./forms/use-zod-form.js";
|
|
327
|
+
import { formatCEP as fl, formatCNPJ as pl, unmask as ml, validateCNPJ as hl, validateCPF as gl } from "./forms/br-validators.js";
|
|
328
|
+
import { CEPInput as _l, CNPJInput as vl, CPFInput as yl, MoneyInput as bl, PhoneInput as xl } from "./forms/masked-inputs.js";
|
|
329
|
+
import { useViaCEP as Sl } from "./forms/use-viacep.js";
|
|
330
|
+
import { Controller as Cl, FormProvider as wl, useFieldArray as Tl, useForm as El, useFormContext as Dl, useFormState as Ol, useWatch as kl } from "./forms/index.js";
|
|
331
|
+
import { HEARTBEAT_CLOSE_CODE as Al, isRejectionCloseCode as jl } from "./ws/resilience.js";
|
|
332
|
+
import { createWebSocket as Ml } from "./ws/create-web-socket.js";
|
|
333
|
+
import { useWebSocket as Nl } from "./ws/use-web-socket.js";
|
|
334
|
+
import { setTunedLocalDescription as Pl, tuneOpus as Fl } from "./webrtc/opus-sdp.js";
|
|
335
|
+
import { setSenderBitrate as Il } from "./webrtc/sender-bitrate.js";
|
|
336
|
+
import { createLinkStatsSampler as Ll, readAvailableOutgoingKbps as Rl, readQualityLimitation as zl, readRelayed as Bl, readRoundTripMs as Vl } from "./webrtc/link-stats.js";
|
|
337
|
+
import { useLinkStats as Hl } from "./webrtc/use-link-stats.js";
|
|
338
|
+
import { resolveDegradation as Ul, scaleForRoom as Wl } from "./webrtc/mesh-quality.js";
|
|
339
|
+
import { createPeerMesh as Gl } from "./webrtc/peer-mesh.js";
|
|
340
|
+
import { clampLatitude as Kl, isCoordinate as ql, isValidLatitude as Jl, isValidLongitude as Yl, normalizeLongitude as Xl } from "./geo/types.js";
|
|
341
|
+
import { EARTH_RADIUS_KM as Zl, bearingDeg as Ql, haversineKm as $l, pathLengthKm as eu, toRadians as tu } from "./geo/distance.js";
|
|
342
|
+
import { DEFAULT_CAR_SPEED_KMH as nu, DEFAULT_CIRCUITY_FACTOR as ru, DEFAULT_MODE_DURATION_FACTORS as iu, estimateTravel as au } from "./geo/estimate.js";
|
|
343
|
+
import { boundingBox as ou, boundsCenter as su, expandBounds as cu } from "./geo/bounds.js";
|
|
344
|
+
import { fitProjection as lu, projectMercator as uu, unprojectMercator as du } from "./geo/projection.js";
|
|
345
|
+
import { createOSRMBackend as fu } from "./geo/routing.js";
|
|
346
|
+
import { createPositionTracker as pu } from "./geo/create-position-tracker.js";
|
|
347
|
+
import { usePositionTracker as mu } from "./geo/use-position-tracker.js";
|
|
348
|
+
import { TrajectoryMap as hu } from "./geo/TrajectoryMap.js";
|
|
349
|
+
import { applyTheme as gu, readThemeToken as _u } from "./theme/apply-theme.js";
|
|
350
|
+
import { contrastRatio as vu, createColorScale as yu, hexToOklch as bu, hexToRgb as xu, hexToRgbaString as Su, oklchToHex as Cu, readableForeground as wu, relativeLuminance as Tu, rgbToHex as Eu } from "./theme/color.js";
|
|
351
|
+
import { createTheme as Du, themeContrast as Ou } from "./theme/create-theme.js";
|
|
352
|
+
import { createInverseSurface as ku } from "./theme/inverse-surface.js";
|
|
353
|
+
import { getThemePreset as Au, themePresets as ju } from "./theme/theme-presets.js";
|
|
354
|
+
import { getInitialTheme as Mu, themeInitScript as Nu } from "./theme/initial-theme.js";
|
|
355
|
+
import { consoleSink as Pu, createLogger as Fu } from "./logger/logger.js";
|
|
356
|
+
import { TelemetryProvider as Iu, useTelemetry as Lu } from "./telemetry/TelemetryProvider.js";
|
|
357
|
+
import { consoleTelemetryAdapter as Ru } from "./telemetry/console-adapter.js";
|
|
358
|
+
import { createSentryTelemetryAdapter as zu } from "./telemetry/sentry-adapter.js";
|
|
359
|
+
import { createPostHogTelemetryAdapter as Bu } from "./telemetry/posthog-adapter.js";
|
|
360
|
+
import { describeAppError as Vu } from "./telemetry/describe-app-error.js";
|
|
361
|
+
import { createAppErrorReporter as Hu } from "./telemetry/app-error-reporter.js";
|
|
362
|
+
import { createAppErrorTelemetryAdapter as Uu } from "./telemetry/app-error-adapter.js";
|
|
363
|
+
import { FeatureFlagsProvider as Wu, useFeatureFlag as Gu, useFlagValue as Ku } from "./feature-flags/FeatureFlagsProvider.js";
|
|
364
|
+
import { createInMemoryFlags as qu } from "./feature-flags/in-memory-adapter.js";
|
|
365
|
+
import { createGrowthBookFeatureFlagsAdapter as Ju } from "./feature-flags/growthbook-adapter.js";
|
|
366
|
+
import { createLaunchDarklyFeatureFlagsAdapter as Yu } from "./feature-flags/launchdarkly-adapter.js";
|
|
367
|
+
import { DIVERGING_STEP_COUNT as Xu, ORDINAL_START_STEP as Zu, SEQUENTIAL_STEP_COUNT as Qu, divergingScale as $u, scaleSteps as ed, sequentialScale as td } from "./charts/scales.js";
|
|
368
|
+
import { cachedResponseBytes as nd } from "./perf/cache-size.js";
|
|
369
|
+
import { readDeviceProfile as rd } from "./perf/device.js";
|
|
370
|
+
import { formatDurationMs as id } from "./perf/format.js";
|
|
371
|
+
import { createInferenceProfiler as ad } from "./perf/profiler.js";
|
|
372
|
+
export { Qt as ABSENT_TEXT, ri as AIChat, Zr as AIChatComposer, ni as AIChatTurn, Fr as ALL_BARCODE_FORMATS, Vt as ALL_OPTION_VALUE, ba as API_ERROR_OFFLINE_KEY, xa as API_ERROR_VALIDATION_KEY, wr as AUDIO_MIME_CANDIDATES, io as AccessControlProvider, t as Accordion, n as Alert, i as AppBar, cc as AppProviders, Wo as AppRouter, s as AppShell, c as AspectRatio, Sr as AudioPlayer, Pr as AudioRecorder, Ba as AuthGuard, l as Avatar, u as AvatarGroup, Ko as Await, Tc as BACKGROUND_SYNC_CREDENTIALS_MESSAGE, a as BREAKPOINTS, d as Badge, f as Banner, ci as BarList, Ur as BarcodeScanner, p as BottomNavigation, h as BottomSheet, g as Breadcrumbs, qo as BrowserRouter, _ as Button, v as ButtonSlot, go as CACHE_TIME, _l as CEPInput, vl as CNPJInput, yl as CPFInput, $n as Calendar, so as Can, y as Card, ar as Carousel, b as Center, yr as Chat, _r as ChatBubble, vr as ChatComposer, x as Checkbox, S as ChipInput, In as ClickOutside, An as CodeBlock, qn as Collapsible, w as Combobox, Xn as Command, Ln as ConditionalWrapper, E as ConfirmDialog, B as Container, Jn as ContextMenu, Cl as Controller, kn as CopyButton, Sa as DEFAULT_API_ERROR_STRINGS, Ir as DEFAULT_BARCODE_FORMATS, nu as DEFAULT_CAR_SPEED_KMH, Na as DEFAULT_CHUNK_SIZE, ru as DEFAULT_CIRCUITY_FACTOR, xc as DEFAULT_CREDENTIAL_HEADERS, da as DEFAULT_CSRF_COOKIE_NAME, fa as DEFAULT_CSRF_HEADER_NAME, zc as DEFAULT_MAX_GAIN, iu as DEFAULT_MODE_DURATION_FACTORS, bn as DEFAULT_PLAYBACK_RATES, Ga as DEFAULT_PUB_KEY_CRED_PARAMS, ye as DEFAULT_PUSH_TO_TALK_KEY, Hc as DEFAULT_VOICE_CHAIN, Xu as DIVERGING_STEP_COUNT, Vn as DataList, or as DataTable, O as DatePicker, nr as DateRangePicker, Hn as DescriptionList, k as Divider, A as Drawer, j as DropdownMenu, M as Dropzone, Zl as EARTH_RADIUS_KM, N as EmptyState, sc as ErrorBoundary, P as ErrorState, zn as ErrorText, Wu as FeatureFlagsProvider, F as FileUpload, pi as FilterBar, wi as FilterPanel, cr as FloatingActionButton, Rn as For, I as Form, L as FormActions, cl as FormField, wl as FormProvider, R as FormRow, z as FormSection, uo as GoogleSignIn, V as Grid, Al as HEARTBEAT_CLOSE_CODE, Jo as HashRouter, Ft as Hide, Yn as HoverCard, Ta as I18nProvider, Yo as IDLE_BLOCKER, Xo as IDLE_FETCHER, Zo as IDLE_NAVIGATION, Bn as Image, mn as ImageCropper, D as Input, X as InstallBanner, Z as InstallButton, mt as Kanban, gt as Kbd, Kn as Label, pr as Lightbox, Qo as Link, sr as ListTile, ti as Markdown, ai as Masonry, $o as MemoryRouter, ir as Menubar, T as Modal, _t as ModalsProvider, Mn as Money, bl as MoneyInput, tr as MultiSelect, bt as NProgressBar, es as NavLink, yt as Navbar, ts as Navigate, rr as NavigationMenu, lr as NavigationRail, ns as NavigationType, vn as NotificationCenter, po as OAuthCallbackError, Zu as ORDINAL_START_STEP, ct as OfflineIndicator, rs as Outlet, be as PUSH_TO_TALK_KEYS, wt as Page, Tt as Pagination, Ka as PasskeyError, Et as PasswordInput, xl as PhoneInput, Ot as PinInput, kt as Popover, C as Portal, At as Progress, Tn as QRCapacityError, On as QRCode, xo as QueryProvider, _o as REFETCH_TIME, jt as Radio, Mt as RadioGroup, Nt as RangeSlider, Pt as RatingStars, dr as RefreshIndicator, jn as RelativeTime, Qn as Resizable, Pa as ResumableUploadSupersededError, Fn as Reveal, is as Route, Uo as RouteGuard, as as Router, os as RouterForm, ss as RouterProvider, cs as Routes, Qu as SEQUENTIAL_STEP_COUNT, vo as STALE_TIME, Lt as SafeArea, gn as Scheduler, Zn as ScrollArea, ls as ScrollRestoration, Rt as SearchBar, St as Section, Ct as SectionHeader, zt as SegmentedControl, Bt as Select, ma as SessionSupersededError, It as Show, Kt as Sidebar, mr as SignaturePad, qt as Skeleton, er as Slider, Jt as Spacer, hn as Sparkline, Yt as Spinner, H as Stack, Xt as Stat, Zt as Stepper, rn as StepperInput, an as Switch, ft as SyncStatusBadge, sn as Table, cn as Tabs, on as Tag, Iu as TelemetryProvider, ha as TempestApiError, Po as TempestDataProvider, ln as Textarea, ac as ThemeProvider, ur as TimePicker, un as Timeline, fn as ToastProvider, Un as Toggle, Wn as ToggleGroup, Gn as ToggleGroupItem, dn as Tooltip, oi as Tour, hu as TrajectoryMap, ii as Transfer, Nn as TreeView, Pn as TruncateText, pt as UpdatePrompt, xn as VideoPlayer, Sn as VirtualList, wn as VirtualTable, dt as VisuallyHidden, pc as WebPushClient, mc as WebPushPermissionDeniedError, hc as WebPushUnsubscribeError, gc as WebPushUnsupportedError, fr as Wizard, Gt as activeNavKey, Wr as aiChatStrings, Te as announce, Si as applyFilters, ht as applyKanbanMove, gu as applyTheme, Gi as assertNever, qa as base64UrlToBytes, Ql as bearingDeg, Mr as blobToWav, ou as boundingBox, su as boundsCenter, la as buildApiUrl, si as buildBarListRows, U as buildOpenInChromeIntent, Ja as bytesToBase64Url, nd as cachedResponseBytes, ji as camelCase, Mi as capitalize, Li as chunk, $t as clamp, Kl as clampLatitude, Ya as classifyPasskeyError, Ee as clearAnnouncer, Ec as clearBackgroundSyncQueue, Ac as clearCaches, Mc as clearSessionData, e as cn, Cn as compareValues, Di as compressToString, Oi as compressedStorage, ki as compressedStorageCodec, Pu as consoleSink, Ru as consoleTelemetryAdapter, vu as contrastRatio, ya as createApiClient, Hu as createAppErrorReporter, Uu as createAppErrorTelemetryAdapter, Bc as createAudioBus, Nc as createAudioPlayer, Tr as createAudioRecorder, za as createAuthStore, Lr as createBarcodeDetector, us as createBrowserRouter, yu as createColorScale, Mo as createDataProvider, lc as createEventStream, Ju as createGrowthBookFeatureFlagsAdapter, ds as createHashRouter, wa as createI18n, qu as createInMemoryFlags, ad as createInferenceProfiler, ku as createInverseSurface, Ti as createJsonStorage, Yu as createLaunchDarklyFeatureFlagsAdapter, Or as createLevelMeter, Ll as createLinkStatsSampler, Fa as createLocalUploadStorage, Fu as createLogger, Cr as createMediaRecorder, fs as createMemoryRouter, fu as createOSRMBackend, rl as createOfflineDatabase, Ao as createOfflineStore, il as createOfflineSync, Sc as createPartialResponse, Xa as createPasskeyClient, ps as createPath, Gl as createPeerMesh, pu as createPositionTracker, Bu as createPostHogTelemetryAdapter, yo as createQueryKeys, Wa as createRefreshQueue, Ia as createResumableUpload, co as createRoleAccessControl, ms as createRoutesFromChildren, hs as createRoutesFromElements, gs as createSearchParams, ic as createSelectors, zu as createSentryTelemetryAdapter, Lc as createSfxPool, rc as createStore, ro as createTempestAuth, Du as createTheme, Yc as createVideoRecorder, Uc as createVoiceChain, Ml as createWebSocket, pa as csrfHeaders, _s as data, Xi as debounce, Va as decodeJWT, Ai as decompressFromString, Vi as deepMerge, Y as defaultInstallHint, Go as defineRoutes, Ca as describeApiError, Vu as describeAppError, li as describeFilter, $u as divergingScale, sa as downloadCsv, So as emptyOffsetPage, No as encodeIdSegment, En as encodeQR, Nr as encodeWav, Dt as estimatePasswordStrength, et as estimateStorage, au as estimateTravel, mo as exchangeOAuthCallback, cu as expandBounds, ui as filtersFromSearchParams, Ci as filtersToQueryParams, di as filtersToSearchParams, lu as fitProjection, en as formatBytes, fl as formatCEP, pl as formatCNPJ, mi as formatCPF, tn as formatCompactNumber, hi as formatCurrency, gi as formatDate, _i as formatDateForInput, vi as formatDateTime, yi as formatDateTimeForInput, id as formatDurationMs, bi as formatPercent, xi as formatPhone, Ma as generateIdempotencyKey, vs as generatePath, Mu as getInitialTheme, Rr as getSupportedBarcodeFormats, Au as getThemePreset, Ri as groupBy, $l as haversineKm, bu as hexToOklch, xu as hexToRgb, Su as hexToRgbaString, al as higherVersionWins, jc as inspectCaches, Dc as installBackgroundSync, vc as installNotificationClickHandler, Cc as installPrecache, yc as installPushHandler, wc as installRuntimeCache, bc as installSkipWaitingListener, W as isAndroid, G as isAndroidWithoutPromptApi, ga as isApiError, br as isAudioOutputSelectionSupported, Er as isAudioRecordingSupported, zr as isBarcodeDetectionSupported, Za as isConditionalMediationAvailable, ql as isCoordinate, Co as isCursorPage, Ki as isDefined, Hi as isEmpty, _e as isFullscreenSupported, Gr as isGenerating, K as isIOS, Ha as isJWTExpired, Ar as isMediaCaptureSupported, qi as isNumber, wo as isOffsetPage, Qa as isPasskeySupported, Ji as isPlainObject, $a as isPlatformAuthenticatorAvailable, dc as isPushSupported, jl as isRejectionCloseCode, _a as isRetriableStatus, ys as isRouteErrorResponse, $c as isScreenCaptureSupported, ia as isShareSupported, tl as isSpeechRecognitionSupported, q as isStandalone, Yi as isString, ua as isTrustedCredentialTarget, Jl as isValidLatitude, Yl as isValidLongitude, Xc as isVideoRecordingSupported, Wc as isVoiceChainIdle, Ni as kebabCase, Kr as lastAssistantId, ol as lastWriteWins, Ua as lazyWithRetry, Io as listQueryKey, bs as matchPath, xs as matchRoutes, Dn as matrixToPath, Kc as measureNoiseFloor, Zi as memoizeOne, Jc as monitorVoiceActivity, Gc as monitorVoiceChain, rt as moveItem, Br as normalizeBarcode, Xl as normalizeLongitude, xt as nprogress, Cu as oklchToHex, Ui as omit, Qi as once, Lo as oneQueryKey, fi as operatorsFor, Ss as parsePath, Aa as parseResponse, eu as pathLengthKm, nn as percentOf, lo as permissionsFromToken, jo as persistQueryClientOffline, Wi as pick, Dr as pickAudioMimeType, Zc as pickVideoMimeType, Pc as playAudio, Pi as pluralize, uu as projectMercator, Oc as provideBackgroundSyncCredentials, xe as pushToTalkKeyLabel, na as randomId, zi as range, Rl as readAvailableOutgoingKbps, rd as readDeviceProfile, ho as readOAuthCallbackParams, zl as readQualityLimitation, Bl as readRelayed, Vl as readRoundTripMs, _u as readThemeToken, wu as readableForeground, hr as receiptLabel, Cs as redirect, ws as redirectDocument, kc as registerPeriodicSync, Xe as registerServiceWorker, Tu as relativeLuminance, _n as relativeTime, Oo as removeById, Ts as renderMatches, Es as replace, tt as requestPersistentStorage, Ul as resolveDegradation, Ds as resolvePath, gr as resolveReceiptState, va as retry, Eu as rgbToHex, qr as roleLabel, Qr as safeAttachmentUrl, $r as safeImageUrl, ei as safeLinkUrl, Wl as scaleForRoom, ed as scaleSteps, td as sequentialScale, xr as setAudioOutput, r as setDevBuild, Il as setSenderBitrate, Pl as setTunedLocalDescription, aa as share, oa as shareOrDownloadBlob, bo as shouldRetryQuery, Ze as skipWaiting, ea as sleep, Fi as slugify, Fc as stopAudio, Ei as storage, qc as suggestGateThreshold, Jr as tailSignature, Ou as themeContrast, Nu as themeInitScript, ju as themePresets, $i as throttle, ca as toCsv, Ht as toOptions, tu as toRadians, Ii as truncate, Fl as tuneOpus, Yr as turnTime, Bi as uniqueBy, ml as unmask, du as unprojectMercator, Qe as unregisterAllServiceWorkers, La as uploadFingerprint, ja as uploadWithProgress, ko as upsertById, fc as urlBase64ToUint8Array, ao as useAccessControl, Os as useActionData, De as useAnnounce, ce as useAsync, ks as useAsyncError, As as useAsyncValue, Ic as useAudio, Vc as useAudioBus, kr as useAudioRecorder, Hr as useBarcodeScanner, he as useBeforeInstallPrompt, js as useBeforeUnload, Ms as useBlocker, o as useBreakpoint, oo as useCan, Ke as useClickOutside, ee as useClientFilter, pe as useClipboard, ze as useCountdown, Re as useCounter, Ro as useCreate, Eo as useCursorQuery, Fo as useDataProvider, Q as useDebounce, te as useDeepMemo, zo as useDelete, ka as useDescribeApiError, Ie as useDisclosure, Ve as useDocumentTitle, ue as useDocumentVisibility, re as useDraftFilters, sl as useErrorHandler, ae as useEventListener, uc as useEventStream, He as useFavicon, Gu as useFeatureFlag, Ns as useFetcher, Ps as useFetchers, Tl as useFieldArray, Ku as useFlagValue, m as useFocusTrap, El as useForm, Fs as useFormAction, Dl as useFormContext, Ol as useFormState, ve as useFullscreen, Ce as useGeolocation, Pe as useHover, Is as useHref, Ea as useI18n, ge as useIdle, Ls as useInRouterContext, J as useInstallPrompt, de as useIntersectionObserver, Ae as useInterval, qe as useIsFirstRender, me as useKeyboardShortcut, ne as useLatestRef, Rs as useLinkClickHandler, Hl as useLinkStats, Bo as useList, Le as useListState, zs as useLoaderData, oe as useLocalStorage, Bs as useLocation, Fe as useLongPress, Ye as useLongPressHandlers, Ue as useMap, Vs as useMatch, Hs as useMatches, st as useMediaDevices, ot as useMediaPermission, ie as useMediaQuery, jr as useMicrophone, vt as useModals, Us as useNavigate, Ws as useNavigation, Gs as useNavigationType, yn as useNotificationInbox, fo as useOAuthCallback, Je as useObjectUrl, Do as useOfflineMutation, lt as useOfflineSync, Vo as useOne, le as useOnline, Da as useOptionalI18n, Ks as useOutlet, qs as useOutletContext, To as usePaginatedQuery, $ as usePagination, Js as useParams, eo as usePasskeyCapabilities, to as usePasskeyRegistration, no as usePasskeySignIn, Ra as usePoll, mu as usePositionTracker, ke as usePrevious, _c as usePushSubscription, Se as usePushToTalk, Ge as useQueue, fe as useResizeObserver, Ys as useResolvedPath, Xs as useRevalidator, Zs as useRouteError, Qs as useRouteLoaderData, $s as useRoutes, el as useScreenCapture, we as useScrollLock, at as useScrollOverflow, ec as useSearchParams, $e as useServiceWorkerUpdate, We as useSet, Rc as useSfxPool, it as useSortable, nl as useSpeechRecognition, Oe as useStableCallback, nt as useStorageEstimate, tc as useSubmit, ut as useSyncStatus, Lu as useTelemetry, oc as useTheme, Me as useThrottle, je as useTimeout, pn as useToast, se as useToggle, Vr as useTorch, Oa as useTranslate, Be as useTypewriter, Ho as useUpdate, Sl as useViaCEP, Qc as useVideoRecorder, nc as useViewTransitionState, kl as useWatch, Nl as useWebSocket, Ne as useWindowSize, dl as useZodForm, hl as validateCNPJ, gl as validateCPF, ll as validateForm, Xr as visibleTurns, Ut as withAllOption, Wt as withEmptyOption, ta as withTimeout, ra as writeXlsx, ul as zodResolver };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-handlers.cjs","names":[],"sources":["../../src/testing/create-mock-handlers.ts"],"sourcesContent":["/**\n * Lightweight, MSW-shaped mock request handler factory. Returns plain\n * objects with `{ method, path, status, body }` that callers feed into\n * `msw`'s `http.<method>` helpers OR a custom test harness — the SDK\n * does **not** declare `msw` as a peer dep, so this helper is purely\n * data-driven.\n *\n * Use cases:\n * - Define request fixtures in a single file, share between tests and\n * Storybook stories (when used).\n * - Standardise the \"happy path\" + \"error path\" shape across services.\n *\n * @example\n * import { http, HttpResponse } from \"msw\";\n * import { setupServer } from \"msw/node\";\n * import { createMockHandlers } from \"tempest-react-sdk/testing\";\n *\n * const fixtures = createMockHandlers([\n * { method: \"GET\", path: \"/users/me\", status: 200, body: { id: \"u1\", name: \"Mauricio\" } },\n * { method: \"POST\", path: \"/orders\", status: 201, body: { id: \"o1\" } },\n * { method: \"GET\", path: \"/explode\", status: 500, body: { detail: \"kaboom\" } },\n * ]);\n *\n * const handlers = fixtures.map((f) =>\n * (http as Record<string, Function>)[f.method.toLowerCase()](f.path, () =>\n * HttpResponse.json(f.body, { status: f.status }),\n * ),\n * );\n *\n * setupServer(...handlers);\n */\n\nexport type MockHandlerMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface MockHandlerInput {\n method: MockHandlerMethod;\n path: string;\n /** HTTP status code. Default `200`. */\n status?: number;\n /** Response body — anything JSON-serialisable. Default `null`. */\n body?: unknown;\n /** Optional response headers. */\n headers?: Record<string, string>;\n /** Optional artificial delay in ms. Useful to test loading states. */\n delayMs?: number;\n}\n\nexport interface MockHandler {\n method: MockHandlerMethod;\n path: string;\n status: number;\n body: unknown;\n headers: Record<string, string>;\n delayMs: number;\n}\n\n/**\n * Normalise a list of request fixtures into MSW-friendly handler descriptors.\n * Default `status` is `200`, default `body` is `null`, default `delayMs` is `0`,\n * default `headers` is `{ \"Content-Type\": \"application/json\" }`.\n */\nexport function createMockHandlers(handlers: MockHandlerInput[]): MockHandler[] {\n return handlers.map((handler) => ({\n method: handler.method,\n path: handler.path,\n status: handler.status ?? 200,\n body: handler.body ?? null,\n headers: handler.headers ?? { \"Content-Type\": \"application/json\" },\n delayMs: handler.delayMs ?? 0,\n }));\n}\n"],"mappings":"AA6DA,
|
|
1
|
+
{"version":3,"file":"create-mock-handlers.cjs","names":["createMockHandlers","handlers","handler"],"sources":["../../src/testing/create-mock-handlers.ts"],"sourcesContent":["/**\n * Lightweight, MSW-shaped mock request handler factory. Returns plain\n * objects with `{ method, path, status, body }` that callers feed into\n * `msw`'s `http.<method>` helpers OR a custom test harness — the SDK\n * does **not** declare `msw` as a peer dep, so this helper is purely\n * data-driven.\n *\n * Use cases:\n * - Define request fixtures in a single file, share between tests and\n * Storybook stories (when used).\n * - Standardise the \"happy path\" + \"error path\" shape across services.\n *\n * @example\n * import { http, HttpResponse } from \"msw\";\n * import { setupServer } from \"msw/node\";\n * import { createMockHandlers } from \"tempest-react-sdk/testing\";\n *\n * const fixtures = createMockHandlers([\n * { method: \"GET\", path: \"/users/me\", status: 200, body: { id: \"u1\", name: \"Mauricio\" } },\n * { method: \"POST\", path: \"/orders\", status: 201, body: { id: \"o1\" } },\n * { method: \"GET\", path: \"/explode\", status: 500, body: { detail: \"kaboom\" } },\n * ]);\n *\n * const handlers = fixtures.map((f) =>\n * (http as Record<string, Function>)[f.method.toLowerCase()](f.path, () =>\n * HttpResponse.json(f.body, { status: f.status }),\n * ),\n * );\n *\n * setupServer(...handlers);\n */\n\nexport type MockHandlerMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface MockHandlerInput {\n method: MockHandlerMethod;\n path: string;\n /** HTTP status code. Default `200`. */\n status?: number;\n /** Response body — anything JSON-serialisable. Default `null`. */\n body?: unknown;\n /** Optional response headers. */\n headers?: Record<string, string>;\n /** Optional artificial delay in ms. Useful to test loading states. */\n delayMs?: number;\n}\n\nexport interface MockHandler {\n method: MockHandlerMethod;\n path: string;\n status: number;\n body: unknown;\n headers: Record<string, string>;\n delayMs: number;\n}\n\n/**\n * Normalise a list of request fixtures into MSW-friendly handler descriptors.\n * Default `status` is `200`, default `body` is `null`, default `delayMs` is `0`,\n * default `headers` is `{ \"Content-Type\": \"application/json\" }`.\n */\nexport function createMockHandlers(handlers: MockHandlerInput[]): MockHandler[] {\n return handlers.map((handler) => ({\n method: handler.method,\n path: handler.path,\n status: handler.status ?? 200,\n body: handler.body ?? null,\n headers: handler.headers ?? { \"Content-Type\": \"application/json\" },\n delayMs: handler.delayMs ?? 0,\n }));\n}\n"],"mappings":"AA6DA,SAAgBA,EAAmB,EAA6C,CAC5E,OAAOC,EAAS,IAAK,IAAa,CAC9B,OAAQC,EAAQ,OAChB,KAAMA,EAAQ,KACd,OAAQA,EAAQ,QAAU,IAC1B,KAAMA,EAAQ,MAAQ,KACtB,QAASA,EAAQ,SAAW,CAAE,eAAgB,kBAAmB,EACjE,QAASA,EAAQ,SAAW,CAChC,EAAE,CACN,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-handlers.js","names":[],"sources":["../../src/testing/create-mock-handlers.ts"],"sourcesContent":["/**\n * Lightweight, MSW-shaped mock request handler factory. Returns plain\n * objects with `{ method, path, status, body }` that callers feed into\n * `msw`'s `http.<method>` helpers OR a custom test harness — the SDK\n * does **not** declare `msw` as a peer dep, so this helper is purely\n * data-driven.\n *\n * Use cases:\n * - Define request fixtures in a single file, share between tests and\n * Storybook stories (when used).\n * - Standardise the \"happy path\" + \"error path\" shape across services.\n *\n * @example\n * import { http, HttpResponse } from \"msw\";\n * import { setupServer } from \"msw/node\";\n * import { createMockHandlers } from \"tempest-react-sdk/testing\";\n *\n * const fixtures = createMockHandlers([\n * { method: \"GET\", path: \"/users/me\", status: 200, body: { id: \"u1\", name: \"Mauricio\" } },\n * { method: \"POST\", path: \"/orders\", status: 201, body: { id: \"o1\" } },\n * { method: \"GET\", path: \"/explode\", status: 500, body: { detail: \"kaboom\" } },\n * ]);\n *\n * const handlers = fixtures.map((f) =>\n * (http as Record<string, Function>)[f.method.toLowerCase()](f.path, () =>\n * HttpResponse.json(f.body, { status: f.status }),\n * ),\n * );\n *\n * setupServer(...handlers);\n */\n\nexport type MockHandlerMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface MockHandlerInput {\n method: MockHandlerMethod;\n path: string;\n /** HTTP status code. Default `200`. */\n status?: number;\n /** Response body — anything JSON-serialisable. Default `null`. */\n body?: unknown;\n /** Optional response headers. */\n headers?: Record<string, string>;\n /** Optional artificial delay in ms. Useful to test loading states. */\n delayMs?: number;\n}\n\nexport interface MockHandler {\n method: MockHandlerMethod;\n path: string;\n status: number;\n body: unknown;\n headers: Record<string, string>;\n delayMs: number;\n}\n\n/**\n * Normalise a list of request fixtures into MSW-friendly handler descriptors.\n * Default `status` is `200`, default `body` is `null`, default `delayMs` is `0`,\n * default `headers` is `{ \"Content-Type\": \"application/json\" }`.\n */\nexport function createMockHandlers(handlers: MockHandlerInput[]): MockHandler[] {\n return handlers.map((handler) => ({\n method: handler.method,\n path: handler.path,\n status: handler.status ?? 200,\n body: handler.body ?? null,\n headers: handler.headers ?? { \"Content-Type\": \"application/json\" },\n delayMs: handler.delayMs ?? 0,\n }));\n}\n"],"mappings":";AA6DA,
|
|
1
|
+
{"version":3,"file":"create-mock-handlers.js","names":["createMockHandlers","handlers","handler"],"sources":["../../src/testing/create-mock-handlers.ts"],"sourcesContent":["/**\n * Lightweight, MSW-shaped mock request handler factory. Returns plain\n * objects with `{ method, path, status, body }` that callers feed into\n * `msw`'s `http.<method>` helpers OR a custom test harness — the SDK\n * does **not** declare `msw` as a peer dep, so this helper is purely\n * data-driven.\n *\n * Use cases:\n * - Define request fixtures in a single file, share between tests and\n * Storybook stories (when used).\n * - Standardise the \"happy path\" + \"error path\" shape across services.\n *\n * @example\n * import { http, HttpResponse } from \"msw\";\n * import { setupServer } from \"msw/node\";\n * import { createMockHandlers } from \"tempest-react-sdk/testing\";\n *\n * const fixtures = createMockHandlers([\n * { method: \"GET\", path: \"/users/me\", status: 200, body: { id: \"u1\", name: \"Mauricio\" } },\n * { method: \"POST\", path: \"/orders\", status: 201, body: { id: \"o1\" } },\n * { method: \"GET\", path: \"/explode\", status: 500, body: { detail: \"kaboom\" } },\n * ]);\n *\n * const handlers = fixtures.map((f) =>\n * (http as Record<string, Function>)[f.method.toLowerCase()](f.path, () =>\n * HttpResponse.json(f.body, { status: f.status }),\n * ),\n * );\n *\n * setupServer(...handlers);\n */\n\nexport type MockHandlerMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface MockHandlerInput {\n method: MockHandlerMethod;\n path: string;\n /** HTTP status code. Default `200`. */\n status?: number;\n /** Response body — anything JSON-serialisable. Default `null`. */\n body?: unknown;\n /** Optional response headers. */\n headers?: Record<string, string>;\n /** Optional artificial delay in ms. Useful to test loading states. */\n delayMs?: number;\n}\n\nexport interface MockHandler {\n method: MockHandlerMethod;\n path: string;\n status: number;\n body: unknown;\n headers: Record<string, string>;\n delayMs: number;\n}\n\n/**\n * Normalise a list of request fixtures into MSW-friendly handler descriptors.\n * Default `status` is `200`, default `body` is `null`, default `delayMs` is `0`,\n * default `headers` is `{ \"Content-Type\": \"application/json\" }`.\n */\nexport function createMockHandlers(handlers: MockHandlerInput[]): MockHandler[] {\n return handlers.map((handler) => ({\n method: handler.method,\n path: handler.path,\n status: handler.status ?? 200,\n body: handler.body ?? null,\n headers: handler.headers ?? { \"Content-Type\": \"application/json\" },\n delayMs: handler.delayMs ?? 0,\n }));\n}\n"],"mappings":";AA6DA,SAAgBA,EAAmB,GAA6C;CAC5E,OAAOC,EAAS,KAAK,OAAa;EAC9B,QAAQC,EAAQ;EAChB,MAAMA,EAAQ;EACd,QAAQA,EAAQ,UAAU;EAC1B,MAAMA,EAAQ,QAAQ;EACtB,SAASA,EAAQ,WAAW,EAAE,gBAAgB,mBAAmB;EACjE,SAASA,EAAQ,WAAW;CAChC,EAAE;AACN"}
|
package/dist/testing.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { e as createMockHandlers };
|
|
1
|
+
export { createMockHandlers } from "./testing/create-mock-handlers.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.cjs","names":[],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useLatestRef } from \"@/hooks/use-latest-ref\";\nimport { storage } from \"@/utils/storage\";\nimport type { ResolvedTheme, ThemeMode } from \"./types\";\n\nexport interface ThemeContextValue {\n /** Raw user preference (light / dark / system). */\n theme: ThemeMode;\n /** Effective theme actually applied to the DOM (light or dark). */\n resolvedTheme: ResolvedTheme;\n /** Update the preference. Persisted to localStorage when `storageKey` is set. */\n setTheme: (next: ThemeMode) => void;\n /** Convenience: flip light ↔ dark. When in `system` mode, switches to the opposite of the current resolved theme. */\n toggle: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n /** Initial preference when nothing is stored. Default: `\"system\"`. */\n defaultTheme?: ThemeMode;\n /** localStorage key used to persist the preference. Pass `null` to disable persistence. Default: `\"tempest-theme\"`. */\n storageKey?: string | null;\n /**\n * Element that receives the theme attribute(s). Defaults to\n * `document.documentElement`. Override when scoping the theme to a subtree.\n */\n target?: () => HTMLElement | null;\n /**\n * Attribute name(s) written on the target with the resolved theme\n * (`\"light\"` / `\"dark\"`). Default: `\"data-tempest-theme\"`.\n *\n * Pass an array to mirror the theme onto more than one attribute — handy\n * when the SDK components read `data-tempest-theme` but the host app's own\n * CSS keys off a different attribute (e.g. `[\"data-tempest-theme\",\n * \"data-theme\"]`). Avoids a separate sync effect in the consumer.\n */\n attribute?: string | string[];\n /**\n * When set, keeps `<meta name=\"theme-color\">` in sync with the resolved\n * theme — `content` becomes `themeColor.dark` in dark mode and\n * `themeColor.light` in light mode. The meta tag must already exist in the\n * document `<head>`. No-op when omitted.\n */\n themeColor?: { light: string; dark: string };\n}\n\nfunction resolve(mode: ThemeMode): ResolvedTheme {\n if (mode === \"dark\" || mode === \"light\") return mode;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\n/**\n * Write the resolved theme onto every configured attribute and, when a\n * `themeColor` map is provided, sync the `<meta name=\"theme-color\">` tag.\n */\nfunction applyResolved(\n element: HTMLElement,\n resolved: ResolvedTheme,\n attribute: string | string[],\n themeColor?: { light: string; dark: string },\n): void {\n const attrs = Array.isArray(attribute) ? attribute : [attribute];\n for (const attr of attrs) element.setAttribute(attr, resolved);\n if (themeColor && typeof document !== \"undefined\") {\n const meta = document.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (meta) meta.content = themeColor[resolved];\n }\n}\n\nfunction readStored(storageKey: string | null): ThemeMode | null {\n if (!storageKey) return null;\n const value = storage.getRaw(storageKey);\n if (value === \"light\" || value === \"dark\" || value === \"system\") return value;\n return null;\n}\n\n/**\n * Wire dark/light theming. Writes a data attribute on a target element (the\n * `<html>` element by default) and exposes the current preference via\n * {@link useTheme}.\n *\n * Pair with `themeInitScript()` in the HTML head to prevent the flash of\n * incorrect theme on first paint.\n *\n * @tempest-limits empty-catch — the theme is applied to the DOM before it is\n * persisted, so a `localStorage` write refused by quota or private mode leaves the\n * user with the theme they just picked and only forfeits it on the next load.\n * Throwing from the setter would break the switch that already worked.\n */\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = \"tempest-theme\",\n target,\n attribute = \"data-tempest-theme\",\n themeColor,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(\n () => readStored(storageKey) ?? defaultTheme,\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolve(theme));\n\n const targetRef = useLatestRef(target);\n\n const attributeKey = Array.isArray(attribute) ? attribute.join(\",\") : attribute;\n const themeColorRef = useLatestRef(themeColor);\n\n useEffect(() => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next = resolve(theme);\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n // attributeKey is the stable string form of `attribute`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const list = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (): void => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next: ResolvedTheme = list.matches ? \"dark\" : \"light\";\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n };\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n const setTheme = useCallback(\n (next: ThemeMode) => {\n setThemeState(next);\n if (storageKey) storage.setRaw(storageKey, next);\n },\n [storageKey],\n );\n\n const toggle = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme, toggle }),\n [theme, resolvedTheme, setTheme, toggle],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Read and mutate the current theme. Must be used inside a {@link ThemeProvider}.\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside a <ThemeProvider>\");\n return ctx;\n}\n"],"mappings":"uIAiBA,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.cjs","names":["createContext","storage","useState","useLatestRef","useCallback","useMemo","useContext","require_use_latest_ref","require_storage","react","react_jsx_runtime","ThemeContext","resolve","mode","applyResolved","attrs","attribute","attr","element","resolved","themeColor","meta","readStored","storageKey","value","ThemeProvider","theme","setThemeState","defaultTheme","resolvedTheme","setResolvedTheme","targetRef","target","attributeKey","themeColorRef","next","list","handler","setTheme","toggle","useTheme","ctx"],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useLatestRef } from \"@/hooks/use-latest-ref\";\nimport { storage } from \"@/utils/storage\";\nimport type { ResolvedTheme, ThemeMode } from \"./types\";\n\nexport interface ThemeContextValue {\n /** Raw user preference (light / dark / system). */\n theme: ThemeMode;\n /** Effective theme actually applied to the DOM (light or dark). */\n resolvedTheme: ResolvedTheme;\n /** Update the preference. Persisted to localStorage when `storageKey` is set. */\n setTheme: (next: ThemeMode) => void;\n /** Convenience: flip light ↔ dark. When in `system` mode, switches to the opposite of the current resolved theme. */\n toggle: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n /** Initial preference when nothing is stored. Default: `\"system\"`. */\n defaultTheme?: ThemeMode;\n /** localStorage key used to persist the preference. Pass `null` to disable persistence. Default: `\"tempest-theme\"`. */\n storageKey?: string | null;\n /**\n * Element that receives the theme attribute(s). Defaults to\n * `document.documentElement`. Override when scoping the theme to a subtree.\n */\n target?: () => HTMLElement | null;\n /**\n * Attribute name(s) written on the target with the resolved theme\n * (`\"light\"` / `\"dark\"`). Default: `\"data-tempest-theme\"`.\n *\n * Pass an array to mirror the theme onto more than one attribute — handy\n * when the SDK components read `data-tempest-theme` but the host app's own\n * CSS keys off a different attribute (e.g. `[\"data-tempest-theme\",\n * \"data-theme\"]`). Avoids a separate sync effect in the consumer.\n */\n attribute?: string | string[];\n /**\n * When set, keeps `<meta name=\"theme-color\">` in sync with the resolved\n * theme — `content` becomes `themeColor.dark` in dark mode and\n * `themeColor.light` in light mode. The meta tag must already exist in the\n * document `<head>`. No-op when omitted.\n */\n themeColor?: { light: string; dark: string };\n}\n\nfunction resolve(mode: ThemeMode): ResolvedTheme {\n if (mode === \"dark\" || mode === \"light\") return mode;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\n/**\n * Write the resolved theme onto every configured attribute and, when a\n * `themeColor` map is provided, sync the `<meta name=\"theme-color\">` tag.\n */\nfunction applyResolved(\n element: HTMLElement,\n resolved: ResolvedTheme,\n attribute: string | string[],\n themeColor?: { light: string; dark: string },\n): void {\n const attrs = Array.isArray(attribute) ? attribute : [attribute];\n for (const attr of attrs) element.setAttribute(attr, resolved);\n if (themeColor && typeof document !== \"undefined\") {\n const meta = document.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (meta) meta.content = themeColor[resolved];\n }\n}\n\nfunction readStored(storageKey: string | null): ThemeMode | null {\n if (!storageKey) return null;\n const value = storage.getRaw(storageKey);\n if (value === \"light\" || value === \"dark\" || value === \"system\") return value;\n return null;\n}\n\n/**\n * Wire dark/light theming. Writes a data attribute on a target element (the\n * `<html>` element by default) and exposes the current preference via\n * {@link useTheme}.\n *\n * Pair with `themeInitScript()` in the HTML head to prevent the flash of\n * incorrect theme on first paint.\n *\n * @tempest-limits empty-catch — the theme is applied to the DOM before it is\n * persisted, so a `localStorage` write refused by quota or private mode leaves the\n * user with the theme they just picked and only forfeits it on the next load.\n * Throwing from the setter would break the switch that already worked.\n */\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = \"tempest-theme\",\n target,\n attribute = \"data-tempest-theme\",\n themeColor,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(\n () => readStored(storageKey) ?? defaultTheme,\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolve(theme));\n\n const targetRef = useLatestRef(target);\n\n const attributeKey = Array.isArray(attribute) ? attribute.join(\",\") : attribute;\n const themeColorRef = useLatestRef(themeColor);\n\n useEffect(() => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next = resolve(theme);\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n // attributeKey is the stable string form of `attribute`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const list = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (): void => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next: ResolvedTheme = list.matches ? \"dark\" : \"light\";\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n };\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n const setTheme = useCallback(\n (next: ThemeMode) => {\n setThemeState(next);\n if (storageKey) storage.setRaw(storageKey, next);\n },\n [storageKey],\n );\n\n const toggle = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme, toggle }),\n [theme, resolvedTheme, setTheme, toggle],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Read and mutate the current theme. Must be used inside a {@link ThemeProvider}.\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside a <ThemeProvider>\");\n return ctx;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","names":[],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useLatestRef } from \"@/hooks/use-latest-ref\";\nimport { storage } from \"@/utils/storage\";\nimport type { ResolvedTheme, ThemeMode } from \"./types\";\n\nexport interface ThemeContextValue {\n /** Raw user preference (light / dark / system). */\n theme: ThemeMode;\n /** Effective theme actually applied to the DOM (light or dark). */\n resolvedTheme: ResolvedTheme;\n /** Update the preference. Persisted to localStorage when `storageKey` is set. */\n setTheme: (next: ThemeMode) => void;\n /** Convenience: flip light ↔ dark. When in `system` mode, switches to the opposite of the current resolved theme. */\n toggle: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n /** Initial preference when nothing is stored. Default: `\"system\"`. */\n defaultTheme?: ThemeMode;\n /** localStorage key used to persist the preference. Pass `null` to disable persistence. Default: `\"tempest-theme\"`. */\n storageKey?: string | null;\n /**\n * Element that receives the theme attribute(s). Defaults to\n * `document.documentElement`. Override when scoping the theme to a subtree.\n */\n target?: () => HTMLElement | null;\n /**\n * Attribute name(s) written on the target with the resolved theme\n * (`\"light\"` / `\"dark\"`). Default: `\"data-tempest-theme\"`.\n *\n * Pass an array to mirror the theme onto more than one attribute — handy\n * when the SDK components read `data-tempest-theme` but the host app's own\n * CSS keys off a different attribute (e.g. `[\"data-tempest-theme\",\n * \"data-theme\"]`). Avoids a separate sync effect in the consumer.\n */\n attribute?: string | string[];\n /**\n * When set, keeps `<meta name=\"theme-color\">` in sync with the resolved\n * theme — `content` becomes `themeColor.dark` in dark mode and\n * `themeColor.light` in light mode. The meta tag must already exist in the\n * document `<head>`. No-op when omitted.\n */\n themeColor?: { light: string; dark: string };\n}\n\nfunction resolve(mode: ThemeMode): ResolvedTheme {\n if (mode === \"dark\" || mode === \"light\") return mode;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\n/**\n * Write the resolved theme onto every configured attribute and, when a\n * `themeColor` map is provided, sync the `<meta name=\"theme-color\">` tag.\n */\nfunction applyResolved(\n element: HTMLElement,\n resolved: ResolvedTheme,\n attribute: string | string[],\n themeColor?: { light: string; dark: string },\n): void {\n const attrs = Array.isArray(attribute) ? attribute : [attribute];\n for (const attr of attrs) element.setAttribute(attr, resolved);\n if (themeColor && typeof document !== \"undefined\") {\n const meta = document.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (meta) meta.content = themeColor[resolved];\n }\n}\n\nfunction readStored(storageKey: string | null): ThemeMode | null {\n if (!storageKey) return null;\n const value = storage.getRaw(storageKey);\n if (value === \"light\" || value === \"dark\" || value === \"system\") return value;\n return null;\n}\n\n/**\n * Wire dark/light theming. Writes a data attribute on a target element (the\n * `<html>` element by default) and exposes the current preference via\n * {@link useTheme}.\n *\n * Pair with `themeInitScript()` in the HTML head to prevent the flash of\n * incorrect theme on first paint.\n *\n * @tempest-limits empty-catch — the theme is applied to the DOM before it is\n * persisted, so a `localStorage` write refused by quota or private mode leaves the\n * user with the theme they just picked and only forfeits it on the next load.\n * Throwing from the setter would break the switch that already worked.\n */\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = \"tempest-theme\",\n target,\n attribute = \"data-tempest-theme\",\n themeColor,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(\n () => readStored(storageKey) ?? defaultTheme,\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolve(theme));\n\n const targetRef = useLatestRef(target);\n\n const attributeKey = Array.isArray(attribute) ? attribute.join(\",\") : attribute;\n const themeColorRef = useLatestRef(themeColor);\n\n useEffect(() => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next = resolve(theme);\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n // attributeKey is the stable string form of `attribute`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const list = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (): void => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next: ResolvedTheme = list.matches ? \"dark\" : \"light\";\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n };\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n const setTheme = useCallback(\n (next: ThemeMode) => {\n setThemeState(next);\n if (storageKey) storage.setRaw(storageKey, next);\n },\n [storageKey],\n );\n\n const toggle = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme, toggle }),\n [theme, resolvedTheme, setTheme, toggle],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Read and mutate the current theme. Must be used inside a {@link ThemeProvider}.\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside a <ThemeProvider>\");\n return ctx;\n}\n"],"mappings":";;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","names":["ThemeContext","createContext","resolve","mode","applyResolved","attrs","attribute","attr","resolved","themeColor","meta","readStored","storageKey","value","storage","ThemeProvider","theme","setThemeState","useState","defaultTheme","resolvedTheme","setResolvedTheme","targetRef","useLatestRef","target","attributeKey","themeColorRef","useEffect","element","next","list","handler","setTheme","useCallback","toggle","useMemo","useTheme","ctx","useContext"],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useLatestRef } from \"@/hooks/use-latest-ref\";\nimport { storage } from \"@/utils/storage\";\nimport type { ResolvedTheme, ThemeMode } from \"./types\";\n\nexport interface ThemeContextValue {\n /** Raw user preference (light / dark / system). */\n theme: ThemeMode;\n /** Effective theme actually applied to the DOM (light or dark). */\n resolvedTheme: ResolvedTheme;\n /** Update the preference. Persisted to localStorage when `storageKey` is set. */\n setTheme: (next: ThemeMode) => void;\n /** Convenience: flip light ↔ dark. When in `system` mode, switches to the opposite of the current resolved theme. */\n toggle: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n /** Initial preference when nothing is stored. Default: `\"system\"`. */\n defaultTheme?: ThemeMode;\n /** localStorage key used to persist the preference. Pass `null` to disable persistence. Default: `\"tempest-theme\"`. */\n storageKey?: string | null;\n /**\n * Element that receives the theme attribute(s). Defaults to\n * `document.documentElement`. Override when scoping the theme to a subtree.\n */\n target?: () => HTMLElement | null;\n /**\n * Attribute name(s) written on the target with the resolved theme\n * (`\"light\"` / `\"dark\"`). Default: `\"data-tempest-theme\"`.\n *\n * Pass an array to mirror the theme onto more than one attribute — handy\n * when the SDK components read `data-tempest-theme` but the host app's own\n * CSS keys off a different attribute (e.g. `[\"data-tempest-theme\",\n * \"data-theme\"]`). Avoids a separate sync effect in the consumer.\n */\n attribute?: string | string[];\n /**\n * When set, keeps `<meta name=\"theme-color\">` in sync with the resolved\n * theme — `content` becomes `themeColor.dark` in dark mode and\n * `themeColor.light` in light mode. The meta tag must already exist in the\n * document `<head>`. No-op when omitted.\n */\n themeColor?: { light: string; dark: string };\n}\n\nfunction resolve(mode: ThemeMode): ResolvedTheme {\n if (mode === \"dark\" || mode === \"light\") return mode;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\n/**\n * Write the resolved theme onto every configured attribute and, when a\n * `themeColor` map is provided, sync the `<meta name=\"theme-color\">` tag.\n */\nfunction applyResolved(\n element: HTMLElement,\n resolved: ResolvedTheme,\n attribute: string | string[],\n themeColor?: { light: string; dark: string },\n): void {\n const attrs = Array.isArray(attribute) ? attribute : [attribute];\n for (const attr of attrs) element.setAttribute(attr, resolved);\n if (themeColor && typeof document !== \"undefined\") {\n const meta = document.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (meta) meta.content = themeColor[resolved];\n }\n}\n\nfunction readStored(storageKey: string | null): ThemeMode | null {\n if (!storageKey) return null;\n const value = storage.getRaw(storageKey);\n if (value === \"light\" || value === \"dark\" || value === \"system\") return value;\n return null;\n}\n\n/**\n * Wire dark/light theming. Writes a data attribute on a target element (the\n * `<html>` element by default) and exposes the current preference via\n * {@link useTheme}.\n *\n * Pair with `themeInitScript()` in the HTML head to prevent the flash of\n * incorrect theme on first paint.\n *\n * @tempest-limits empty-catch — the theme is applied to the DOM before it is\n * persisted, so a `localStorage` write refused by quota or private mode leaves the\n * user with the theme they just picked and only forfeits it on the next load.\n * Throwing from the setter would break the switch that already worked.\n */\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = \"tempest-theme\",\n target,\n attribute = \"data-tempest-theme\",\n themeColor,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(\n () => readStored(storageKey) ?? defaultTheme,\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolve(theme));\n\n const targetRef = useLatestRef(target);\n\n const attributeKey = Array.isArray(attribute) ? attribute.join(\",\") : attribute;\n const themeColorRef = useLatestRef(themeColor);\n\n useEffect(() => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next = resolve(theme);\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n // attributeKey is the stable string form of `attribute`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const list = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (): void => {\n const element = targetRef.current?.() ?? document.documentElement;\n if (!element) return;\n const next: ResolvedTheme = list.matches ? \"dark\" : \"light\";\n applyResolved(element, next, attribute, themeColorRef.current);\n setResolvedTheme(next);\n };\n list.addEventListener(\"change\", handler);\n return () => list.removeEventListener(\"change\", handler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [theme, attributeKey]);\n\n const setTheme = useCallback(\n (next: ThemeMode) => {\n setThemeState(next);\n if (storageKey) storage.setRaw(storageKey, next);\n },\n [storageKey],\n );\n\n const toggle = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme, toggle }),\n [theme, resolvedTheme, setTheme, toggle],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Read and mutate the current theme. Must be used inside a {@link ThemeProvider}.\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside a <ThemeProvider>\");\n return ctx;\n}\n"],"mappings":";;;;;AAiBA,IAAMA,IAAeC,EAAwC,IAAI;AAgCjE,SAASC,EAAQ,GAAgC;CAG7C,OAFIC,MAAS,UAAUA,MAAS,UAAgBA,IAC5C,OAAO,SAAW,MAAoB,UACnC,OAAO,WAAW,8BAA8B,CAAC,CAAC,UAAU,SAAS;AAChF;AAMA,SAASC,EACL,GACA,GACA,GACA,GACI;CACJ,IAAMC,IAAQ,MAAM,QAAQC,CAAS,IAAIA,IAAY,CAACA,CAAS;CAC/D,KAAK,IAAMC,KAAQF,GAAO,EAAQ,aAAaE,GAAMC,CAAQ;CAC7D,IAAIC,KAAc,OAAO,WAAa,KAAa;EAC/C,IAAMC,IAAO,SAAS,cAA+B,4BAA0B;EAC/E,AAAIA,MAAM,EAAK,UAAUD,EAAWD;CACxC;AACJ;AAEA,SAASG,EAAW,GAA6C;CAC7D,IAAI,CAACC,GAAY,OAAO;CACxB,IAAMC,IAAQC,EAAQ,OAAOF,CAAU;CAEvC,OADIC,MAAU,WAAWA,MAAU,UAAUA,MAAU,WAAiBA,IACjE;AACX;AAeA,SAAgBE,EAAc,EAC1B,aACA,kBAAe,UACf,gBAAa,iBACb,WACA,eAAY,sBACZ,iBACmB;CACnB,IAAM,CAACC,GAAOC,KAAiBC,QACrBP,EAAWC,CAAU,KAAKO,CACpC,GACM,CAACC,GAAeC,KAAoBH,QAA8BhB,EAAQc,CAAK,CAAC,GAEhFM,IAAYC,EAAaC,CAAM,GAE/BC,IAAe,MAAM,QAAQnB,CAAS,IAAIA,EAAU,KAAK,GAAG,IAAIA,GAChEoB,IAAgBH,EAAad,CAAU;CAY7C,AAVAkB,QAAgB;EACZ,IAAMC,IAAUN,EAAU,UAAU,KAAK,SAAS;EAClD,IAAI,CAACM,GAAS;EACd,IAAMC,IAAO3B,EAAQc,CAAK;EAE1B,AADAZ,EAAcwB,GAASC,GAAMvB,GAAWoB,EAAc,OAAO,GAC7DL,EAAiBQ,CAAI;CAGzB,GAAG,CAACb,GAAOS,CAAY,CAAC,GAExBE,QAAgB;EACZ,IAAIX,MAAU,YAAY,OAAO,SAAW,KAAa;EACzD,IAAMc,IAAO,OAAO,WAAW,8BAA8B,GACvDC,UAAsB;GACxB,IAAMH,IAAUN,EAAU,UAAU,KAAK,SAAS;GAClD,IAAI,CAACM,GAAS;GACd,IAAMC,IAAsBC,EAAK,UAAU,SAAS;GAEpD,AADA1B,EAAcwB,GAASC,GAAMvB,GAAWoB,EAAc,OAAO,GAC7DL,EAAiBQ,CAAI;EACzB;EAEA,OADAC,EAAK,iBAAiB,UAAUC,CAAO,SAC1BD,EAAK,oBAAoB,UAAUC,CAAO;CAE3D,GAAG,CAACf,GAAOS,CAAY,CAAC;CAExB,IAAMO,IAAWC,GACZ,MAAoB;EAEjB,AADAhB,EAAcY,CAAI,GACdjB,KAAYE,EAAQ,OAAOF,GAAYiB,CAAI;CACnD,GACA,CAACjB,CAAU,CACf,GAEMsB,IAASD,QAAkB;EAC7B,EAASb,MAAkB,SAAS,UAAU,MAAM;CACxD,GAAG,CAACA,GAAeY,CAAQ,CAAC,GAEtBnB,IAAQsB,SACH;EAAE;EAAO;EAAe;EAAU;CAAO,IAChD;EAACnB;EAAOI;EAAeY;EAAUE;CAAM,CAC3C;CAEA,OAAO,kBAAClC,EAAa,UAAd;EAA8B;EAAQ;CAAgC,CAAA;AACjF;AAKA,SAAgBoC,IAA8B;CAC1C,IAAMC,IAAMC,EAAWtC,CAAY;CACnC,IAAI,CAACqC,GAAK,MAAU,MAAM,gDAAgD;CAC1E,OAAOA;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-theme.cjs","names":[],"sources":["../../src/theme/apply-theme.ts"],"sourcesContent":["/**\n * Runtime installer for a {@link GeneratedTheme}.\n *\n * A generated theme is just CSS text, so it needs a `<style>` element to take\n * effect. This owns that element by id, which keeps re-applying idempotent — a\n * theme picker can call `applyTheme` on every click without stacking dead\n * stylesheets in `<head>`.\n */\nimport type { GeneratedTheme } from \"./create-theme\";\n\n/** Options for {@link applyTheme}. */\nexport interface ApplyThemeOptions {\n /**\n * `id` of the managed `<style>` element. Reusing the same id replaces the\n * previous theme; a distinct id lets two themes coexist (e.g. a scoped\n * preview under its own selector). Default `\"tempest-theme\"`.\n */\n id?: string;\n /**\n * Node the `<style>` is appended to. Default `document.head`. Pass a shadow\n * root to theme a single web component.\n */\n target?: Document | ShadowRoot | HTMLElement;\n}\n\n/** The default `<style>` element id owned by {@link applyTheme}. */\nexport const THEME_STYLE_ID = \"tempest-theme\";\n\nfunction resolveContainer(target: ApplyThemeOptions[\"target\"]): ParentNode | null {\n if (!target) {\n return typeof document === \"undefined\" ? null : document.head;\n }\n if (typeof Document !== \"undefined\" && target instanceof Document) {\n return target.head;\n }\n return target;\n}\n\n/**\n * Install a generated theme (or raw CSS) into the document.\n *\n * Safe to call outside a browser: with no `document` it is a no-op returning a\n * no-op disposer, so app bootstrap code does not need a `typeof window` guard.\n *\n * @param theme - A {@link GeneratedTheme} from `createTheme`, or CSS text.\n * @param options - Style element id and mount target.\n * @returns A function that removes the injected `<style>` element.\n *\n * @example\n * ```ts\n * import { applyTheme, createTheme, themePresets } from \"tempest-react-sdk\";\n *\n * const dispose = applyTheme(createTheme(themePresets.violet));\n * // later: dispose();\n * ```\n */\nexport function applyTheme(\n theme: GeneratedTheme | string,\n options: ApplyThemeOptions = {},\n): () => void {\n const { id = THEME_STYLE_ID, target } = options;\n const container = resolveContainer(target);\n if (!container || typeof document === \"undefined\") {\n return () => {};\n }\n\n const css = typeof theme === \"string\" ? theme : theme.css;\n\n let style = Array.from(container.childNodes).find(\n (node): node is HTMLStyleElement => node instanceof HTMLStyleElement && node.id === id,\n );\n\n if (!style) {\n style = document.createElement(\"style\");\n style.id = id;\n container.appendChild(style);\n }\n\n style.textContent = css;\n\n return () => {\n style?.remove();\n };\n}\n\n/**\n * Read a token's computed value from an element (default: `<html>`).\n *\n * Useful to bridge CSS tokens into JS that cannot take a `var()` — canvas\n * drawing, chart libraries that set SVG attributes, `<meta name=\"theme-color\">`.\n *\n * @param name - Token name, with or without the leading `--`.\n * @param element - Element to resolve against. Omit for `document.documentElement`;\n * an explicit `null` (a ref that has not attached yet) reads nothing rather than\n * silently falling back to the root, whose value may be a different theme.\n * @returns The trimmed value, or `\"\"` when unset or outside a browser.\n */\nexport function readThemeToken(name: string, element?: Element | null): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return \"\";\n if (element === null) return \"\";\n const target = element ?? document.documentElement;\n if (!target) return \"\";\n const property = name.startsWith(\"--\") ? name : `--${name}`;\n return window.getComputedStyle(target).getPropertyValue(property).trim();\n}\n"],"mappings":"AA0BA,
|
|
1
|
+
{"version":3,"file":"apply-theme.cjs","names":["THEME_STYLE_ID","resolveContainer","target","applyTheme","options","container","css","theme","style","node","id","readThemeToken","element","property","name"],"sources":["../../src/theme/apply-theme.ts"],"sourcesContent":["/**\n * Runtime installer for a {@link GeneratedTheme}.\n *\n * A generated theme is just CSS text, so it needs a `<style>` element to take\n * effect. This owns that element by id, which keeps re-applying idempotent — a\n * theme picker can call `applyTheme` on every click without stacking dead\n * stylesheets in `<head>`.\n */\nimport type { GeneratedTheme } from \"./create-theme\";\n\n/** Options for {@link applyTheme}. */\nexport interface ApplyThemeOptions {\n /**\n * `id` of the managed `<style>` element. Reusing the same id replaces the\n * previous theme; a distinct id lets two themes coexist (e.g. a scoped\n * preview under its own selector). Default `\"tempest-theme\"`.\n */\n id?: string;\n /**\n * Node the `<style>` is appended to. Default `document.head`. Pass a shadow\n * root to theme a single web component.\n */\n target?: Document | ShadowRoot | HTMLElement;\n}\n\n/** The default `<style>` element id owned by {@link applyTheme}. */\nexport const THEME_STYLE_ID = \"tempest-theme\";\n\nfunction resolveContainer(target: ApplyThemeOptions[\"target\"]): ParentNode | null {\n if (!target) {\n return typeof document === \"undefined\" ? null : document.head;\n }\n if (typeof Document !== \"undefined\" && target instanceof Document) {\n return target.head;\n }\n return target;\n}\n\n/**\n * Install a generated theme (or raw CSS) into the document.\n *\n * Safe to call outside a browser: with no `document` it is a no-op returning a\n * no-op disposer, so app bootstrap code does not need a `typeof window` guard.\n *\n * @param theme - A {@link GeneratedTheme} from `createTheme`, or CSS text.\n * @param options - Style element id and mount target.\n * @returns A function that removes the injected `<style>` element.\n *\n * @example\n * ```ts\n * import { applyTheme, createTheme, themePresets } from \"tempest-react-sdk\";\n *\n * const dispose = applyTheme(createTheme(themePresets.violet));\n * // later: dispose();\n * ```\n */\nexport function applyTheme(\n theme: GeneratedTheme | string,\n options: ApplyThemeOptions = {},\n): () => void {\n const { id = THEME_STYLE_ID, target } = options;\n const container = resolveContainer(target);\n if (!container || typeof document === \"undefined\") {\n return () => {};\n }\n\n const css = typeof theme === \"string\" ? theme : theme.css;\n\n let style = Array.from(container.childNodes).find(\n (node): node is HTMLStyleElement => node instanceof HTMLStyleElement && node.id === id,\n );\n\n if (!style) {\n style = document.createElement(\"style\");\n style.id = id;\n container.appendChild(style);\n }\n\n style.textContent = css;\n\n return () => {\n style?.remove();\n };\n}\n\n/**\n * Read a token's computed value from an element (default: `<html>`).\n *\n * Useful to bridge CSS tokens into JS that cannot take a `var()` — canvas\n * drawing, chart libraries that set SVG attributes, `<meta name=\"theme-color\">`.\n *\n * @param name - Token name, with or without the leading `--`.\n * @param element - Element to resolve against. Omit for `document.documentElement`;\n * an explicit `null` (a ref that has not attached yet) reads nothing rather than\n * silently falling back to the root, whose value may be a different theme.\n * @returns The trimmed value, or `\"\"` when unset or outside a browser.\n */\nexport function readThemeToken(name: string, element?: Element | null): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return \"\";\n if (element === null) return \"\";\n const target = element ?? document.documentElement;\n if (!target) return \"\";\n const property = name.startsWith(\"--\") ? name : `--${name}`;\n return window.getComputedStyle(target).getPropertyValue(property).trim();\n}\n"],"mappings":"AA0BA,IAAaA,EAAiB,gBAE9B,SAASC,EAAiB,EAAwD,CAO9E,OANKC,EAGD,OAAO,SAAa,KAAeA,aAAkB,SAC9CA,EAAO,KAEXA,EALI,OAAO,SAAa,IAAc,KAAO,SAAS,IAMjE,CAoBA,SAAgBC,EACZ,EACA,EAA6B,CAAC,EACpB,CACV,GAAM,CAAE,KAAKH,EAAgB,UAAWI,EAClCC,EAAYJ,EAAiBC,CAAM,EACzC,GAAI,CAACG,GAAa,OAAO,SAAa,IAClC,UAAa,CAAC,EAGlB,IAAMC,EAAM,OAAOC,GAAU,SAAWA,EAAQA,EAAM,IAElDC,EAAQ,MAAM,KAAKH,EAAU,UAAU,CAAC,CAAC,KACxC,GAAmCI,aAAgB,kBAAoBA,EAAK,KAAOC,CACxF,EAUA,OARKF,IACD,EAAQ,SAAS,cAAc,OAAO,EACtC,EAAM,GAAKE,EACXL,EAAU,YAAYG,CAAK,GAG/B,EAAM,YAAcF,MAEP,CACTE,GAAO,OAAO,CAClB,CACJ,CAcA,SAAgBG,EAAe,EAAc,EAAkC,CAE3E,GADI,OAAO,OAAW,KAAe,OAAO,SAAa,KACrDC,IAAY,KAAM,MAAO,GAC7B,IAAMV,EAASU,GAAW,SAAS,gBACnC,GAAI,CAACV,EAAQ,MAAO,GACpB,IAAMW,EAAWC,EAAK,WAAW,IAAI,EAAIA,EAAO,KAAKA,IACrD,OAAO,OAAO,iBAAiBZ,CAAM,CAAC,CAAC,iBAAiBW,CAAQ,CAAC,CAAC,KAAK,CAC3E,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-theme.js","names":[],"sources":["../../src/theme/apply-theme.ts"],"sourcesContent":["/**\n * Runtime installer for a {@link GeneratedTheme}.\n *\n * A generated theme is just CSS text, so it needs a `<style>` element to take\n * effect. This owns that element by id, which keeps re-applying idempotent — a\n * theme picker can call `applyTheme` on every click without stacking dead\n * stylesheets in `<head>`.\n */\nimport type { GeneratedTheme } from \"./create-theme\";\n\n/** Options for {@link applyTheme}. */\nexport interface ApplyThemeOptions {\n /**\n * `id` of the managed `<style>` element. Reusing the same id replaces the\n * previous theme; a distinct id lets two themes coexist (e.g. a scoped\n * preview under its own selector). Default `\"tempest-theme\"`.\n */\n id?: string;\n /**\n * Node the `<style>` is appended to. Default `document.head`. Pass a shadow\n * root to theme a single web component.\n */\n target?: Document | ShadowRoot | HTMLElement;\n}\n\n/** The default `<style>` element id owned by {@link applyTheme}. */\nexport const THEME_STYLE_ID = \"tempest-theme\";\n\nfunction resolveContainer(target: ApplyThemeOptions[\"target\"]): ParentNode | null {\n if (!target) {\n return typeof document === \"undefined\" ? null : document.head;\n }\n if (typeof Document !== \"undefined\" && target instanceof Document) {\n return target.head;\n }\n return target;\n}\n\n/**\n * Install a generated theme (or raw CSS) into the document.\n *\n * Safe to call outside a browser: with no `document` it is a no-op returning a\n * no-op disposer, so app bootstrap code does not need a `typeof window` guard.\n *\n * @param theme - A {@link GeneratedTheme} from `createTheme`, or CSS text.\n * @param options - Style element id and mount target.\n * @returns A function that removes the injected `<style>` element.\n *\n * @example\n * ```ts\n * import { applyTheme, createTheme, themePresets } from \"tempest-react-sdk\";\n *\n * const dispose = applyTheme(createTheme(themePresets.violet));\n * // later: dispose();\n * ```\n */\nexport function applyTheme(\n theme: GeneratedTheme | string,\n options: ApplyThemeOptions = {},\n): () => void {\n const { id = THEME_STYLE_ID, target } = options;\n const container = resolveContainer(target);\n if (!container || typeof document === \"undefined\") {\n return () => {};\n }\n\n const css = typeof theme === \"string\" ? theme : theme.css;\n\n let style = Array.from(container.childNodes).find(\n (node): node is HTMLStyleElement => node instanceof HTMLStyleElement && node.id === id,\n );\n\n if (!style) {\n style = document.createElement(\"style\");\n style.id = id;\n container.appendChild(style);\n }\n\n style.textContent = css;\n\n return () => {\n style?.remove();\n };\n}\n\n/**\n * Read a token's computed value from an element (default: `<html>`).\n *\n * Useful to bridge CSS tokens into JS that cannot take a `var()` — canvas\n * drawing, chart libraries that set SVG attributes, `<meta name=\"theme-color\">`.\n *\n * @param name - Token name, with or without the leading `--`.\n * @param element - Element to resolve against. Omit for `document.documentElement`;\n * an explicit `null` (a ref that has not attached yet) reads nothing rather than\n * silently falling back to the root, whose value may be a different theme.\n * @returns The trimmed value, or `\"\"` when unset or outside a browser.\n */\nexport function readThemeToken(name: string, element?: Element | null): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return \"\";\n if (element === null) return \"\";\n const target = element ?? document.documentElement;\n if (!target) return \"\";\n const property = name.startsWith(\"--\") ? name : `--${name}`;\n return window.getComputedStyle(target).getPropertyValue(property).trim();\n}\n"],"mappings":";AA0BA,
|
|
1
|
+
{"version":3,"file":"apply-theme.js","names":["THEME_STYLE_ID","resolveContainer","target","applyTheme","options","container","css","theme","style","node","id","readThemeToken","element","property","name"],"sources":["../../src/theme/apply-theme.ts"],"sourcesContent":["/**\n * Runtime installer for a {@link GeneratedTheme}.\n *\n * A generated theme is just CSS text, so it needs a `<style>` element to take\n * effect. This owns that element by id, which keeps re-applying idempotent — a\n * theme picker can call `applyTheme` on every click without stacking dead\n * stylesheets in `<head>`.\n */\nimport type { GeneratedTheme } from \"./create-theme\";\n\n/** Options for {@link applyTheme}. */\nexport interface ApplyThemeOptions {\n /**\n * `id` of the managed `<style>` element. Reusing the same id replaces the\n * previous theme; a distinct id lets two themes coexist (e.g. a scoped\n * preview under its own selector). Default `\"tempest-theme\"`.\n */\n id?: string;\n /**\n * Node the `<style>` is appended to. Default `document.head`. Pass a shadow\n * root to theme a single web component.\n */\n target?: Document | ShadowRoot | HTMLElement;\n}\n\n/** The default `<style>` element id owned by {@link applyTheme}. */\nexport const THEME_STYLE_ID = \"tempest-theme\";\n\nfunction resolveContainer(target: ApplyThemeOptions[\"target\"]): ParentNode | null {\n if (!target) {\n return typeof document === \"undefined\" ? null : document.head;\n }\n if (typeof Document !== \"undefined\" && target instanceof Document) {\n return target.head;\n }\n return target;\n}\n\n/**\n * Install a generated theme (or raw CSS) into the document.\n *\n * Safe to call outside a browser: with no `document` it is a no-op returning a\n * no-op disposer, so app bootstrap code does not need a `typeof window` guard.\n *\n * @param theme - A {@link GeneratedTheme} from `createTheme`, or CSS text.\n * @param options - Style element id and mount target.\n * @returns A function that removes the injected `<style>` element.\n *\n * @example\n * ```ts\n * import { applyTheme, createTheme, themePresets } from \"tempest-react-sdk\";\n *\n * const dispose = applyTheme(createTheme(themePresets.violet));\n * // later: dispose();\n * ```\n */\nexport function applyTheme(\n theme: GeneratedTheme | string,\n options: ApplyThemeOptions = {},\n): () => void {\n const { id = THEME_STYLE_ID, target } = options;\n const container = resolveContainer(target);\n if (!container || typeof document === \"undefined\") {\n return () => {};\n }\n\n const css = typeof theme === \"string\" ? theme : theme.css;\n\n let style = Array.from(container.childNodes).find(\n (node): node is HTMLStyleElement => node instanceof HTMLStyleElement && node.id === id,\n );\n\n if (!style) {\n style = document.createElement(\"style\");\n style.id = id;\n container.appendChild(style);\n }\n\n style.textContent = css;\n\n return () => {\n style?.remove();\n };\n}\n\n/**\n * Read a token's computed value from an element (default: `<html>`).\n *\n * Useful to bridge CSS tokens into JS that cannot take a `var()` — canvas\n * drawing, chart libraries that set SVG attributes, `<meta name=\"theme-color\">`.\n *\n * @param name - Token name, with or without the leading `--`.\n * @param element - Element to resolve against. Omit for `document.documentElement`;\n * an explicit `null` (a ref that has not attached yet) reads nothing rather than\n * silently falling back to the root, whose value may be a different theme.\n * @returns The trimmed value, or `\"\"` when unset or outside a browser.\n */\nexport function readThemeToken(name: string, element?: Element | null): string {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return \"\";\n if (element === null) return \"\";\n const target = element ?? document.documentElement;\n if (!target) return \"\";\n const property = name.startsWith(\"--\") ? name : `--${name}`;\n return window.getComputedStyle(target).getPropertyValue(property).trim();\n}\n"],"mappings":";AA0BA,IAAaA,IAAiB;AAE9B,SAASC,EAAiB,GAAwD;CAO9E,OANKC,IAGD,OAAO,WAAa,OAAeA,aAAkB,WAC9CA,EAAO,OAEXA,IALI,OAAO,WAAa,MAAc,OAAO,SAAS;AAMjE;AAoBA,SAAgBC,EACZ,GACA,IAA6B,CAAC,GACpB;CACV,IAAM,EAAE,QAAKH,GAAgB,cAAWI,GAClCC,IAAYJ,EAAiBC,CAAM;CACzC,IAAI,CAACG,KAAa,OAAO,WAAa,KAClC,aAAa,CAAC;CAGlB,IAAMC,IAAM,OAAOC,KAAU,WAAWA,IAAQA,EAAM,KAElDC,IAAQ,MAAM,KAAKH,EAAU,UAAU,CAAC,CAAC,MACxC,MAAmCI,aAAgB,oBAAoBA,EAAK,OAAOC,CACxF;CAUA,OARKF,MACD,IAAQ,SAAS,cAAc,OAAO,GACtC,EAAM,KAAKE,GACXL,EAAU,YAAYG,CAAK,IAG/B,EAAM,cAAcF,SAEP;EACT,GAAO,OAAO;CAClB;AACJ;AAcA,SAAgBK,EAAe,GAAc,GAAkC;CAE3E,IADI,OAAO,SAAW,OAAe,OAAO,WAAa,OACrDC,MAAY,MAAM,OAAO;CAC7B,IAAMV,IAASU,KAAW,SAAS;CACnC,IAAI,CAACV,GAAQ,OAAO;CACpB,IAAMW,IAAWC,EAAK,WAAW,IAAI,IAAIA,IAAO,KAAKA;CACrD,OAAO,OAAO,iBAAiBZ,CAAM,CAAC,CAAC,iBAAiBW,CAAQ,CAAC,CAAC,KAAK;AAC3E"}
|
package/dist/theme/color.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.cjs","names":[],"sources":["../../src/theme/color.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines — OKLCH ↔ sRGB with the gamut mapping in between: the\n * transfer function, the LMS matrices, the chroma search that finds the nearest in-\n * gamut colour and the contrast ratio used to check it. Matrices split across files\n * are matrices that get edited one half at a time.\n */\n/**\n * Color math behind {@link createTheme} — OKLab/OKLCH conversions, tint scale\n * generation and WCAG contrast picking.\n *\n * Everything here is pure and dependency-free: the SDK generates brand ramps at\n * runtime in the browser, so a color library would be a disproportionate cost\n * for ~150 lines of well-specified math. OKLCH is used instead of HSL because\n * HSL lightness is not perceptual — an HSL ramp of a yellow and of a blue at the\n * same `L` read as wildly different brightness, which is exactly what breaks a\n * generated palette.\n */\n\n/** A color in the OKLCH space: perceptual lightness, chroma and hue. */\nexport interface Oklch {\n /** Perceptual lightness, `0` (black) to `1` (white). */\n l: number;\n /** Chroma (colorfulness). `0` is gray; sRGB rarely exceeds `~0.37`. */\n c: number;\n /** Hue angle in degrees, `0`–`360`. */\n h: number;\n}\n\n/** The ten steps of a Tempest tint scale, lightest to darkest. */\nexport type ScaleStep = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n\n/** A generated tint scale, keyed by step. */\nexport type ColorScale = Record<ScaleStep, string>;\n\nconst SCALE_STEPS: ScaleStep[] = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];\n\n/**\n * Target lightness per step for a **brand** ramp in light mode.\n *\n * These are the measured OKLCH lightnesses of the hand-written `--tempest-primary-*`\n * scale in `colors.css`, so a generated brand ramp lands in the same visual range\n * as the built-in one instead of merely near it.\n */\nconst LIGHT_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.966,\n 100: 0.923,\n 200: 0.844,\n 300: 0.743,\n 400: 0.642,\n 500: 0.563,\n 600: 0.48,\n 700: 0.391,\n 800: 0.325,\n 900: 0.251,\n};\n\n/**\n * Target lightness per step for a **neutral** ramp in light mode — measured from\n * the hand-written `--tempest-gray-*` scale.\n *\n * Deliberately **wider** than the brand curve at both ends (`0.982` → `0.210` vs\n * `0.966` → `0.251`): a neutral carries surfaces that must read as near-white and\n * text that must read as near-black, and the pair `text-muted` on `surface-3` has\n * to clear AA. Reusing the brand curve for neutrals is what dropped that pair to\n * 3.5:1 and made the browser axe sweep fail on every generated theme.\n */\nconst NEUTRAL_LIGHT_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.982,\n 100: 0.963,\n 200: 0.927,\n 300: 0.872,\n 400: 0.71,\n 500: 0.544,\n 600: 0.442,\n 700: 0.369,\n 800: 0.278,\n 900: 0.21,\n};\n\n/**\n * Neutral ramp for dark mode, measured from the `[data-tempest-theme=\"dark\"]`\n * surface/text tokens: `50` is the page background and `900` is text-grade.\n */\nconst NEUTRAL_DARK_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.159,\n 100: 0.205,\n 200: 0.254,\n 300: 0.314,\n 400: 0.381,\n 500: 0.5,\n 600: 0.571,\n 700: 0.762,\n 800: 0.86,\n 900: 0.964,\n};\n\n/**\n * Target lightness for a dark-theme ramp — the ramp is **inverted**: `50` is the\n * darkest tint (a surface) and `900` the lightest (text-grade), matching the\n * `[data-tempest-theme=\"dark\"]` block in `colors.css`.\n */\nconst DARK_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.238,\n 100: 0.288,\n 200: 0.362,\n 300: 0.452,\n 400: 0.544,\n 500: 0.632,\n 600: 0.712,\n 700: 0.788,\n 800: 0.862,\n 900: 0.928,\n};\n\n/**\n * Chroma multiplier per step, relative to the input color's chroma.\n *\n * Peaks around `500`–`600` and falls off at both ends: near-white and near-black\n * tints hold very little chroma before they look muddy or leave the sRGB gamut.\n */\nconst CHROMA_CURVE: Record<ScaleStep, number> = {\n 50: 0.18,\n 100: 0.34,\n 200: 0.6,\n 300: 0.82,\n 400: 0.95,\n 500: 1,\n 600: 0.98,\n 700: 0.88,\n 800: 0.74,\n 900: 0.58,\n};\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** Expand `#abc` to `#aabbcc` and normalize to a lowercase 6-digit hex. */\nfunction normalizeHex(hex: string): string {\n const raw = hex.trim().replace(/^#/, \"\");\n const expanded =\n raw.length === 3 || raw.length === 4\n ? raw\n .slice(0, 3)\n .split(\"\")\n .map((char) => char + char)\n .join(\"\")\n : raw.slice(0, 6);\n if (!/^[0-9a-fA-F]{6}$/.test(expanded)) {\n throw new Error(`Invalid hex color: \"${hex}\"`);\n }\n return `#${expanded.toLowerCase()}`;\n}\n\n/** Parse a hex color into sRGB channels in the `0`–`1` range. */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } {\n const normalized = normalizeHex(hex).slice(1);\n return {\n r: parseInt(normalized.slice(0, 2), 16) / 255,\n g: parseInt(normalized.slice(2, 4), 16) / 255,\n b: parseInt(normalized.slice(4, 6), 16) / 255,\n };\n}\n\n/** Serialize sRGB channels (`0`–`1`, clamped) back to a `#rrggbb` string. */\nexport function rgbToHex(r: number, g: number, b: number): string {\n const channel = (value: number): string =>\n Math.round(clamp(value, 0, 1) * 255)\n .toString(16)\n .padStart(2, \"0\");\n return `#${channel(r)}${channel(g)}${channel(b)}`;\n}\n\nfunction srgbToLinear(channel: number): number {\n return channel <= 0.04045 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n}\n\nfunction linearToSrgb(channel: number): number {\n return channel <= 0.0031308 ? channel * 12.92 : 1.055 * Math.pow(channel, 1 / 2.4) - 0.055;\n}\n\n/** Convert a hex color to OKLCH. */\nexport function hexToOklch(hex: string): Oklch {\n const { r, g, b } = hexToRgb(hex);\n const lr = srgbToLinear(r);\n const lg = srgbToLinear(g);\n const lb = srgbToLinear(b);\n\n const long = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n const medium = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n const short = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n const l = 0.2104542553 * long + 0.793617785 * medium - 0.0040720468 * short;\n const a = 1.9779984951 * long - 2.428592205 * medium + 0.4505937099 * short;\n const bAxis = 0.0259040371 * long + 0.7827717662 * medium - 0.808675766 * short;\n\n const c = Math.sqrt(a * a + bAxis * bAxis);\n const hue = c < 1e-6 ? 0 : (Math.atan2(bAxis, a) * 180) / Math.PI;\n\n return { l, c, h: hue < 0 ? hue + 360 : hue };\n}\n\n/** Convert OKLCH to linear-light sRGB, without gamut clamping. */\nfunction oklchToLinearRgb({ l, c, h }: Oklch): { r: number; g: number; b: number } {\n const hRad = (h * Math.PI) / 180;\n const a = Math.cos(hRad) * c;\n const bAxis = Math.sin(hRad) * c;\n\n const long = (l + 0.3963377774 * a + 0.2158037573 * bAxis) ** 3;\n const medium = (l - 0.1055613458 * a - 0.0638541728 * bAxis) ** 3;\n const short = (l - 0.0894841775 * a - 1.291485548 * bAxis) ** 3;\n\n return {\n r: 4.0767416621 * long - 3.3077115913 * medium + 0.2309699292 * short,\n g: -1.2684380046 * long + 2.6097574011 * medium - 0.3413193965 * short,\n b: -0.0041960863 * long - 0.7034186147 * medium + 1.707614701 * short,\n };\n}\n\nfunction inGamut({ r, g, b }: { r: number; g: number; b: number }): boolean {\n const epsilon = 1e-4;\n return (\n r >= -epsilon &&\n r <= 1 + epsilon &&\n g >= -epsilon &&\n g <= 1 + epsilon &&\n b >= -epsilon &&\n b <= 1 + epsilon\n );\n}\n\n/**\n * Convert OKLCH to a hex color, reducing chroma until the result fits sRGB.\n *\n * Lightness and hue are preserved: desaturating is far less noticeable than\n * shifting either of them, and a naive channel clamp would do both.\n */\nexport function oklchToHex(color: Oklch): string {\n let chroma = Math.max(0, color.c);\n let rgb = oklchToLinearRgb({ ...color, c: chroma });\n\n for (let i = 0; i < 24 && !inGamut(rgb); i += 1) {\n chroma *= 0.9;\n rgb = oklchToLinearRgb({ ...color, c: chroma });\n }\n\n return rgbToHex(linearToSrgb(rgb.r), linearToSrgb(rgb.g), linearToSrgb(rgb.b));\n}\n\n/** Options for {@link createColorScale}. */\nexport interface ColorScaleOptions {\n /**\n * Pin step `500` to the input color's exact lightness. Default `true`.\n *\n * Right for a **brand** color: the hex a designer hands over is the one the\n * buttons must be. Wrong for a **neutral**: nobody checks that `gray-500` is\n * exactly the input, while everybody notices that a surface stopped being\n * near-white — anchoring rescales both halves around the input and compresses\n * exactly the range a neutral needs wide. With `false`, the ramp keeps the\n * tuned lightness curve and the input only contributes hue and chroma (a warm\n * or cool neutral, as asked).\n */\n anchor?: boolean;\n /**\n * Use the neutral lightness curve instead of the brand one. Default `false`.\n *\n * The neutral curve is wider at both ends, which is what keeps\n * `text-muted`-on-`surface-3` above AA. Implies the ramp is meant for\n * surfaces, borders and text rather than for an action color.\n */\n neutral?: boolean;\n}\n\n/**\n * Build a ten-step tint scale from a single color.\n *\n * The input color's hue is kept throughout and its chroma sets the intensity of\n * the whole ramp, so a muted brand color yields a muted scale instead of being\n * \"corrected\" into something the brand never approved.\n *\n * @param hex - Any hex color (`#abc` or `#aabbcc`), the intended `500` step.\n * @param mode - `\"light\"` for a light→dark ramp, `\"dark\"` for the inverted ramp\n * used under `[data-tempest-theme=\"dark\"]`.\n * @param options - See {@link ColorScaleOptions}.\n */\nexport function createColorScale(\n hex: string,\n mode: \"light\" | \"dark\" = \"light\",\n options: ColorScaleOptions = {},\n): ColorScale {\n const base = hexToOklch(hex);\n const targets = options.neutral\n ? mode === \"dark\"\n ? NEUTRAL_DARK_LIGHTNESS\n : NEUTRAL_LIGHT_LIGHTNESS\n : mode === \"dark\"\n ? DARK_LIGHTNESS\n : LIGHT_LIGHTNESS;\n const lightness =\n options.anchor === false ? targets : anchorLightnessAt500(targets, base.l, mode);\n const scale = {} as ColorScale;\n\n for (const step of SCALE_STEPS) {\n scale[step] = oklchToHex({\n l: lightness[step],\n c: base.c * CHROMA_CURVE[step],\n h: base.h,\n });\n }\n\n return scale;\n}\n\n/** Widest lightness band a generated ramp may span, so both ends stay usable. */\nconst LIGHTNESS_CEILING = 0.985;\nconst LIGHTNESS_FLOOR = 0.12;\n\n/**\n * Re-anchor a lightness ramp so step `500` lands on the brand color exactly.\n *\n * Without this, `500` is forced onto the ramp's own target lightness: a brand\n * `#7c3aed` came back as `#9161fe` — same hue, same chroma, *re-lightened*. It\n * looks fine in isolation and is wrong anyway, because the one color a designer\n * hands over is the one the buttons must actually be.\n *\n * Each half of the ramp is scaled independently around the anchor, so the shape\n * of the original curve survives and the ramp stays monotonic even for a very\n * light brand (yellow) or a very dark one (navy) — those simply get a shorter\n * run on the crowded side.\n *\n * @param targets - The default per-step lightness for this scheme.\n * @param anchor - Lightness of the brand color, used verbatim at step `500`.\n * @param mode - `\"dark\"` inverts which side of the ramp is the light one.\n */\nfunction anchorLightnessAt500(\n targets: Record<ScaleStep, number>,\n anchor: number,\n mode: \"light\" | \"dark\",\n): Record<ScaleStep, number> {\n const anchored = {} as Record<ScaleStep, number>;\n const base = targets[500];\n const lightEnd = mode === \"dark\" ? targets[900] : targets[50];\n const darkEnd = mode === \"dark\" ? targets[50] : targets[900];\n\n const top = Math.min(LIGHTNESS_CEILING, Math.max(lightEnd, anchor + 0.05));\n const bottom = Math.max(LIGHTNESS_FLOOR, Math.min(darkEnd, anchor - 0.05));\n\n for (const step of SCALE_STEPS) {\n const target = targets[step];\n if (target === base) {\n anchored[step] = anchor;\n } else if (target > base) {\n const ratio = (target - base) / (lightEnd - base);\n anchored[step] = anchor + ratio * (top - anchor);\n } else {\n const ratio = (base - target) / (base - darkEnd);\n anchored[step] = anchor - ratio * (anchor - bottom);\n }\n }\n\n return anchored;\n}\n\n/** WCAG 2.x relative luminance of a hex color. */\nexport function relativeLuminance(hex: string): number {\n const { r, g, b } = hexToRgb(hex);\n return 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);\n}\n\n/** WCAG 2.x contrast ratio between two hex colors, from `1` to `21`. */\nexport function contrastRatio(a: string, b: string): number {\n const la = relativeLuminance(a);\n const lb = relativeLuminance(b);\n const lighter = Math.max(la, lb);\n const darker = Math.min(la, lb);\n return (lighter + 0.05) / (darker + 0.05);\n}\n\n/**\n * Pick the readable foreground for a background, by contrast ratio.\n *\n * Used for `--tempest-primary-foreground`: a generated brand color can land\n * anywhere on the lightness axis, and hardcoding white would silently produce\n * unreadable buttons for light brands (yellow, lime, cyan).\n */\nexport function readableForeground(\n background: string,\n light = \"#ffffff\",\n dark = \"#101828\",\n): string {\n return contrastRatio(background, light) >= contrastRatio(background, dark) ? light : dark;\n}\n\n/** Format a hex color as `rgb(r g b / alpha)`, for focus rings and overlays. */\nexport function hexToRgbaString(hex: string, alpha: number): string {\n const { r, g, b } = hexToRgb(hex);\n const channel = (value: number): number => Math.round(clamp(value, 0, 1) * 255);\n return `rgb(${channel(r)} ${channel(g)} ${channel(b)} / ${clamp(alpha, 0, 1)})`;\n}\n"],"mappings":"AAkCA,IAAM,EAA2B,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAS3E,EAA6C,CAC/C,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACT,EAYM,EAAqD,CACvD,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,GACT,EAMM,EAAoD,CACtD,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,GACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACT,EAOM,EAA4C,CAC9C,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACT,EAQM,EAA0C,CAC5C,GAAI,IACJ,IAAK,IACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,EACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,GACT,EAEA,SAAS,EAAM,EAAe,EAAa,EAAqB,CAC5D,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,CAAK,CAAC,CAC7C,CAGA,SAAS,EAAa,EAAqB,CACvC,IAAM,EAAM,EAAI,KAAK,CAAC,CAAC,QAAQ,KAAM,EAAE,EACjC,EACF,EAAI,SAAW,GAAK,EAAI,SAAW,EAC7B,EACK,MAAM,EAAG,CAAC,CAAC,CACX,MAAM,EAAE,CAAC,CACT,IAAK,GAAS,EAAO,CAAI,CAAC,CAC1B,KAAK,EAAE,EACZ,EAAI,MAAM,EAAG,CAAC,EACxB,GAAI,CAAC,mBAAmB,KAAK,CAAQ,EACjC,MAAU,MAAM,uBAAuB,EAAI,EAAE,EAEjD,MAAO,IAAI,EAAS,YAAY,GACpC,CAGA,SAAgB,EAAS,EAAkD,CACvE,IAAM,EAAa,EAAa,CAAG,CAAC,CAAC,MAAM,CAAC,EAC5C,MAAO,CACH,EAAG,SAAS,EAAW,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,IAC1C,EAAG,SAAS,EAAW,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,IAC1C,EAAG,SAAS,EAAW,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,GAC9C,CACJ,CAGA,SAAgB,EAAS,EAAW,EAAW,EAAmB,CAC9D,IAAM,EAAW,GACb,KAAK,MAAM,EAAM,EAAO,EAAG,CAAC,EAAI,GAAG,CAAC,CAC/B,SAAS,EAAE,CAAC,CACZ,SAAS,EAAG,GAAG,EACxB,MAAO,IAAI,EAAQ,CAAC,IAAI,EAAQ,CAAC,IAAI,EAAQ,CAAC,GAClD,CAEA,SAAS,EAAa,EAAyB,CAC3C,OAAO,GAAW,OAAU,EAAU,QAAkB,EAAU,MAAS,QAAO,GACtF,CAEA,SAAS,EAAa,EAAyB,CAC3C,OAAO,GAAW,SAAY,EAAU,MAAQ,MAAiB,IAAS,EAAI,KAAO,IACzF,CAGA,SAAgB,EAAW,EAAoB,CAC3C,GAAM,CAAE,IAAG,IAAG,KAAM,EAAS,CAAG,EAC1B,EAAK,EAAa,CAAC,EACnB,EAAK,EAAa,CAAC,EACnB,EAAK,EAAa,CAAC,EAEnB,EAAO,KAAK,KAAK,YAAe,EAAK,YAAe,EAAK,YAAe,CAAE,EAC1E,EAAS,KAAK,KAAK,YAAe,EAAK,YAAe,EAAK,YAAe,CAAE,EAC5E,EAAQ,KAAK,KAAK,YAAe,EAAK,YAAe,EAAK,YAAe,CAAE,EAE3E,EAAI,YAAe,EAAO,WAAc,EAAS,YAAe,EAChE,EAAI,aAAe,EAAO,YAAc,EAAS,YAAe,EAChE,EAAQ,YAAe,EAAO,YAAe,EAAS,WAAc,EAEpE,EAAI,KAAK,KAAK,EAAI,EAAI,EAAQ,CAAK,EACnC,EAAM,EAAI,KAAO,EAAK,KAAK,MAAM,EAAO,CAAC,EAAI,IAAO,KAAK,GAE/D,MAAO,CAAE,IAAG,IAAG,EAAG,EAAM,EAAI,EAAM,IAAM,CAAI,CAChD,CAGA,SAAS,EAAiB,CAAE,IAAG,IAAG,KAAiD,CAC/E,IAAM,EAAQ,EAAI,KAAK,GAAM,IACvB,EAAI,KAAK,IAAI,CAAI,EAAI,EACrB,EAAQ,KAAK,IAAI,CAAI,EAAI,EAEzB,GAAQ,EAAI,YAAe,EAAI,YAAe,IAAU,EACxD,GAAU,EAAI,YAAe,EAAI,YAAe,IAAU,EAC1D,GAAS,EAAI,YAAe,EAAI,YAAc,IAAU,EAE9D,MAAO,CACH,EAAG,aAAe,EAAO,aAAe,EAAS,YAAe,EAChE,EAAG,cAAgB,EAAO,aAAe,EAAS,YAAe,EACjE,EAAG,aAAgB,EAAO,YAAe,EAAS,YAAc,CACpE,CACJ,CAEA,SAAS,EAAQ,CAAE,IAAG,IAAG,KAAmD,CAExE,OACI,GAAK,OACL,GAAK,QACL,GAAK,OACL,GAAK,QACL,GAAK,OACL,GAAK,MAEb,CAQA,SAAgB,EAAW,EAAsB,CAC7C,IAAI,EAAS,KAAK,IAAI,EAAG,EAAM,CAAC,EAC5B,EAAM,EAAiB,CAAE,GAAG,EAAO,EAAG,CAAO,CAAC,EAElD,IAAK,IAAI,EAAI,EAAG,EAAI,IAAM,CAAC,EAAQ,CAAG,EAAG,GAAK,EAC1C,GAAU,GACV,EAAM,EAAiB,CAAE,GAAG,EAAO,EAAG,CAAO,CAAC,EAGlD,OAAO,EAAS,EAAa,EAAI,CAAC,EAAG,EAAa,EAAI,CAAC,EAAG,EAAa,EAAI,CAAC,CAAC,CACjF,CAsCA,SAAgB,EACZ,EACA,EAAyB,QACzB,EAA6B,CAAC,EACpB,CACV,IAAM,EAAO,EAAW,CAAG,EACrB,EAAU,EAAQ,QAClB,IAAS,OACL,EACA,EACJ,IAAS,OACP,EACA,EACF,EACF,EAAQ,SAAW,GAAQ,EAAU,EAAqB,EAAS,EAAK,EAAG,CAAI,EAC7E,EAAQ,CAAC,EAEf,IAAK,IAAM,KAAQ,EACf,EAAM,GAAQ,EAAW,CACrB,EAAG,EAAU,GACb,EAAG,EAAK,EAAI,EAAa,GACzB,EAAG,EAAK,CACZ,CAAC,EAGL,OAAO,CACX,CAGA,IAAM,EAAoB,KACpB,EAAkB,IAmBxB,SAAS,EACL,EACA,EACA,EACyB,CACzB,IAAM,EAAW,CAAC,EACZ,EAAO,EAAQ,KACf,EAAW,IAAS,OAAS,EAAQ,KAAO,EAAQ,IACpD,EAAU,IAAS,OAAS,EAAQ,IAAM,EAAQ,KAElD,EAAM,KAAK,IAAI,EAAmB,KAAK,IAAI,EAAU,EAAS,GAAI,CAAC,EACnE,EAAS,KAAK,IAAI,EAAiB,KAAK,IAAI,EAAS,EAAS,GAAI,CAAC,EAEzE,IAAK,IAAM,KAAQ,EAAa,CAC5B,IAAM,EAAS,EAAQ,GACvB,AAOI,EAAS,GAPT,IAAW,EACM,EACV,EAAS,EAEC,GADF,EAAS,IAAS,EAAW,IACT,EAAM,GAGxB,GADF,EAAO,IAAW,EAAO,IACL,EAAS,EAEpD,CAEA,OAAO,CACX,CAGA,SAAgB,EAAkB,EAAqB,CACnD,GAAM,CAAE,IAAG,IAAG,KAAM,EAAS,CAAG,EAChC,MAAO,OAAS,EAAa,CAAC,EAAI,MAAS,EAAa,CAAC,EAAI,MAAS,EAAa,CAAC,CACxF,CAGA,SAAgB,EAAc,EAAW,EAAmB,CACxD,IAAM,EAAK,EAAkB,CAAC,EACxB,EAAK,EAAkB,CAAC,EACxB,EAAU,KAAK,IAAI,EAAI,CAAE,EACzB,EAAS,KAAK,IAAI,EAAI,CAAE,EAC9B,OAAQ,EAAU,MAAS,EAAS,IACxC,CASA,SAAgB,EACZ,EACA,EAAQ,UACR,EAAO,UACD,CACN,OAAO,EAAc,EAAY,CAAK,GAAK,EAAc,EAAY,CAAI,EAAI,EAAQ,CACzF,CAGA,SAAgB,EAAgB,EAAa,EAAuB,CAChE,GAAM,CAAE,IAAG,IAAG,KAAM,EAAS,CAAG,EAC1B,EAAW,GAA0B,KAAK,MAAM,EAAM,EAAO,EAAG,CAAC,EAAI,GAAG,EAC9E,MAAO,OAAO,EAAQ,CAAC,EAAE,GAAG,EAAQ,CAAC,EAAE,GAAG,EAAQ,CAAC,EAAE,KAAK,EAAM,EAAO,EAAG,CAAC,EAAE,EACjF"}
|
|
1
|
+
{"version":3,"file":"color.cjs","names":["SCALE_STEPS","LIGHT_LIGHTNESS","NEUTRAL_LIGHT_LIGHTNESS","NEUTRAL_DARK_LIGHTNESS","DARK_LIGHTNESS","CHROMA_CURVE","clamp","max","min","value","normalizeHex","raw","hex","expanded","char","hexToRgb","normalized","rgbToHex","channel","r","g","b","srgbToLinear","linearToSrgb","hexToOklch","lr","lg","lb","long","medium","short","l","a","bAxis","c","hue","oklchToLinearRgb","hRad","h","inGamut","oklchToHex","chroma","color","rgb","i","createColorScale","base","targets","options","mode","lightness","anchorLightnessAt500","scale","step","LIGHTNESS_CEILING","LIGHTNESS_FLOOR","anchored","lightEnd","darkEnd","top","anchor","bottom","target","relativeLuminance","contrastRatio","la","lighter","darker","readableForeground","background","light","dark","hexToRgbaString","alpha"],"sources":["../../src/theme/color.ts"],"sourcesContent":["/**\n * @tempest-limits file-lines — OKLCH ↔ sRGB with the gamut mapping in between: the\n * transfer function, the LMS matrices, the chroma search that finds the nearest in-\n * gamut colour and the contrast ratio used to check it. Matrices split across files\n * are matrices that get edited one half at a time.\n */\n/**\n * Color math behind {@link createTheme} — OKLab/OKLCH conversions, tint scale\n * generation and WCAG contrast picking.\n *\n * Everything here is pure and dependency-free: the SDK generates brand ramps at\n * runtime in the browser, so a color library would be a disproportionate cost\n * for ~150 lines of well-specified math. OKLCH is used instead of HSL because\n * HSL lightness is not perceptual — an HSL ramp of a yellow and of a blue at the\n * same `L` read as wildly different brightness, which is exactly what breaks a\n * generated palette.\n */\n\n/** A color in the OKLCH space: perceptual lightness, chroma and hue. */\nexport interface Oklch {\n /** Perceptual lightness, `0` (black) to `1` (white). */\n l: number;\n /** Chroma (colorfulness). `0` is gray; sRGB rarely exceeds `~0.37`. */\n c: number;\n /** Hue angle in degrees, `0`–`360`. */\n h: number;\n}\n\n/** The ten steps of a Tempest tint scale, lightest to darkest. */\nexport type ScaleStep = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n\n/** A generated tint scale, keyed by step. */\nexport type ColorScale = Record<ScaleStep, string>;\n\nconst SCALE_STEPS: ScaleStep[] = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];\n\n/**\n * Target lightness per step for a **brand** ramp in light mode.\n *\n * These are the measured OKLCH lightnesses of the hand-written `--tempest-primary-*`\n * scale in `colors.css`, so a generated brand ramp lands in the same visual range\n * as the built-in one instead of merely near it.\n */\nconst LIGHT_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.966,\n 100: 0.923,\n 200: 0.844,\n 300: 0.743,\n 400: 0.642,\n 500: 0.563,\n 600: 0.48,\n 700: 0.391,\n 800: 0.325,\n 900: 0.251,\n};\n\n/**\n * Target lightness per step for a **neutral** ramp in light mode — measured from\n * the hand-written `--tempest-gray-*` scale.\n *\n * Deliberately **wider** than the brand curve at both ends (`0.982` → `0.210` vs\n * `0.966` → `0.251`): a neutral carries surfaces that must read as near-white and\n * text that must read as near-black, and the pair `text-muted` on `surface-3` has\n * to clear AA. Reusing the brand curve for neutrals is what dropped that pair to\n * 3.5:1 and made the browser axe sweep fail on every generated theme.\n */\nconst NEUTRAL_LIGHT_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.982,\n 100: 0.963,\n 200: 0.927,\n 300: 0.872,\n 400: 0.71,\n 500: 0.544,\n 600: 0.442,\n 700: 0.369,\n 800: 0.278,\n 900: 0.21,\n};\n\n/**\n * Neutral ramp for dark mode, measured from the `[data-tempest-theme=\"dark\"]`\n * surface/text tokens: `50` is the page background and `900` is text-grade.\n */\nconst NEUTRAL_DARK_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.159,\n 100: 0.205,\n 200: 0.254,\n 300: 0.314,\n 400: 0.381,\n 500: 0.5,\n 600: 0.571,\n 700: 0.762,\n 800: 0.86,\n 900: 0.964,\n};\n\n/**\n * Target lightness for a dark-theme ramp — the ramp is **inverted**: `50` is the\n * darkest tint (a surface) and `900` the lightest (text-grade), matching the\n * `[data-tempest-theme=\"dark\"]` block in `colors.css`.\n */\nconst DARK_LIGHTNESS: Record<ScaleStep, number> = {\n 50: 0.238,\n 100: 0.288,\n 200: 0.362,\n 300: 0.452,\n 400: 0.544,\n 500: 0.632,\n 600: 0.712,\n 700: 0.788,\n 800: 0.862,\n 900: 0.928,\n};\n\n/**\n * Chroma multiplier per step, relative to the input color's chroma.\n *\n * Peaks around `500`–`600` and falls off at both ends: near-white and near-black\n * tints hold very little chroma before they look muddy or leave the sRGB gamut.\n */\nconst CHROMA_CURVE: Record<ScaleStep, number> = {\n 50: 0.18,\n 100: 0.34,\n 200: 0.6,\n 300: 0.82,\n 400: 0.95,\n 500: 1,\n 600: 0.98,\n 700: 0.88,\n 800: 0.74,\n 900: 0.58,\n};\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** Expand `#abc` to `#aabbcc` and normalize to a lowercase 6-digit hex. */\nfunction normalizeHex(hex: string): string {\n const raw = hex.trim().replace(/^#/, \"\");\n const expanded =\n raw.length === 3 || raw.length === 4\n ? raw\n .slice(0, 3)\n .split(\"\")\n .map((char) => char + char)\n .join(\"\")\n : raw.slice(0, 6);\n if (!/^[0-9a-fA-F]{6}$/.test(expanded)) {\n throw new Error(`Invalid hex color: \"${hex}\"`);\n }\n return `#${expanded.toLowerCase()}`;\n}\n\n/** Parse a hex color into sRGB channels in the `0`–`1` range. */\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } {\n const normalized = normalizeHex(hex).slice(1);\n return {\n r: parseInt(normalized.slice(0, 2), 16) / 255,\n g: parseInt(normalized.slice(2, 4), 16) / 255,\n b: parseInt(normalized.slice(4, 6), 16) / 255,\n };\n}\n\n/** Serialize sRGB channels (`0`–`1`, clamped) back to a `#rrggbb` string. */\nexport function rgbToHex(r: number, g: number, b: number): string {\n const channel = (value: number): string =>\n Math.round(clamp(value, 0, 1) * 255)\n .toString(16)\n .padStart(2, \"0\");\n return `#${channel(r)}${channel(g)}${channel(b)}`;\n}\n\nfunction srgbToLinear(channel: number): number {\n return channel <= 0.04045 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n}\n\nfunction linearToSrgb(channel: number): number {\n return channel <= 0.0031308 ? channel * 12.92 : 1.055 * Math.pow(channel, 1 / 2.4) - 0.055;\n}\n\n/** Convert a hex color to OKLCH. */\nexport function hexToOklch(hex: string): Oklch {\n const { r, g, b } = hexToRgb(hex);\n const lr = srgbToLinear(r);\n const lg = srgbToLinear(g);\n const lb = srgbToLinear(b);\n\n const long = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n const medium = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n const short = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n const l = 0.2104542553 * long + 0.793617785 * medium - 0.0040720468 * short;\n const a = 1.9779984951 * long - 2.428592205 * medium + 0.4505937099 * short;\n const bAxis = 0.0259040371 * long + 0.7827717662 * medium - 0.808675766 * short;\n\n const c = Math.sqrt(a * a + bAxis * bAxis);\n const hue = c < 1e-6 ? 0 : (Math.atan2(bAxis, a) * 180) / Math.PI;\n\n return { l, c, h: hue < 0 ? hue + 360 : hue };\n}\n\n/** Convert OKLCH to linear-light sRGB, without gamut clamping. */\nfunction oklchToLinearRgb({ l, c, h }: Oklch): { r: number; g: number; b: number } {\n const hRad = (h * Math.PI) / 180;\n const a = Math.cos(hRad) * c;\n const bAxis = Math.sin(hRad) * c;\n\n const long = (l + 0.3963377774 * a + 0.2158037573 * bAxis) ** 3;\n const medium = (l - 0.1055613458 * a - 0.0638541728 * bAxis) ** 3;\n const short = (l - 0.0894841775 * a - 1.291485548 * bAxis) ** 3;\n\n return {\n r: 4.0767416621 * long - 3.3077115913 * medium + 0.2309699292 * short,\n g: -1.2684380046 * long + 2.6097574011 * medium - 0.3413193965 * short,\n b: -0.0041960863 * long - 0.7034186147 * medium + 1.707614701 * short,\n };\n}\n\nfunction inGamut({ r, g, b }: { r: number; g: number; b: number }): boolean {\n const epsilon = 1e-4;\n return (\n r >= -epsilon &&\n r <= 1 + epsilon &&\n g >= -epsilon &&\n g <= 1 + epsilon &&\n b >= -epsilon &&\n b <= 1 + epsilon\n );\n}\n\n/**\n * Convert OKLCH to a hex color, reducing chroma until the result fits sRGB.\n *\n * Lightness and hue are preserved: desaturating is far less noticeable than\n * shifting either of them, and a naive channel clamp would do both.\n */\nexport function oklchToHex(color: Oklch): string {\n let chroma = Math.max(0, color.c);\n let rgb = oklchToLinearRgb({ ...color, c: chroma });\n\n for (let i = 0; i < 24 && !inGamut(rgb); i += 1) {\n chroma *= 0.9;\n rgb = oklchToLinearRgb({ ...color, c: chroma });\n }\n\n return rgbToHex(linearToSrgb(rgb.r), linearToSrgb(rgb.g), linearToSrgb(rgb.b));\n}\n\n/** Options for {@link createColorScale}. */\nexport interface ColorScaleOptions {\n /**\n * Pin step `500` to the input color's exact lightness. Default `true`.\n *\n * Right for a **brand** color: the hex a designer hands over is the one the\n * buttons must be. Wrong for a **neutral**: nobody checks that `gray-500` is\n * exactly the input, while everybody notices that a surface stopped being\n * near-white — anchoring rescales both halves around the input and compresses\n * exactly the range a neutral needs wide. With `false`, the ramp keeps the\n * tuned lightness curve and the input only contributes hue and chroma (a warm\n * or cool neutral, as asked).\n */\n anchor?: boolean;\n /**\n * Use the neutral lightness curve instead of the brand one. Default `false`.\n *\n * The neutral curve is wider at both ends, which is what keeps\n * `text-muted`-on-`surface-3` above AA. Implies the ramp is meant for\n * surfaces, borders and text rather than for an action color.\n */\n neutral?: boolean;\n}\n\n/**\n * Build a ten-step tint scale from a single color.\n *\n * The input color's hue is kept throughout and its chroma sets the intensity of\n * the whole ramp, so a muted brand color yields a muted scale instead of being\n * \"corrected\" into something the brand never approved.\n *\n * @param hex - Any hex color (`#abc` or `#aabbcc`), the intended `500` step.\n * @param mode - `\"light\"` for a light→dark ramp, `\"dark\"` for the inverted ramp\n * used under `[data-tempest-theme=\"dark\"]`.\n * @param options - See {@link ColorScaleOptions}.\n */\nexport function createColorScale(\n hex: string,\n mode: \"light\" | \"dark\" = \"light\",\n options: ColorScaleOptions = {},\n): ColorScale {\n const base = hexToOklch(hex);\n const targets = options.neutral\n ? mode === \"dark\"\n ? NEUTRAL_DARK_LIGHTNESS\n : NEUTRAL_LIGHT_LIGHTNESS\n : mode === \"dark\"\n ? DARK_LIGHTNESS\n : LIGHT_LIGHTNESS;\n const lightness =\n options.anchor === false ? targets : anchorLightnessAt500(targets, base.l, mode);\n const scale = {} as ColorScale;\n\n for (const step of SCALE_STEPS) {\n scale[step] = oklchToHex({\n l: lightness[step],\n c: base.c * CHROMA_CURVE[step],\n h: base.h,\n });\n }\n\n return scale;\n}\n\n/** Widest lightness band a generated ramp may span, so both ends stay usable. */\nconst LIGHTNESS_CEILING = 0.985;\nconst LIGHTNESS_FLOOR = 0.12;\n\n/**\n * Re-anchor a lightness ramp so step `500` lands on the brand color exactly.\n *\n * Without this, `500` is forced onto the ramp's own target lightness: a brand\n * `#7c3aed` came back as `#9161fe` — same hue, same chroma, *re-lightened*. It\n * looks fine in isolation and is wrong anyway, because the one color a designer\n * hands over is the one the buttons must actually be.\n *\n * Each half of the ramp is scaled independently around the anchor, so the shape\n * of the original curve survives and the ramp stays monotonic even for a very\n * light brand (yellow) or a very dark one (navy) — those simply get a shorter\n * run on the crowded side.\n *\n * @param targets - The default per-step lightness for this scheme.\n * @param anchor - Lightness of the brand color, used verbatim at step `500`.\n * @param mode - `\"dark\"` inverts which side of the ramp is the light one.\n */\nfunction anchorLightnessAt500(\n targets: Record<ScaleStep, number>,\n anchor: number,\n mode: \"light\" | \"dark\",\n): Record<ScaleStep, number> {\n const anchored = {} as Record<ScaleStep, number>;\n const base = targets[500];\n const lightEnd = mode === \"dark\" ? targets[900] : targets[50];\n const darkEnd = mode === \"dark\" ? targets[50] : targets[900];\n\n const top = Math.min(LIGHTNESS_CEILING, Math.max(lightEnd, anchor + 0.05));\n const bottom = Math.max(LIGHTNESS_FLOOR, Math.min(darkEnd, anchor - 0.05));\n\n for (const step of SCALE_STEPS) {\n const target = targets[step];\n if (target === base) {\n anchored[step] = anchor;\n } else if (target > base) {\n const ratio = (target - base) / (lightEnd - base);\n anchored[step] = anchor + ratio * (top - anchor);\n } else {\n const ratio = (base - target) / (base - darkEnd);\n anchored[step] = anchor - ratio * (anchor - bottom);\n }\n }\n\n return anchored;\n}\n\n/** WCAG 2.x relative luminance of a hex color. */\nexport function relativeLuminance(hex: string): number {\n const { r, g, b } = hexToRgb(hex);\n return 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);\n}\n\n/** WCAG 2.x contrast ratio between two hex colors, from `1` to `21`. */\nexport function contrastRatio(a: string, b: string): number {\n const la = relativeLuminance(a);\n const lb = relativeLuminance(b);\n const lighter = Math.max(la, lb);\n const darker = Math.min(la, lb);\n return (lighter + 0.05) / (darker + 0.05);\n}\n\n/**\n * Pick the readable foreground for a background, by contrast ratio.\n *\n * Used for `--tempest-primary-foreground`: a generated brand color can land\n * anywhere on the lightness axis, and hardcoding white would silently produce\n * unreadable buttons for light brands (yellow, lime, cyan).\n */\nexport function readableForeground(\n background: string,\n light = \"#ffffff\",\n dark = \"#101828\",\n): string {\n return contrastRatio(background, light) >= contrastRatio(background, dark) ? light : dark;\n}\n\n/** Format a hex color as `rgb(r g b / alpha)`, for focus rings and overlays. */\nexport function hexToRgbaString(hex: string, alpha: number): string {\n const { r, g, b } = hexToRgb(hex);\n const channel = (value: number): number => Math.round(clamp(value, 0, 1) * 255);\n return `rgb(${channel(r)} ${channel(g)} ${channel(b)} / ${clamp(alpha, 0, 1)})`;\n}\n"],"mappings":"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"}
|