tempest-react-sdk 0.78.0 → 0.80.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.hostile.test.mjs +45 -4
- package/bin/lib/openapi/generate.mjs +303 -88
- package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
- package/bin/lib/openapi/generate.test.mjs +462 -1
- package/bin/lib/openapi/schema-to-zod.mjs +4 -3
- 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 +1 -1
- package/dist/http/api-client.cjs.map +1 -1
- package/dist/http/api-client.js +5 -1
- package/dist/http/api-client.js.map +1 -1
- package/dist/http/build-url.cjs +1 -1
- package/dist/http/build-url.cjs.map +1 -1
- package/dist/http/build-url.js +3 -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/presigned-post.cjs +2 -0
- package/dist/http/presigned-post.cjs.map +1 -0
- package/dist/http/presigned-post.js +73 -0
- package/dist/http/presigned-post.js.map +1 -0
- 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 +1 -1
- package/dist/sse/create-event-stream.cjs.map +1 -1
- package/dist/sse/create-event-stream.js +44 -30
- package/dist/sse/create-event-stream.js.map +1 -1
- package/dist/sse/ticket-event-stream.cjs +2 -0
- package/dist/sse/ticket-event-stream.cjs.map +1 -0
- package/dist/sse/ticket-event-stream.js +41 -0
- package/dist/sse/ticket-event-stream.js.map +1 -0
- package/dist/sse/use-event-stream.cjs +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js +7 -4
- 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 +440 -7
- package/dist/tempest-react-sdk.js +122 -120
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCell.js","names":[],"sources":["../../../src/components/DataTable/EditableCell.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count, function-lines — an editable cell has to be announced\n * as well as rendered: columnLabel and rowNumber build the accessible name, labels\n * holds the button copy, and error/errorId wire the message to the input. The rest\n * is the edit lifecycle (editing, refocus, saving, onOpen, onCommit, onCancel) that\n * DataTable drives from outside.\n */\nimport { useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport type { CellCommitMove, DataTableEditLabels } from \"./edit-labels\";\nimport styles from \"./DataTable.module.css\";\n\ninterface CellEditorProps {\n /** Text the editor opens with. */\n initial: string;\n /** `<input type>` for the editor. */\n type: string;\n /** Accessible name. */\n label: string;\n /** Id of the message element, when there is one. */\n describedBy?: string;\n /** Whether the current draft was rejected by validation. */\n invalid: boolean;\n /** Commit the draft. The parent decides whether the editor closes. */\n onCommit: (raw: string, move: CellCommitMove) => void;\n /** Discard the draft. */\n onCancel: () => void;\n}\n\n/**\n * The `<input>` half of an editable cell.\n *\n * A separate component so it **mounts fresh** every time a cell opens: the draft\n * then starts from the current value through `useState`'s initialiser, with no\n * effect syncing props into state and no render where the draft is stale.\n *\n * `Tab` is intercepted rather than left to the browser. Default tab order would\n * walk into the next row's trigger button, which is one keystroke away from the\n * next *editor* — and in a table the reader is editing, moving cell to cell is the\n * expected behaviour. `Escape` discards; `Enter` commits and closes; blur commits,\n * because clicking away from a half-typed cell and losing the typing is a data-loss\n * bug users report as \"the table ate my edit\".\n *\n * `autoFocus` is safe here in a way it is not on page load: the editor only exists\n * because the user just clicked the cell or pressed `Tab` into it, so focus is\n * following the interaction rather than stealing it.\n *\n * The `settled` flag stops a keyboard commit from being repeated by the blur that\n * follows it. Typing clears the flag again, because after a commit the parent\n * rejected — the only case where the editor is still open and focused — the draft is\n * live once more, and dropping *that* edit on blur would be the same data loss the\n * blur-commits rule exists to prevent.\n */\nfunction CellEditor({\n initial,\n type,\n label,\n describedBy,\n invalid,\n onCommit,\n onCancel,\n}: CellEditorProps) {\n const [draft, setDraft] = useState<string>(initial);\n const settled = useRef(false);\n\n function finish(move: CellCommitMove): void {\n settled.current = true;\n onCommit(draft, move);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finish(\"none\");\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n settled.current = true;\n onCancel();\n return;\n }\n if (event.key === \"Tab\") {\n event.preventDefault();\n finish(event.shiftKey ? \"previous\" : \"next\");\n }\n }\n\n return (\n <input\n autoFocus\n className={cn(styles.cellEditor, invalid && styles.cellEditorInvalid)}\n type={type}\n value={draft}\n aria-label={label}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n onChange={(event) => {\n settled.current = false;\n setDraft(event.target.value);\n }}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n if (settled.current) return;\n finish(\"none\");\n }}\n />\n );\n}\n\nexport interface EditableCellProps {\n /** Rendered value, used when the cell is closed. */\n children: ReactNode;\n /** Plain-text value, for the editor's initial draft and the trigger's name. */\n text: string;\n /** Header text of this column, for accessible names. */\n columnLabel: string;\n /** 1-based row number on the current page. */\n rowNumber: number;\n /** `<input type>` for the editor. */\n inputType: string;\n /** Whether this cell owns the open editor. */\n editing: boolean;\n /** Return focus to the trigger when the editor closes (Enter/Escape, not Tab). */\n refocus: boolean;\n /** A save is in flight for this cell. */\n saving: boolean;\n /** Validation or save error to surface, or null. */\n error: string | null;\n /** Stable id used for `aria-describedby` on the input and the trigger. */\n errorId: string;\n /** Copy for the affordances. */\n labels: DataTableEditLabels;\n /** Open the editor. */\n onOpen: () => void;\n /** Commit a draft. */\n onCommit: (raw: string, move: CellCommitMove) => void;\n /** Close without committing. */\n onCancel: () => void;\n}\n\n/**\n * One cell of a {@link DataTable} column marked `editable`.\n *\n * Closed, it is a button carrying the value — a plain `<td>` with a click handler\n * would be invisible to a keyboard and unnamed to a screen reader, and a\n * `tabIndex`-only cell announces no role. Open, it is an `<input>`.\n *\n * The button's name comes from its **contents**: a visually hidden \"Editar {coluna}:\"\n * in front of whatever the column rendered. An `aria-label` built from the raw value\n * would read \"850000\" over a cell showing `R$ 8.500,00`, which fails WCAG 2.5.3 (Label\n * in Name) and leaves voice control unable to address the cell by what it says.\n *\n * The error message is a `role=\"alert\"` tied to the input (and to the trigger once\n * the editor closes) through `aria-describedby`, so a rejected save is announced and\n * then still reachable — an optimistic update that rolls back silently leaves the\n * user believing the edit stuck.\n */\nexport function EditableCell({\n children,\n text,\n columnLabel,\n rowNumber,\n inputType,\n editing,\n refocus,\n saving,\n error,\n errorId,\n labels,\n onOpen,\n onCommit,\n onCancel,\n}: EditableCellProps) {\n const trigger = useRef<HTMLButtonElement | null>(null);\n const wasEditing = useRef(false);\n\n useEffect(() => {\n if (!editing && wasEditing.current && refocus) trigger.current?.focus();\n wasEditing.current = editing;\n }, [editing, refocus]);\n\n return (\n <span className={styles.cellWrap}>\n {editing ? (\n <CellEditor\n initial={text}\n type={inputType}\n label={labels.editor(columnLabel, rowNumber)}\n describedBy={error ? errorId : undefined}\n invalid={error !== null}\n onCommit={onCommit}\n onCancel={onCancel}\n />\n ) : (\n <button\n ref={trigger}\n type=\"button\"\n className={cn(styles.cellButton, error && styles.cellButtonInvalid)}\n aria-describedby={error ? errorId : undefined}\n aria-busy={saving || undefined}\n onClick={onOpen}\n >\n <VisuallyHidden>{labels.editCell(columnLabel)}</VisuallyHidden> {children}\n </button>\n )}\n {error && (\n <span className={styles.cellError} id={errorId} role=\"alert\">\n {error}\n </span>\n )}\n </span>\n );\n}\n"],"mappings":";;;;;;AAuDA,SAAS,EAAW,EAChB,YACA,SACA,UACA,gBACA,YACA,aACA,eACgB;CAChB,IAAM,CAAC,GAAO,KAAY,EAAiB,CAAO,GAC5C,IAAU,EAAO,EAAK;CAE5B,SAAS,EAAO,GAA4B;EAExC,AADA,EAAQ,UAAU,IAClB,EAAS,GAAO,CAAI;CACxB;CAEA,SAAS,EAAc,GAA8C;EACjE,IAAI,EAAM,QAAQ,SAAS;GAEvB,AADA,EAAM,eAAe,GACrB,EAAO,MAAM;GACb;EACJ;EACA,IAAI,EAAM,QAAQ,UAAU;GAGxB,AAFA,EAAM,eAAe,GACrB,EAAQ,UAAU,IAClB,EAAS;GACT;EACJ;EACA,AAAI,EAAM,QAAQ,UACd,EAAM,eAAe,GACrB,EAAO,EAAM,WAAW,aAAa,MAAM;CAEnD;CAEA,OACI,kBAAC,SAAD;EACI,WAAA;EACA,WAAW,EAAG,EAAO,YAAY,KAAW,EAAO,iBAAiB;EAC9D;EACN,OAAO;EACP,cAAY;EACZ,gBAAc,KAAW,KAAA;EACzB,oBAAkB;EAClB,WAAW,MAAU;GAEjB,AADA,EAAQ,UAAU,IAClB,EAAS,EAAM,OAAO,KAAK;EAC/B;EACA,WAAW;EACX,cAAc;GACN,EAAQ,WACZ,EAAO,MAAM;EACjB;CACH,CAAA;AAET;AAkDA,SAAgB,EAAa,EACzB,aACA,SACA,gBACA,cACA,cACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,aACA,eACkB;CAClB,IAAM,IAAU,EAAiC,IAAI,GAC/C,IAAa,EAAO,EAAK;CAO/B,OALA,QAAgB;EAEZ,AADI,CAAC,KAAW,EAAW,WAAW,KAAS,EAAQ,SAAS,MAAM,GACtE,EAAW,UAAU;CACzB,GAAG,CAAC,GAAS,CAAO,CAAC,GAGjB,kBAAC,QAAD;EAAM,WAAW,EAAO;EAAxB,UAAA,CACK,IACG,kBAAC,GAAD;GACI,SAAS;GACT,MAAM;GACN,OAAO,EAAO,OAAO,GAAa,CAAS;GAC3C,aAAa,IAAQ,IAAU,KAAA;GAC/B,SAAS,MAAU;GACT;GACA;EACb,CAAA,IAED,kBAAC,UAAD;GACI,KAAK;GACL,MAAK;GACL,WAAW,EAAG,EAAO,YAAY,KAAS,EAAO,iBAAiB;GAClE,oBAAkB,IAAQ,IAAU,KAAA;GACpC,aAAW,KAAU,KAAA;GACrB,SAAS;GANb,UAAA;IAQI,kBAAC,GAAD,EAAA,UAAiB,EAAO,SAAS,CAAW,EAAkB,CAAA;IAAC;IAAE;GAC7D;EAEX,CAAA,GAAA,KACG,kBAAC,QAAD;GAAM,WAAW,EAAO;GAAW,IAAI;GAAS,MAAK;GAChD,UAAA;EACC,CAAA,CAER;;AAEd"}
|
|
1
|
+
{"version":3,"file":"EditableCell.js","names":["styles","DataTable_module_default","CellEditor","draft","setDraft","useState","initial","settled","useRef","finish","onCommit","move","handleKeyDown","event","onCancel","cn","invalid","label","describedBy","EditableCell","trigger","wasEditing","useEffect","editing","refocus","text","inputType","labels","columnLabel","rowNumber","error","errorId","saving","onOpen","VisuallyHidden","children"],"sources":["../../../src/components/DataTable/EditableCell.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count, function-lines — an editable cell has to be announced\n * as well as rendered: columnLabel and rowNumber build the accessible name, labels\n * holds the button copy, and error/errorId wire the message to the input. The rest\n * is the edit lifecycle (editing, refocus, saving, onOpen, onCommit, onCancel) that\n * DataTable drives from outside.\n */\nimport { useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport type { CellCommitMove, DataTableEditLabels } from \"./edit-labels\";\nimport styles from \"./DataTable.module.css\";\n\ninterface CellEditorProps {\n /** Text the editor opens with. */\n initial: string;\n /** `<input type>` for the editor. */\n type: string;\n /** Accessible name. */\n label: string;\n /** Id of the message element, when there is one. */\n describedBy?: string;\n /** Whether the current draft was rejected by validation. */\n invalid: boolean;\n /** Commit the draft. The parent decides whether the editor closes. */\n onCommit: (raw: string, move: CellCommitMove) => void;\n /** Discard the draft. */\n onCancel: () => void;\n}\n\n/**\n * The `<input>` half of an editable cell.\n *\n * A separate component so it **mounts fresh** every time a cell opens: the draft\n * then starts from the current value through `useState`'s initialiser, with no\n * effect syncing props into state and no render where the draft is stale.\n *\n * `Tab` is intercepted rather than left to the browser. Default tab order would\n * walk into the next row's trigger button, which is one keystroke away from the\n * next *editor* — and in a table the reader is editing, moving cell to cell is the\n * expected behaviour. `Escape` discards; `Enter` commits and closes; blur commits,\n * because clicking away from a half-typed cell and losing the typing is a data-loss\n * bug users report as \"the table ate my edit\".\n *\n * `autoFocus` is safe here in a way it is not on page load: the editor only exists\n * because the user just clicked the cell or pressed `Tab` into it, so focus is\n * following the interaction rather than stealing it.\n *\n * The `settled` flag stops a keyboard commit from being repeated by the blur that\n * follows it. Typing clears the flag again, because after a commit the parent\n * rejected — the only case where the editor is still open and focused — the draft is\n * live once more, and dropping *that* edit on blur would be the same data loss the\n * blur-commits rule exists to prevent.\n */\nfunction CellEditor({\n initial,\n type,\n label,\n describedBy,\n invalid,\n onCommit,\n onCancel,\n}: CellEditorProps) {\n const [draft, setDraft] = useState<string>(initial);\n const settled = useRef(false);\n\n function finish(move: CellCommitMove): void {\n settled.current = true;\n onCommit(draft, move);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finish(\"none\");\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n settled.current = true;\n onCancel();\n return;\n }\n if (event.key === \"Tab\") {\n event.preventDefault();\n finish(event.shiftKey ? \"previous\" : \"next\");\n }\n }\n\n return (\n <input\n autoFocus\n className={cn(styles.cellEditor, invalid && styles.cellEditorInvalid)}\n type={type}\n value={draft}\n aria-label={label}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n onChange={(event) => {\n settled.current = false;\n setDraft(event.target.value);\n }}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n if (settled.current) return;\n finish(\"none\");\n }}\n />\n );\n}\n\nexport interface EditableCellProps {\n /** Rendered value, used when the cell is closed. */\n children: ReactNode;\n /** Plain-text value, for the editor's initial draft and the trigger's name. */\n text: string;\n /** Header text of this column, for accessible names. */\n columnLabel: string;\n /** 1-based row number on the current page. */\n rowNumber: number;\n /** `<input type>` for the editor. */\n inputType: string;\n /** Whether this cell owns the open editor. */\n editing: boolean;\n /** Return focus to the trigger when the editor closes (Enter/Escape, not Tab). */\n refocus: boolean;\n /** A save is in flight for this cell. */\n saving: boolean;\n /** Validation or save error to surface, or null. */\n error: string | null;\n /** Stable id used for `aria-describedby` on the input and the trigger. */\n errorId: string;\n /** Copy for the affordances. */\n labels: DataTableEditLabels;\n /** Open the editor. */\n onOpen: () => void;\n /** Commit a draft. */\n onCommit: (raw: string, move: CellCommitMove) => void;\n /** Close without committing. */\n onCancel: () => void;\n}\n\n/**\n * One cell of a {@link DataTable} column marked `editable`.\n *\n * Closed, it is a button carrying the value — a plain `<td>` with a click handler\n * would be invisible to a keyboard and unnamed to a screen reader, and a\n * `tabIndex`-only cell announces no role. Open, it is an `<input>`.\n *\n * The button's name comes from its **contents**: a visually hidden \"Editar {coluna}:\"\n * in front of whatever the column rendered. An `aria-label` built from the raw value\n * would read \"850000\" over a cell showing `R$ 8.500,00`, which fails WCAG 2.5.3 (Label\n * in Name) and leaves voice control unable to address the cell by what it says.\n *\n * The error message is a `role=\"alert\"` tied to the input (and to the trigger once\n * the editor closes) through `aria-describedby`, so a rejected save is announced and\n * then still reachable — an optimistic update that rolls back silently leaves the\n * user believing the edit stuck.\n */\nexport function EditableCell({\n children,\n text,\n columnLabel,\n rowNumber,\n inputType,\n editing,\n refocus,\n saving,\n error,\n errorId,\n labels,\n onOpen,\n onCommit,\n onCancel,\n}: EditableCellProps) {\n const trigger = useRef<HTMLButtonElement | null>(null);\n const wasEditing = useRef(false);\n\n useEffect(() => {\n if (!editing && wasEditing.current && refocus) trigger.current?.focus();\n wasEditing.current = editing;\n }, [editing, refocus]);\n\n return (\n <span className={styles.cellWrap}>\n {editing ? (\n <CellEditor\n initial={text}\n type={inputType}\n label={labels.editor(columnLabel, rowNumber)}\n describedBy={error ? errorId : undefined}\n invalid={error !== null}\n onCommit={onCommit}\n onCancel={onCancel}\n />\n ) : (\n <button\n ref={trigger}\n type=\"button\"\n className={cn(styles.cellButton, error && styles.cellButtonInvalid)}\n aria-describedby={error ? errorId : undefined}\n aria-busy={saving || undefined}\n onClick={onOpen}\n >\n <VisuallyHidden>{labels.editCell(columnLabel)}</VisuallyHidden> {children}\n </button>\n )}\n {error && (\n <span className={styles.cellError} id={errorId} role=\"alert\">\n {error}\n </span>\n )}\n </span>\n );\n}\n"],"mappings":";;;;;;AAuDA,SAASE,EAAW,EAChB,YACA,SACA,UACA,gBACA,YACA,aACA,eACgB;CAChB,IAAM,CAACC,GAAOC,KAAYC,EAAiBC,CAAO,GAC5CC,IAAUC,EAAO,EAAK;CAE5B,SAASC,EAAO,GAA4B;EAExC,AADA,EAAQ,UAAU,IAClBC,EAASP,GAAOQ,CAAI;CACxB;CAEA,SAASC,EAAc,GAA8C;EACjE,AAAIC,EAAM,QAAQ,WACdA,EAAM,eAAe,GACrBJ,EAAO,MAAM,KAGbI,EAAM,QAAQ,YACdA,EAAM,eAAe,GACrB,EAAQ,UAAU,IAClBC,EAAS,KAGTD,EAAM,QAAQ,UACdA,EAAM,eAAe,GACrBJ,EAAOI,EAAM,WAAW,aAAa,MAAM;CAEnD;CAEA,OACI,kBAAC,SAAD;EACI,WAAA;EACA,WAAWE,EAAGf,EAAO,YAAYgB,KAAWhB,EAAO,iBAAiB;EAC9D;EACN,OAAOG;EACP,cAAYc;EACZ,gBAAcD,KAAW,KAAA;EACzB,oBAAkBE;EAClB,WAAW,MAAU;GAEjB,AADA,EAAQ,UAAU,IAClBd,EAASS,EAAM,OAAO,KAAK;EAC/B;EACA,WAAWD;EACX,cAAc;GACV,AAAIL,EAAQ,WACZE,EAAO,MAAM;EACjB;CACH,CAAA;AAET;AAkDA,SAAgBU,EAAa,EACzB,aACA,SACA,gBACA,cACA,cACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,aACA,eACkB;CAClB,IAAMC,IAAUZ,EAAiC,IAAI,GAC/Ca,IAAab,EAAO,EAAK;CAO/B,OALAc,QAAgB;EAEZ,AADI,CAACC,KAAWF,EAAW,WAAWG,KAASJ,EAAQ,SAAS,MAAM,GACtE,EAAW,UAAUG;CACzB,GAAG,CAACA,GAASC,CAAO,CAAC,GAGjB,kBAAC,QAAD;EAAM,WAAWxB,EAAO;EAAxB,UAAA,CACKuB,IACG,kBAACrB,GAAD;GACI,SAASuB;GACT,MAAMC;GACN,OAAOC,EAAO,OAAOC,GAAaC,CAAS;GAC3C,aAAaC,IAAQC,IAAU,KAAA;GAC/B,SAASD,MAAU;GACT;GACA;EACb,CAAA,IAED,kBAAC,UAAD;GACI,KAAKV;GACL,MAAK;GACL,WAAWL,EAAGf,EAAO,YAAY8B,KAAS9B,EAAO,iBAAiB;GAClE,oBAAkB8B,IAAQC,IAAU,KAAA;GACpC,aAAWC,KAAU,KAAA;GACrB,SAASC;GANb,UAAA;IAQI,kBAACC,GAAD,EAAA,UAAiBP,EAAO,SAASC,CAAW,EAAkB,CAAA;IAAC;IAAEO;GAC7D;EAEX,CAAA,GAAAL,KACG,kBAAC,QAAD;GAAM,WAAW9B,EAAO;GAAW,IAAI+B;GAAS,MAAK;GAChD,UAAAD;EACC,CAAA,CAER;;AAEd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingRows.cjs","names":[],"sources":["../../../src/components/DataTable/LoadingRows.tsx"],"sourcesContent":["import { Skeleton } from \"../Skeleton\";\nimport styles from \"./DataTable.module.css\";\n\n/** Props for {@link LoadingRows}. */\nexport interface LoadingRowsProps {\n /** How many placeholder cells to draw per row. */\n columns: number;\n /** How many placeholder rows to draw. */\n rows: number;\n}\n\n/**\n * Placeholder rows for a table that has nothing to show yet.\n *\n * A first load and an empty result are different statements, and the usual\n * shortcut — showing `emptyMessage` while the request is in flight — tells the\n * user \"there is nothing here\" and then contradicts itself a moment later.\n * Drawing rows at roughly the real height also keeps whatever sits below the\n * table from jumping when the data lands.\n *\n * The whole block is `aria-hidden`: it carries no information a screen reader can\n * use, and the busy state is already on the wrapper. It also stays out of\n * `role=\"status\"`, which the table's announcement region already occupies —\n * two status regions on one table means the second one is what gets ignored.\n *\n * @param props - Grid size to fill.\n * @returns The placeholder block.\n */\nexport function LoadingRows({ columns, rows }: LoadingRowsProps) {\n return (\n <div className={styles.loading} aria-hidden=\"true\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.loadingRow}>\n {Array.from({ length: Math.max(columns, 1) }, (_, cellIndex) => (\n <Skeleton key={cellIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"mHA4BA,
|
|
1
|
+
{"version":3,"file":"LoadingRows.cjs","names":["styles","Skeleton","require_Skeleton","require_DataTable_module","react_jsx_runtime","LoadingRows","rows","columns","cellIndex","rowIndex"],"sources":["../../../src/components/DataTable/LoadingRows.tsx"],"sourcesContent":["import { Skeleton } from \"../Skeleton\";\nimport styles from \"./DataTable.module.css\";\n\n/** Props for {@link LoadingRows}. */\nexport interface LoadingRowsProps {\n /** How many placeholder cells to draw per row. */\n columns: number;\n /** How many placeholder rows to draw. */\n rows: number;\n}\n\n/**\n * Placeholder rows for a table that has nothing to show yet.\n *\n * A first load and an empty result are different statements, and the usual\n * shortcut — showing `emptyMessage` while the request is in flight — tells the\n * user \"there is nothing here\" and then contradicts itself a moment later.\n * Drawing rows at roughly the real height also keeps whatever sits below the\n * table from jumping when the data lands.\n *\n * The whole block is `aria-hidden`: it carries no information a screen reader can\n * use, and the busy state is already on the wrapper. It also stays out of\n * `role=\"status\"`, which the table's announcement region already occupies —\n * two status regions on one table means the second one is what gets ignored.\n *\n * @param props - Grid size to fill.\n * @returns The placeholder block.\n */\nexport function LoadingRows({ columns, rows }: LoadingRowsProps) {\n return (\n <div className={styles.loading} aria-hidden=\"true\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.loadingRow}>\n {Array.from({ length: Math.max(columns, 1) }, (_, cellIndex) => (\n <Skeleton key={cellIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"A,mHA4BA,SAAgBK,EAAY,CAAE,UAAS,QAA0B,CAC7D,OACI,EAAAD,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,QAAS,cAAY,OACvC,SAAA,MAAM,KAAK,CAAE,OAAQM,CAAK,GAAI,EAAG,KAC9B,EAAAF,EAAA,IAAA,CAAC,MAAD,CAAoB,UAAWJ,EAAAA,QAAO,WACjC,SAAA,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAIO,EAAS,CAAC,CAAE,GAAI,EAAG,KAC9C,EAAAH,EAAA,IAAA,CAACH,EAAAA,SAAD,CAA0B,QAAQ,MAAQ,EAA3BO,CAA2B,CAC7C,CACA,EAJKC,CAIL,CACR,CACA,CAAA,CAEb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingRows.js","names":[],"sources":["../../../src/components/DataTable/LoadingRows.tsx"],"sourcesContent":["import { Skeleton } from \"../Skeleton\";\nimport styles from \"./DataTable.module.css\";\n\n/** Props for {@link LoadingRows}. */\nexport interface LoadingRowsProps {\n /** How many placeholder cells to draw per row. */\n columns: number;\n /** How many placeholder rows to draw. */\n rows: number;\n}\n\n/**\n * Placeholder rows for a table that has nothing to show yet.\n *\n * A first load and an empty result are different statements, and the usual\n * shortcut — showing `emptyMessage` while the request is in flight — tells the\n * user \"there is nothing here\" and then contradicts itself a moment later.\n * Drawing rows at roughly the real height also keeps whatever sits below the\n * table from jumping when the data lands.\n *\n * The whole block is `aria-hidden`: it carries no information a screen reader can\n * use, and the busy state is already on the wrapper. It also stays out of\n * `role=\"status\"`, which the table's announcement region already occupies —\n * two status regions on one table means the second one is what gets ignored.\n *\n * @param props - Grid size to fill.\n * @returns The placeholder block.\n */\nexport function LoadingRows({ columns, rows }: LoadingRowsProps) {\n return (\n <div className={styles.loading} aria-hidden=\"true\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.loadingRow}>\n {Array.from({ length: Math.max(columns, 1) }, (_, cellIndex) => (\n <Skeleton key={cellIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;AA4BA,
|
|
1
|
+
{"version":3,"file":"LoadingRows.js","names":["styles","DataTable_module_default","LoadingRows","rows","columns","Skeleton","cellIndex","rowIndex"],"sources":["../../../src/components/DataTable/LoadingRows.tsx"],"sourcesContent":["import { Skeleton } from \"../Skeleton\";\nimport styles from \"./DataTable.module.css\";\n\n/** Props for {@link LoadingRows}. */\nexport interface LoadingRowsProps {\n /** How many placeholder cells to draw per row. */\n columns: number;\n /** How many placeholder rows to draw. */\n rows: number;\n}\n\n/**\n * Placeholder rows for a table that has nothing to show yet.\n *\n * A first load and an empty result are different statements, and the usual\n * shortcut — showing `emptyMessage` while the request is in flight — tells the\n * user \"there is nothing here\" and then contradicts itself a moment later.\n * Drawing rows at roughly the real height also keeps whatever sits below the\n * table from jumping when the data lands.\n *\n * The whole block is `aria-hidden`: it carries no information a screen reader can\n * use, and the busy state is already on the wrapper. It also stays out of\n * `role=\"status\"`, which the table's announcement region already occupies —\n * two status regions on one table means the second one is what gets ignored.\n *\n * @param props - Grid size to fill.\n * @returns The placeholder block.\n */\nexport function LoadingRows({ columns, rows }: LoadingRowsProps) {\n return (\n <div className={styles.loading} aria-hidden=\"true\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.loadingRow}>\n {Array.from({ length: Math.max(columns, 1) }, (_, cellIndex) => (\n <Skeleton key={cellIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;AA4BA,SAAgBE,EAAY,EAAE,YAAS,WAA0B;CAC7D,OACI,kBAAC,OAAD;EAAK,WAAWF,EAAO;EAAS,eAAY;EACvC,UAAA,MAAM,KAAK,EAAE,QAAQG,EAAK,IAAI,GAAG,MAC9B,kBAAC,OAAD;GAAoB,WAAWH,EAAO;GACjC,UAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAII,GAAS,CAAC,EAAE,IAAI,GAAG,MAC9C,kBAACC,GAAD,EAA0B,SAAQ,OAAQ,GAA3BC,CAA2B,CAC7C;EACA,GAJKC,CAIL,CACR;CACA,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-labels.cjs","names":[],"sources":["../../../src/components/DataTable/edit-labels.ts"],"sourcesContent":["/** Where a commit should send focus next. */\nexport type CellCommitMove = \"none\" | \"next\" | \"previous\";\n\n/** Copy for the inline-editing affordances. Every entry has a PT-BR default. */\nexport interface DataTableEditLabels {\n /**\n * Visually hidden prefix that turns a cell's own content into the button's name.\n *\n * A prefix and not a whole label: the accessible name has to *contain* the visible\n * text (WCAG 2.5.3, Label in Name), and a label built from the raw value would say\n * \"850000\" over a cell that reads `R$ 8.500,00` — which breaks voice control and\n * makes the screen reader disagree with the screen.\n *\n * A single space is appended when it is rendered, so the name reads\n * `\"Editar Salário: R$ 8.500,00\"`. Do not add one yourself.\n */\n editCell: (column: string) => string;\n /** Accessible name of the editor input. */\n editor: (column: string, rowNumber: number) => string;\n /** Announced (politely) once a cell saved. */\n saved: (column: string) => string;\n /** Shown in the cell when the save was rejected and no reason was thrown. */\n saveFailed: (column: string) => string;\n}\n\n/**\n * PT-BR defaults, matching the rest of the component copy in the SDK.\n *\n * In their own module rather than next to `EditableCell` so that file exports\n * components and nothing else, which is what keeps Fast Refresh working for\n * anyone editing the component.\n */\nexport const DEFAULT_EDIT_LABELS: DataTableEditLabels = {\n editCell: (column) => `Editar ${column}:`,\n editor: (column, rowNumber) => `${column}, linha ${rowNumber}`,\n saved: (column) => `${column} salvo`,\n saveFailed: (column) => `Não foi possível salvar ${column}.`,\n};\n"],"mappings":"AAgCA,
|
|
1
|
+
{"version":3,"file":"edit-labels.cjs","names":["DEFAULT_EDIT_LABELS","column","rowNumber"],"sources":["../../../src/components/DataTable/edit-labels.ts"],"sourcesContent":["/** Where a commit should send focus next. */\nexport type CellCommitMove = \"none\" | \"next\" | \"previous\";\n\n/** Copy for the inline-editing affordances. Every entry has a PT-BR default. */\nexport interface DataTableEditLabels {\n /**\n * Visually hidden prefix that turns a cell's own content into the button's name.\n *\n * A prefix and not a whole label: the accessible name has to *contain* the visible\n * text (WCAG 2.5.3, Label in Name), and a label built from the raw value would say\n * \"850000\" over a cell that reads `R$ 8.500,00` — which breaks voice control and\n * makes the screen reader disagree with the screen.\n *\n * A single space is appended when it is rendered, so the name reads\n * `\"Editar Salário: R$ 8.500,00\"`. Do not add one yourself.\n */\n editCell: (column: string) => string;\n /** Accessible name of the editor input. */\n editor: (column: string, rowNumber: number) => string;\n /** Announced (politely) once a cell saved. */\n saved: (column: string) => string;\n /** Shown in the cell when the save was rejected and no reason was thrown. */\n saveFailed: (column: string) => string;\n}\n\n/**\n * PT-BR defaults, matching the rest of the component copy in the SDK.\n *\n * In their own module rather than next to `EditableCell` so that file exports\n * components and nothing else, which is what keeps Fast Refresh working for\n * anyone editing the component.\n */\nexport const DEFAULT_EDIT_LABELS: DataTableEditLabels = {\n editCell: (column) => `Editar ${column}:`,\n editor: (column, rowNumber) => `${column}, linha ${rowNumber}`,\n saved: (column) => `${column} salvo`,\n saveFailed: (column) => `Não foi possível salvar ${column}.`,\n};\n"],"mappings":"AAgCA,IAAaA,EAA2C,CACpD,SAAW,GAAW,UAAUC,EAAO,GACvC,QAAS,EAAQ,IAAc,GAAGA,EAAO,UAAUC,IACnD,MAAQ,GAAW,GAAGD,EAAO,QAC7B,WAAa,GAAW,2BAA2BA,EAAO,EAC9D,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-labels.js","names":[],"sources":["../../../src/components/DataTable/edit-labels.ts"],"sourcesContent":["/** Where a commit should send focus next. */\nexport type CellCommitMove = \"none\" | \"next\" | \"previous\";\n\n/** Copy for the inline-editing affordances. Every entry has a PT-BR default. */\nexport interface DataTableEditLabels {\n /**\n * Visually hidden prefix that turns a cell's own content into the button's name.\n *\n * A prefix and not a whole label: the accessible name has to *contain* the visible\n * text (WCAG 2.5.3, Label in Name), and a label built from the raw value would say\n * \"850000\" over a cell that reads `R$ 8.500,00` — which breaks voice control and\n * makes the screen reader disagree with the screen.\n *\n * A single space is appended when it is rendered, so the name reads\n * `\"Editar Salário: R$ 8.500,00\"`. Do not add one yourself.\n */\n editCell: (column: string) => string;\n /** Accessible name of the editor input. */\n editor: (column: string, rowNumber: number) => string;\n /** Announced (politely) once a cell saved. */\n saved: (column: string) => string;\n /** Shown in the cell when the save was rejected and no reason was thrown. */\n saveFailed: (column: string) => string;\n}\n\n/**\n * PT-BR defaults, matching the rest of the component copy in the SDK.\n *\n * In their own module rather than next to `EditableCell` so that file exports\n * components and nothing else, which is what keeps Fast Refresh working for\n * anyone editing the component.\n */\nexport const DEFAULT_EDIT_LABELS: DataTableEditLabels = {\n editCell: (column) => `Editar ${column}:`,\n editor: (column, rowNumber) => `${column}, linha ${rowNumber}`,\n saved: (column) => `${column} salvo`,\n saveFailed: (column) => `Não foi possível salvar ${column}.`,\n};\n"],"mappings":";AAgCA,
|
|
1
|
+
{"version":3,"file":"edit-labels.js","names":["DEFAULT_EDIT_LABELS","column","rowNumber"],"sources":["../../../src/components/DataTable/edit-labels.ts"],"sourcesContent":["/** Where a commit should send focus next. */\nexport type CellCommitMove = \"none\" | \"next\" | \"previous\";\n\n/** Copy for the inline-editing affordances. Every entry has a PT-BR default. */\nexport interface DataTableEditLabels {\n /**\n * Visually hidden prefix that turns a cell's own content into the button's name.\n *\n * A prefix and not a whole label: the accessible name has to *contain* the visible\n * text (WCAG 2.5.3, Label in Name), and a label built from the raw value would say\n * \"850000\" over a cell that reads `R$ 8.500,00` — which breaks voice control and\n * makes the screen reader disagree with the screen.\n *\n * A single space is appended when it is rendered, so the name reads\n * `\"Editar Salário: R$ 8.500,00\"`. Do not add one yourself.\n */\n editCell: (column: string) => string;\n /** Accessible name of the editor input. */\n editor: (column: string, rowNumber: number) => string;\n /** Announced (politely) once a cell saved. */\n saved: (column: string) => string;\n /** Shown in the cell when the save was rejected and no reason was thrown. */\n saveFailed: (column: string) => string;\n}\n\n/**\n * PT-BR defaults, matching the rest of the component copy in the SDK.\n *\n * In their own module rather than next to `EditableCell` so that file exports\n * components and nothing else, which is what keeps Fast Refresh working for\n * anyone editing the component.\n */\nexport const DEFAULT_EDIT_LABELS: DataTableEditLabels = {\n editCell: (column) => `Editar ${column}:`,\n editor: (column, rowNumber) => `${column}, linha ${rowNumber}`,\n saved: (column) => `${column} salvo`,\n saveFailed: (column) => `Não foi possível salvar ${column}.`,\n};\n"],"mappings":";AAgCA,IAAaA,IAA2C;CACpD,WAAW,MAAW,UAAUC,EAAO;CACvC,SAAS,GAAQ,MAAc,GAAGA,EAAO,UAAUC;CACnD,QAAQ,MAAW,GAAGD,EAAO;CAC7B,aAAa,MAAW,2BAA2BA,EAAO;AAC9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dev-warnings.cjs","names":[],"sources":["../../../src/components/DataTable/use-dev-warnings.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { isDevBuild } from \"../../utils/dev-mode\";\n\n/** What {@link useDevWarnings} needs to judge the prop combination. */\nexport interface DataTableDevWarningsInput {\n /** Whether `totalItems` was passed. */\n serverMode: boolean;\n /** The controlled `page`, if any. */\n controlledPage: number | undefined;\n /** The page callback, if any. */\n onPageChange: ((page: number) => void) | undefined;\n /** Whether the caller passed `pageSize` at all. */\n pageSizeControlled: boolean;\n /** The size-selector callback, if any. */\n onPageSizeChange: ((size: number) => void) | undefined;\n /** Whether sorting is delegated. */\n sortIsManual: boolean;\n /** Whether any column renders a header the user can click to sort. */\n hasSortableColumn: boolean;\n /** The sort callback, if any. */\n onSortChange: ((sort: never) => void) | undefined;\n /** Whether a search box is rendered at all. */\n searchable: boolean;\n /** The search callback, if any. */\n onSearchChange: ((term: string) => void) | undefined;\n}\n\n/**\n * Warn, in development only, about prop combinations that render a table which\n * silently lies.\n *\n * Each of these produces a screen that looks like it works: the header sorts and\n * nothing moves, the pager renders and clicking it does nothing.\n *\n * Four of them **are** type errors now — `DataTablePagingProps`,\n * `DataTablePageSizeProps`, `DataTableSortProps` and `DataTableSearchProps` reject\n * them at the call site —\n * so those warnings only reach a caller the types cannot: plain JavaScript, or\n * props arriving through an `any`-typed spread.\n *\n * Each one also has to be reachable. `totalItems` implies `manualSort`, so the\n * sort warning fired on every server-mode table — including one whose columns are\n * all plain, where no header is clickable and the sentence it prints (\"clicking a\n * sortable header changes the arrow and nothing else\") describes a state the user\n * cannot reach. A warning nobody can act on is not a warning: it teaches the\n * reader to skim past the two next to it, which *are* real, and the way out it\n * suggests is `onSortChange={() => {}}` — a callback that does nothing, that the\n * type-checker accepts, and that would hide the warning on the day a `sortable`\n * column does appear. So the sort warning asks for a sortable column first, the\n * way the search one already asks for `searchable`.\n *\n * The server-mode search warning is the one the types genuinely cannot afford. `totalItems` *implies*\n * `manualSearch`, so `searchable` with no `onSearchChange` is an inert search box\n * in server mode without anybody writing `manualSearch`. Expressing that means\n * the search axis has to read the paging axis, crossing two three-member unions\n * into nine — so it stays here, which is what \"runtime is the cheaper check\"\n * actually looks like when it is true.\n *\n * @param input - The resolved prop combination.\n */\nexport function useDevWarnings({\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n}: DataTableDevWarningsInput): void {\n useEffect(() => {\n if (!isDevBuild()) return;\n\n if (serverMode && controlledPage === undefined) {\n console.warn(\n \"[tempest] <DataTable totalItems> is server mode, which needs a controlled `page`. \" +\n \"Without it the pager moves the internal page while `data` keeps showing page 1.\",\n );\n }\n if (controlledPage !== undefined && !onPageChange) {\n console.warn(\n \"[tempest] <DataTable page> is controlled but `onPageChange` is missing, so the pager cannot do anything.\",\n );\n }\n if (onPageSizeChange && !pageSizeControlled) {\n console.warn(\n \"[tempest] <DataTable onPageSizeChange> needs a controlled `pageSize`. Without it the \" +\n \"selector reports the new size and the table keeps counting pages by 10.\",\n );\n }\n if (serverMode && searchable && !onSearchChange) {\n console.warn(\n \"[tempest] <DataTable totalItems searchable> delegates searching, so the box needs \" +\n \"`onSearchChange`. Without it the user types and nothing filters and nothing is reported.\",\n );\n }\n if (sortIsManual && hasSortableColumn && !onSortChange) {\n console.warn(\n \"[tempest] <DataTable> is sorting manually but `onSortChange` is missing: clicking a sortable header changes the arrow and nothing else.\",\n );\n }\n }, [\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n ]);\n}\n"],"mappings":"mEA6DA,
|
|
1
|
+
{"version":3,"file":"use-dev-warnings.cjs","names":["isDevBuild","require_dev_mode","react","useDevWarnings","serverMode","controlledPage","onPageChange","onPageSizeChange","pageSizeControlled","searchable","onSearchChange","sortIsManual","hasSortableColumn","onSortChange"],"sources":["../../../src/components/DataTable/use-dev-warnings.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { isDevBuild } from \"../../utils/dev-mode\";\n\n/** What {@link useDevWarnings} needs to judge the prop combination. */\nexport interface DataTableDevWarningsInput {\n /** Whether `totalItems` was passed. */\n serverMode: boolean;\n /** The controlled `page`, if any. */\n controlledPage: number | undefined;\n /** The page callback, if any. */\n onPageChange: ((page: number) => void) | undefined;\n /** Whether the caller passed `pageSize` at all. */\n pageSizeControlled: boolean;\n /** The size-selector callback, if any. */\n onPageSizeChange: ((size: number) => void) | undefined;\n /** Whether sorting is delegated. */\n sortIsManual: boolean;\n /** Whether any column renders a header the user can click to sort. */\n hasSortableColumn: boolean;\n /** The sort callback, if any. */\n onSortChange: ((sort: never) => void) | undefined;\n /** Whether a search box is rendered at all. */\n searchable: boolean;\n /** The search callback, if any. */\n onSearchChange: ((term: string) => void) | undefined;\n}\n\n/**\n * Warn, in development only, about prop combinations that render a table which\n * silently lies.\n *\n * Each of these produces a screen that looks like it works: the header sorts and\n * nothing moves, the pager renders and clicking it does nothing.\n *\n * Four of them **are** type errors now — `DataTablePagingProps`,\n * `DataTablePageSizeProps`, `DataTableSortProps` and `DataTableSearchProps` reject\n * them at the call site —\n * so those warnings only reach a caller the types cannot: plain JavaScript, or\n * props arriving through an `any`-typed spread.\n *\n * Each one also has to be reachable. `totalItems` implies `manualSort`, so the\n * sort warning fired on every server-mode table — including one whose columns are\n * all plain, where no header is clickable and the sentence it prints (\"clicking a\n * sortable header changes the arrow and nothing else\") describes a state the user\n * cannot reach. A warning nobody can act on is not a warning: it teaches the\n * reader to skim past the two next to it, which *are* real, and the way out it\n * suggests is `onSortChange={() => {}}` — a callback that does nothing, that the\n * type-checker accepts, and that would hide the warning on the day a `sortable`\n * column does appear. So the sort warning asks for a sortable column first, the\n * way the search one already asks for `searchable`.\n *\n * The server-mode search warning is the one the types genuinely cannot afford. `totalItems` *implies*\n * `manualSearch`, so `searchable` with no `onSearchChange` is an inert search box\n * in server mode without anybody writing `manualSearch`. Expressing that means\n * the search axis has to read the paging axis, crossing two three-member unions\n * into nine — so it stays here, which is what \"runtime is the cheaper check\"\n * actually looks like when it is true.\n *\n * @param input - The resolved prop combination.\n */\nexport function useDevWarnings({\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n}: DataTableDevWarningsInput): void {\n useEffect(() => {\n if (!isDevBuild()) return;\n\n if (serverMode && controlledPage === undefined) {\n console.warn(\n \"[tempest] <DataTable totalItems> is server mode, which needs a controlled `page`. \" +\n \"Without it the pager moves the internal page while `data` keeps showing page 1.\",\n );\n }\n if (controlledPage !== undefined && !onPageChange) {\n console.warn(\n \"[tempest] <DataTable page> is controlled but `onPageChange` is missing, so the pager cannot do anything.\",\n );\n }\n if (onPageSizeChange && !pageSizeControlled) {\n console.warn(\n \"[tempest] <DataTable onPageSizeChange> needs a controlled `pageSize`. Without it the \" +\n \"selector reports the new size and the table keeps counting pages by 10.\",\n );\n }\n if (serverMode && searchable && !onSearchChange) {\n console.warn(\n \"[tempest] <DataTable totalItems searchable> delegates searching, so the box needs \" +\n \"`onSearchChange`. Without it the user types and nothing filters and nothing is reported.\",\n );\n }\n if (sortIsManual && hasSortableColumn && !onSortChange) {\n console.warn(\n \"[tempest] <DataTable> is sorting manually but `onSortChange` is missing: clicking a sortable header changes the arrow and nothing else.\",\n );\n }\n }, [\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n ]);\n}\n"],"mappings":"A,mEA6DA,SAAgBG,EAAe,CAC3B,aACA,iBACA,eACA,qBACA,mBACA,eACA,oBACA,eACA,aACA,kBACgC,EAChC,EAAAD,EAAA,UAAA,KAAgB,CACPF,EAAAA,WAAW,IAEZI,GAAcC,IAAmB,IAAA,IACjC,QAAQ,KACJ,mKAEJ,EAEAA,IAAmB,IAAA,IAAa,CAACC,GACjC,QAAQ,KACJ,0GACJ,EAEAC,GAAoB,CAACC,GACrB,QAAQ,KACJ,8JAEJ,EAEAJ,GAAcK,GAAc,CAACC,GAC7B,QAAQ,KACJ,4KAEJ,EAEAC,GAAgBC,GAAqB,CAACC,GACtC,QAAQ,KACJ,yIACJ,EAER,EAAG,CACCT,EACAC,EACAC,EACAE,EACAD,EACAI,EACAC,EACAC,EACAJ,EACAC,CACJ,CAAC,CACL,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dev-warnings.js","names":[],"sources":["../../../src/components/DataTable/use-dev-warnings.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { isDevBuild } from \"../../utils/dev-mode\";\n\n/** What {@link useDevWarnings} needs to judge the prop combination. */\nexport interface DataTableDevWarningsInput {\n /** Whether `totalItems` was passed. */\n serverMode: boolean;\n /** The controlled `page`, if any. */\n controlledPage: number | undefined;\n /** The page callback, if any. */\n onPageChange: ((page: number) => void) | undefined;\n /** Whether the caller passed `pageSize` at all. */\n pageSizeControlled: boolean;\n /** The size-selector callback, if any. */\n onPageSizeChange: ((size: number) => void) | undefined;\n /** Whether sorting is delegated. */\n sortIsManual: boolean;\n /** Whether any column renders a header the user can click to sort. */\n hasSortableColumn: boolean;\n /** The sort callback, if any. */\n onSortChange: ((sort: never) => void) | undefined;\n /** Whether a search box is rendered at all. */\n searchable: boolean;\n /** The search callback, if any. */\n onSearchChange: ((term: string) => void) | undefined;\n}\n\n/**\n * Warn, in development only, about prop combinations that render a table which\n * silently lies.\n *\n * Each of these produces a screen that looks like it works: the header sorts and\n * nothing moves, the pager renders and clicking it does nothing.\n *\n * Four of them **are** type errors now — `DataTablePagingProps`,\n * `DataTablePageSizeProps`, `DataTableSortProps` and `DataTableSearchProps` reject\n * them at the call site —\n * so those warnings only reach a caller the types cannot: plain JavaScript, or\n * props arriving through an `any`-typed spread.\n *\n * Each one also has to be reachable. `totalItems` implies `manualSort`, so the\n * sort warning fired on every server-mode table — including one whose columns are\n * all plain, where no header is clickable and the sentence it prints (\"clicking a\n * sortable header changes the arrow and nothing else\") describes a state the user\n * cannot reach. A warning nobody can act on is not a warning: it teaches the\n * reader to skim past the two next to it, which *are* real, and the way out it\n * suggests is `onSortChange={() => {}}` — a callback that does nothing, that the\n * type-checker accepts, and that would hide the warning on the day a `sortable`\n * column does appear. So the sort warning asks for a sortable column first, the\n * way the search one already asks for `searchable`.\n *\n * The server-mode search warning is the one the types genuinely cannot afford. `totalItems` *implies*\n * `manualSearch`, so `searchable` with no `onSearchChange` is an inert search box\n * in server mode without anybody writing `manualSearch`. Expressing that means\n * the search axis has to read the paging axis, crossing two three-member unions\n * into nine — so it stays here, which is what \"runtime is the cheaper check\"\n * actually looks like when it is true.\n *\n * @param input - The resolved prop combination.\n */\nexport function useDevWarnings({\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n}: DataTableDevWarningsInput): void {\n useEffect(() => {\n if (!isDevBuild()) return;\n\n if (serverMode && controlledPage === undefined) {\n console.warn(\n \"[tempest] <DataTable totalItems> is server mode, which needs a controlled `page`. \" +\n \"Without it the pager moves the internal page while `data` keeps showing page 1.\",\n );\n }\n if (controlledPage !== undefined && !onPageChange) {\n console.warn(\n \"[tempest] <DataTable page> is controlled but `onPageChange` is missing, so the pager cannot do anything.\",\n );\n }\n if (onPageSizeChange && !pageSizeControlled) {\n console.warn(\n \"[tempest] <DataTable onPageSizeChange> needs a controlled `pageSize`. Without it the \" +\n \"selector reports the new size and the table keeps counting pages by 10.\",\n );\n }\n if (serverMode && searchable && !onSearchChange) {\n console.warn(\n \"[tempest] <DataTable totalItems searchable> delegates searching, so the box needs \" +\n \"`onSearchChange`. Without it the user types and nothing filters and nothing is reported.\",\n );\n }\n if (sortIsManual && hasSortableColumn && !onSortChange) {\n console.warn(\n \"[tempest] <DataTable> is sorting manually but `onSortChange` is missing: clicking a sortable header changes the arrow and nothing else.\",\n );\n }\n }, [\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n ]);\n}\n"],"mappings":";;;AA6DA,
|
|
1
|
+
{"version":3,"file":"use-dev-warnings.js","names":["useDevWarnings","isDevBuild","serverMode","controlledPage","onPageChange","onPageSizeChange","pageSizeControlled","searchable","onSearchChange","sortIsManual","hasSortableColumn","onSortChange"],"sources":["../../../src/components/DataTable/use-dev-warnings.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { isDevBuild } from \"../../utils/dev-mode\";\n\n/** What {@link useDevWarnings} needs to judge the prop combination. */\nexport interface DataTableDevWarningsInput {\n /** Whether `totalItems` was passed. */\n serverMode: boolean;\n /** The controlled `page`, if any. */\n controlledPage: number | undefined;\n /** The page callback, if any. */\n onPageChange: ((page: number) => void) | undefined;\n /** Whether the caller passed `pageSize` at all. */\n pageSizeControlled: boolean;\n /** The size-selector callback, if any. */\n onPageSizeChange: ((size: number) => void) | undefined;\n /** Whether sorting is delegated. */\n sortIsManual: boolean;\n /** Whether any column renders a header the user can click to sort. */\n hasSortableColumn: boolean;\n /** The sort callback, if any. */\n onSortChange: ((sort: never) => void) | undefined;\n /** Whether a search box is rendered at all. */\n searchable: boolean;\n /** The search callback, if any. */\n onSearchChange: ((term: string) => void) | undefined;\n}\n\n/**\n * Warn, in development only, about prop combinations that render a table which\n * silently lies.\n *\n * Each of these produces a screen that looks like it works: the header sorts and\n * nothing moves, the pager renders and clicking it does nothing.\n *\n * Four of them **are** type errors now — `DataTablePagingProps`,\n * `DataTablePageSizeProps`, `DataTableSortProps` and `DataTableSearchProps` reject\n * them at the call site —\n * so those warnings only reach a caller the types cannot: plain JavaScript, or\n * props arriving through an `any`-typed spread.\n *\n * Each one also has to be reachable. `totalItems` implies `manualSort`, so the\n * sort warning fired on every server-mode table — including one whose columns are\n * all plain, where no header is clickable and the sentence it prints (\"clicking a\n * sortable header changes the arrow and nothing else\") describes a state the user\n * cannot reach. A warning nobody can act on is not a warning: it teaches the\n * reader to skim past the two next to it, which *are* real, and the way out it\n * suggests is `onSortChange={() => {}}` — a callback that does nothing, that the\n * type-checker accepts, and that would hide the warning on the day a `sortable`\n * column does appear. So the sort warning asks for a sortable column first, the\n * way the search one already asks for `searchable`.\n *\n * The server-mode search warning is the one the types genuinely cannot afford. `totalItems` *implies*\n * `manualSearch`, so `searchable` with no `onSearchChange` is an inert search box\n * in server mode without anybody writing `manualSearch`. Expressing that means\n * the search axis has to read the paging axis, crossing two three-member unions\n * into nine — so it stays here, which is what \"runtime is the cheaper check\"\n * actually looks like when it is true.\n *\n * @param input - The resolved prop combination.\n */\nexport function useDevWarnings({\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n}: DataTableDevWarningsInput): void {\n useEffect(() => {\n if (!isDevBuild()) return;\n\n if (serverMode && controlledPage === undefined) {\n console.warn(\n \"[tempest] <DataTable totalItems> is server mode, which needs a controlled `page`. \" +\n \"Without it the pager moves the internal page while `data` keeps showing page 1.\",\n );\n }\n if (controlledPage !== undefined && !onPageChange) {\n console.warn(\n \"[tempest] <DataTable page> is controlled but `onPageChange` is missing, so the pager cannot do anything.\",\n );\n }\n if (onPageSizeChange && !pageSizeControlled) {\n console.warn(\n \"[tempest] <DataTable onPageSizeChange> needs a controlled `pageSize`. Without it the \" +\n \"selector reports the new size and the table keeps counting pages by 10.\",\n );\n }\n if (serverMode && searchable && !onSearchChange) {\n console.warn(\n \"[tempest] <DataTable totalItems searchable> delegates searching, so the box needs \" +\n \"`onSearchChange`. Without it the user types and nothing filters and nothing is reported.\",\n );\n }\n if (sortIsManual && hasSortableColumn && !onSortChange) {\n console.warn(\n \"[tempest] <DataTable> is sorting manually but `onSortChange` is missing: clicking a sortable header changes the arrow and nothing else.\",\n );\n }\n }, [\n serverMode,\n controlledPage,\n onPageChange,\n pageSizeControlled,\n onPageSizeChange,\n sortIsManual,\n hasSortableColumn,\n onSortChange,\n searchable,\n onSearchChange,\n ]);\n}\n"],"mappings":";;;AA6DA,SAAgBA,EAAe,EAC3B,eACA,mBACA,iBACA,uBACA,qBACA,iBACA,sBACA,iBACA,eACA,qBACgC;CAChC,QAAgB;EACZ,AAAKC,EAAW,MAEZC,KAAcC,MAAmB,KAAA,KACjC,QAAQ,KACJ,mKAEJ,GAEAA,MAAmB,KAAA,KAAa,CAACC,KACjC,QAAQ,KACJ,0GACJ,GAEAC,KAAoB,CAACC,KACrB,QAAQ,KACJ,8JAEJ,GAEAJ,KAAcK,KAAc,CAACC,KAC7B,QAAQ,KACJ,4KAEJ,GAEAC,KAAgBC,KAAqB,CAACC,KACtC,QAAQ,KACJ,yIACJ;CAER,GAAG;EACCT;EACAC;EACAC;EACAE;EACAD;EACAI;EACAC;EACAC;EACAJ;EACAC;CACJ,CAAC;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.cjs","names":[],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — label, helperText and error are the three states of\n * one message slot that every input in this SDK shares; removing them pushes the\n * scaffolding back into the app. DatePicker adds min, max and mode on top, which are\n * the field's own semantics.\n */\nimport { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Input } from \"@/components/Input\";\n\nexport interface DatePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"onChange\" | \"size\"\n> {\n /** ISO date string (`YYYY-MM-DD`) or empty. */\n value: string;\n onChange: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n /** Lower bound (`YYYY-MM-DD`). */\n min?: string;\n /** Upper bound (`YYYY-MM-DD`). */\n max?: string;\n /** Mode. `date` (default), `datetime-local`, `time`, or `month`. */\n mode?: \"date\" | \"datetime-local\" | \"time\" | \"month\";\n wrapperClassName?: string;\n}\n\n/**\n * Thin wrapper around the native `<input type=\"date\">` (or `datetime-local`,\n * `time`, `month`). For richer pickers, pair with `react-datepicker` directly\n * — this primitive keeps the SDK dep-free.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n { value, onChange, mode = \"date\", ...props },\n ref,\n) {\n return (\n <Input\n {...props}\n ref={ref}\n type={mode}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n});\n"],"mappings":"4FAkCA,
|
|
1
|
+
{"version":3,"file":"DatePicker.cjs","names":["forwardRef","Input","require_Input","react","react_jsx_runtime","DatePicker","props","mode","onChange","event"],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — label, helperText and error are the three states of\n * one message slot that every input in this SDK shares; removing them pushes the\n * scaffolding back into the app. DatePicker adds min, max and mode on top, which are\n * the field's own semantics.\n */\nimport { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Input } from \"@/components/Input\";\n\nexport interface DatePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"onChange\" | \"size\"\n> {\n /** ISO date string (`YYYY-MM-DD`) or empty. */\n value: string;\n onChange: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n /** Lower bound (`YYYY-MM-DD`). */\n min?: string;\n /** Upper bound (`YYYY-MM-DD`). */\n max?: string;\n /** Mode. `date` (default), `datetime-local`, `time`, or `month`. */\n mode?: \"date\" | \"datetime-local\" | \"time\" | \"month\";\n wrapperClassName?: string;\n}\n\n/**\n * Thin wrapper around the native `<input type=\"date\">` (or `datetime-local`,\n * `time`, `month`). For richer pickers, pair with `react-datepicker` directly\n * — this primitive keeps the SDK dep-free.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n { value, onChange, mode = \"date\", ...props },\n ref,\n) {\n return (\n <Input\n {...props}\n ref={ref}\n type={mode}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n});\n"],"mappings":"A,4FAkCA,IAAaK,GAAA,EAAaL,EAAAA,WAAAA,CAA8C,SACpE,CAAE,QAAO,WAAU,OAAO,OAAQ,GAAGM,GACrC,EACF,CACE,OACI,EAAAF,EAAA,IAAA,CAACH,EAAAA,MAAD,CACI,GAAIK,EACC,MACL,KAAMC,EACC,QACP,SAAW,GAAUC,EAASC,EAAM,OAAO,KAAK,CACnD,CAAA,CAET,CAAC,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — label, helperText and error are the three states of\n * one message slot that every input in this SDK shares; removing them pushes the\n * scaffolding back into the app. DatePicker adds min, max and mode on top, which are\n * the field's own semantics.\n */\nimport { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Input } from \"@/components/Input\";\n\nexport interface DatePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"onChange\" | \"size\"\n> {\n /** ISO date string (`YYYY-MM-DD`) or empty. */\n value: string;\n onChange: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n /** Lower bound (`YYYY-MM-DD`). */\n min?: string;\n /** Upper bound (`YYYY-MM-DD`). */\n max?: string;\n /** Mode. `date` (default), `datetime-local`, `time`, or `month`. */\n mode?: \"date\" | \"datetime-local\" | \"time\" | \"month\";\n wrapperClassName?: string;\n}\n\n/**\n * Thin wrapper around the native `<input type=\"date\">` (or `datetime-local`,\n * `time`, `month`). For richer pickers, pair with `react-datepicker` directly\n * — this primitive keeps the SDK dep-free.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n { value, onChange, mode = \"date\", ...props },\n ref,\n) {\n return (\n <Input\n {...props}\n ref={ref}\n type={mode}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n});\n"],"mappings":";;;;AAkCA,
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["DatePicker","forwardRef","props","Input","mode","onChange","event"],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — label, helperText and error are the three states of\n * one message slot that every input in this SDK shares; removing them pushes the\n * scaffolding back into the app. DatePicker adds min, max and mode on top, which are\n * the field's own semantics.\n */\nimport { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Input } from \"@/components/Input\";\n\nexport interface DatePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"onChange\" | \"size\"\n> {\n /** ISO date string (`YYYY-MM-DD`) or empty. */\n value: string;\n onChange: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n /** Lower bound (`YYYY-MM-DD`). */\n min?: string;\n /** Upper bound (`YYYY-MM-DD`). */\n max?: string;\n /** Mode. `date` (default), `datetime-local`, `time`, or `month`. */\n mode?: \"date\" | \"datetime-local\" | \"time\" | \"month\";\n wrapperClassName?: string;\n}\n\n/**\n * Thin wrapper around the native `<input type=\"date\">` (or `datetime-local`,\n * `time`, `month`). For richer pickers, pair with `react-datepicker` directly\n * — this primitive keeps the SDK dep-free.\n */\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n { value, onChange, mode = \"date\", ...props },\n ref,\n) {\n return (\n <Input\n {...props}\n ref={ref}\n type={mode}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n});\n"],"mappings":";;;;AAkCA,IAAaA,IAAaC,EAA8C,SACpE,EAAE,UAAO,aAAU,UAAO,QAAQ,GAAGC,KACrC,GACF;CACE,OACI,kBAACC,GAAD;EACI,GAAID;EACC;EACL,MAAME;EACC;EACP,WAAW,MAAUC,EAASC,EAAM,OAAO,KAAK;CACnD,CAAA;AAET,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.cjs","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — a range is two dates whose validity\n * depends on each other, so the body keeps both ends, the hovered preview end and\n * the open panel in one place; splitting the halves would mean each one reaching\n * into the other's state to clamp itself.\n */\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DateRangePicker.module.css\";\n\nexport type WeekStart = 0 | 1;\n\n/** A selected range. Either bound may be `null` while picking. */\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** Controlled selected range. */\n value: DateRange;\n /** Called with the new range as the user picks start then end. */\n onChange: (range: DateRange) => void;\n /** How many month grids to show side by side. Default `2`. */\n numberOfMonths?: number;\n /** Initial visible month (uncontrolled). Defaults to the range start or today. */\n defaultMonth?: Date;\n minDate?: Date;\n maxDate?: Date;\n /** First column of the week — `0` Sunday (default) or `1` Monday. */\n weekStartsOn?: WeekStart;\n}\n\nconst WEEKDAY_LABELS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTH_LABELS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\nconst DAYS_IN_GRID = 42;\n\nfunction makeDate(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction addMonths(date: Date, offset: number): Date {\n return makeDate(date.getFullYear(), date.getMonth() + offset, 1);\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isOutOfRange(date: Date, minDate?: Date, maxDate?: Date): boolean {\n const day = startOfDay(date).getTime();\n if (minDate && day < startOfDay(minDate).getTime()) return true;\n if (maxDate && day > startOfDay(maxDate).getTime()) return true;\n return false;\n}\n\n/** Inclusive-exclusive-agnostic \"strictly between a and b\" (a/b order-independent). */\nfunction isBetween(date: Date, a: Date, b: Date): boolean {\n const t = startOfDay(date).getTime();\n const lo = Math.min(startOfDay(a).getTime(), startOfDay(b).getTime());\n const hi = Math.max(startOfDay(a).getTime(), startOfDay(b).getTime());\n return t > lo && t < hi;\n}\n\nfunction buildGrid(month: Date, weekStartsOn: WeekStart): Date[] {\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n const firstWeekday = makeDate(year, monthIndex, 1).getDay();\n const leading = (firstWeekday - weekStartsOn + 7) % 7;\n const start = makeDate(year, monthIndex, 1 - leading);\n return Array.from({ length: DAYS_IN_GRID }, (_, i) =>\n makeDate(start.getFullYear(), start.getMonth(), start.getDate() + i),\n );\n}\n\n/**\n * Date-range picker: pick a start day, then an end day, across one or more\n * month grids. The hovered day previews the range before the end is committed.\n * Pure `Date` math — no date libraries. For a single date, use `Calendar`.\n *\n * Selection: first click sets `start` (clears `end`); the next click sets `end`\n * (auto-ordered if you click earlier than the start); a third click starts over.\n */\nexport function DateRangePicker({\n value,\n onChange,\n numberOfMonths = 2,\n defaultMonth,\n minDate,\n maxDate,\n weekStartsOn = 0,\n className,\n ...props\n}: DateRangePickerProps) {\n const [visibleMonth, setVisibleMonth] = useState<Date>(() => {\n const base = defaultMonth ?? value.start ?? new Date();\n return makeDate(base.getFullYear(), base.getMonth(), 1);\n });\n const [hovered, setHovered] = useState<Date | null>(null);\n\n const today = useMemo(() => startOfDay(new Date()), []);\n const weekdayLabels = useMemo(\n () => Array.from({ length: 7 }, (_, i) => WEEKDAY_LABELS[(i + weekStartsOn) % 7]),\n [weekStartsOn],\n );\n\n const selectDate = useCallback(\n (date: Date): void => {\n if (isOutOfRange(date, minDate, maxDate)) return;\n const { start, end } = value;\n if (!start || end) {\n onChange({ start: date, end: null });\n } else if (startOfDay(date).getTime() < startOfDay(start).getTime()) {\n onChange({ start: date, end: start });\n } else {\n onChange({ start, end: date });\n }\n },\n [value, onChange, minDate, maxDate],\n );\n\n const changeMonth = useCallback((offset: number): void => {\n setVisibleMonth((current) => addMonths(current, offset));\n }, []);\n\n // Effective end used for preview highlighting (hovered day while picking).\n const previewEnd = value.start && !value.end ? hovered : value.end;\n\n function dayState(date: Date): {\n selected: boolean;\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n } {\n const { start } = value;\n const end = previewEnd;\n const isStart = start ? isSameDay(date, start) : false;\n const isEnd = end ? isSameDay(date, end) : false;\n const inRange = start && end ? isBetween(date, start, end) : false;\n return { selected: isStart || isEnd, inRange, isStart, isEnd };\n }\n\n return (\n <div className={cn(styles.root, className)} {...props}>\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n >\n {\"‹\"}\n </button>\n <span className={styles.headerSpacer} aria-hidden />\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n >\n {\"›\"}\n </button>\n </div>\n\n <div className={styles.months} onMouseLeave={() => setHovered(null)}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, monthOffset) => {\n const month = addMonths(visibleMonth, monthOffset);\n const cells = buildGrid(month, weekStartsOn);\n return (\n <div key={monthOffset} className={styles.month}>\n <div className={styles.title} aria-live=\"polite\">\n {MONTH_LABELS[month.getMonth()]} {month.getFullYear()}\n </div>\n <div className={styles.weekdays} role=\"row\">\n {weekdayLabels.map((label) => (\n <span\n key={label}\n className={styles.weekday}\n role=\"columnheader\"\n >\n {label}\n </span>\n ))}\n </div>\n <div className={styles.grid} role=\"grid\">\n {cells.map((date, index) => {\n const inMonth = date.getMonth() === month.getMonth();\n const disabled = isOutOfRange(date, minDate, maxDate);\n const { selected, inRange, isStart, isEnd } = dayState(date);\n const isToday = isSameDay(date, today);\n return (\n <button\n key={index}\n type=\"button\"\n role=\"gridcell\"\n className={cn(\n styles.day,\n !inMonth && styles.outside,\n inRange && styles.inRange,\n selected && styles.selected,\n isStart && styles.rangeStart,\n isEnd && styles.rangeEnd,\n isToday && styles.today,\n )}\n aria-label={`${MONTH_LABELS[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`}\n aria-selected={selected}\n aria-current={isToday ? \"date\" : undefined}\n disabled={disabled}\n onClick={() => selectDate(date)}\n onMouseEnter={() => setHovered(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.cjs","names":["useState","useMemo","useCallback","cn","styles","require_cn","require_DateRangePicker_module","react","react_jsx_runtime","WEEKDAY_LABELS","MONTH_LABELS","DAYS_IN_GRID","makeDate","year","month","day","startOfDay","date","addMonths","offset","isSameDay","a","b","isOutOfRange","minDate","maxDate","isBetween","t","lo","hi","buildGrid","monthIndex","start","weekStartsOn","i","DateRangePicker","props","visibleMonth","setVisibleMonth","base","defaultMonth","value","hovered","setHovered","today","weekdayLabels","selectDate","end","onChange","changeMonth","current","previewEnd","dayState","isStart","isEnd","inRange","className","numberOfMonths","monthOffset","cells","label","inMonth","disabled","isToday","selected","index"],"sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — a range is two dates whose validity\n * depends on each other, so the body keeps both ends, the hovered preview end and\n * the open panel in one place; splitting the halves would mean each one reaching\n * into the other's state to clamp itself.\n */\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DateRangePicker.module.css\";\n\nexport type WeekStart = 0 | 1;\n\n/** A selected range. Either bound may be `null` while picking. */\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** Controlled selected range. */\n value: DateRange;\n /** Called with the new range as the user picks start then end. */\n onChange: (range: DateRange) => void;\n /** How many month grids to show side by side. Default `2`. */\n numberOfMonths?: number;\n /** Initial visible month (uncontrolled). Defaults to the range start or today. */\n defaultMonth?: Date;\n minDate?: Date;\n maxDate?: Date;\n /** First column of the week — `0` Sunday (default) or `1` Monday. */\n weekStartsOn?: WeekStart;\n}\n\nconst WEEKDAY_LABELS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTH_LABELS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\nconst DAYS_IN_GRID = 42;\n\nfunction makeDate(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction addMonths(date: Date, offset: number): Date {\n return makeDate(date.getFullYear(), date.getMonth() + offset, 1);\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isOutOfRange(date: Date, minDate?: Date, maxDate?: Date): boolean {\n const day = startOfDay(date).getTime();\n if (minDate && day < startOfDay(minDate).getTime()) return true;\n if (maxDate && day > startOfDay(maxDate).getTime()) return true;\n return false;\n}\n\n/** Inclusive-exclusive-agnostic \"strictly between a and b\" (a/b order-independent). */\nfunction isBetween(date: Date, a: Date, b: Date): boolean {\n const t = startOfDay(date).getTime();\n const lo = Math.min(startOfDay(a).getTime(), startOfDay(b).getTime());\n const hi = Math.max(startOfDay(a).getTime(), startOfDay(b).getTime());\n return t > lo && t < hi;\n}\n\nfunction buildGrid(month: Date, weekStartsOn: WeekStart): Date[] {\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n const firstWeekday = makeDate(year, monthIndex, 1).getDay();\n const leading = (firstWeekday - weekStartsOn + 7) % 7;\n const start = makeDate(year, monthIndex, 1 - leading);\n return Array.from({ length: DAYS_IN_GRID }, (_, i) =>\n makeDate(start.getFullYear(), start.getMonth(), start.getDate() + i),\n );\n}\n\n/**\n * Date-range picker: pick a start day, then an end day, across one or more\n * month grids. The hovered day previews the range before the end is committed.\n * Pure `Date` math — no date libraries. For a single date, use `Calendar`.\n *\n * Selection: first click sets `start` (clears `end`); the next click sets `end`\n * (auto-ordered if you click earlier than the start); a third click starts over.\n */\nexport function DateRangePicker({\n value,\n onChange,\n numberOfMonths = 2,\n defaultMonth,\n minDate,\n maxDate,\n weekStartsOn = 0,\n className,\n ...props\n}: DateRangePickerProps) {\n const [visibleMonth, setVisibleMonth] = useState<Date>(() => {\n const base = defaultMonth ?? value.start ?? new Date();\n return makeDate(base.getFullYear(), base.getMonth(), 1);\n });\n const [hovered, setHovered] = useState<Date | null>(null);\n\n const today = useMemo(() => startOfDay(new Date()), []);\n const weekdayLabels = useMemo(\n () => Array.from({ length: 7 }, (_, i) => WEEKDAY_LABELS[(i + weekStartsOn) % 7]),\n [weekStartsOn],\n );\n\n const selectDate = useCallback(\n (date: Date): void => {\n if (isOutOfRange(date, minDate, maxDate)) return;\n const { start, end } = value;\n if (!start || end) {\n onChange({ start: date, end: null });\n } else if (startOfDay(date).getTime() < startOfDay(start).getTime()) {\n onChange({ start: date, end: start });\n } else {\n onChange({ start, end: date });\n }\n },\n [value, onChange, minDate, maxDate],\n );\n\n const changeMonth = useCallback((offset: number): void => {\n setVisibleMonth((current) => addMonths(current, offset));\n }, []);\n\n // Effective end used for preview highlighting (hovered day while picking).\n const previewEnd = value.start && !value.end ? hovered : value.end;\n\n function dayState(date: Date): {\n selected: boolean;\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n } {\n const { start } = value;\n const end = previewEnd;\n const isStart = start ? isSameDay(date, start) : false;\n const isEnd = end ? isSameDay(date, end) : false;\n const inRange = start && end ? isBetween(date, start, end) : false;\n return { selected: isStart || isEnd, inRange, isStart, isEnd };\n }\n\n return (\n <div className={cn(styles.root, className)} {...props}>\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n >\n {\"‹\"}\n </button>\n <span className={styles.headerSpacer} aria-hidden />\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n >\n {\"›\"}\n </button>\n </div>\n\n <div className={styles.months} onMouseLeave={() => setHovered(null)}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, monthOffset) => {\n const month = addMonths(visibleMonth, monthOffset);\n const cells = buildGrid(month, weekStartsOn);\n return (\n <div key={monthOffset} className={styles.month}>\n <div className={styles.title} aria-live=\"polite\">\n {MONTH_LABELS[month.getMonth()]} {month.getFullYear()}\n </div>\n <div className={styles.weekdays} role=\"row\">\n {weekdayLabels.map((label) => (\n <span\n key={label}\n className={styles.weekday}\n role=\"columnheader\"\n >\n {label}\n </span>\n ))}\n </div>\n <div className={styles.grid} role=\"grid\">\n {cells.map((date, index) => {\n const inMonth = date.getMonth() === month.getMonth();\n const disabled = isOutOfRange(date, minDate, maxDate);\n const { selected, inRange, isStart, isEnd } = dayState(date);\n const isToday = isSameDay(date, today);\n return (\n <button\n key={index}\n type=\"button\"\n role=\"gridcell\"\n className={cn(\n styles.day,\n !inMonth && styles.outside,\n inRange && styles.inRange,\n selected && styles.selected,\n isStart && styles.rangeStart,\n isEnd && styles.rangeEnd,\n isToday && styles.today,\n )}\n aria-label={`${MONTH_LABELS[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`}\n aria-selected={selected}\n aria-current={isToday ? \"date\" : undefined}\n disabled={disabled}\n onClick={() => selectDate(date)}\n onMouseEnter={() => setHovered(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — a range is two dates whose validity\n * depends on each other, so the body keeps both ends, the hovered preview end and\n * the open panel in one place; splitting the halves would mean each one reaching\n * into the other's state to clamp itself.\n */\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DateRangePicker.module.css\";\n\nexport type WeekStart = 0 | 1;\n\n/** A selected range. Either bound may be `null` while picking. */\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** Controlled selected range. */\n value: DateRange;\n /** Called with the new range as the user picks start then end. */\n onChange: (range: DateRange) => void;\n /** How many month grids to show side by side. Default `2`. */\n numberOfMonths?: number;\n /** Initial visible month (uncontrolled). Defaults to the range start or today. */\n defaultMonth?: Date;\n minDate?: Date;\n maxDate?: Date;\n /** First column of the week — `0` Sunday (default) or `1` Monday. */\n weekStartsOn?: WeekStart;\n}\n\nconst WEEKDAY_LABELS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTH_LABELS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\nconst DAYS_IN_GRID = 42;\n\nfunction makeDate(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction addMonths(date: Date, offset: number): Date {\n return makeDate(date.getFullYear(), date.getMonth() + offset, 1);\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isOutOfRange(date: Date, minDate?: Date, maxDate?: Date): boolean {\n const day = startOfDay(date).getTime();\n if (minDate && day < startOfDay(minDate).getTime()) return true;\n if (maxDate && day > startOfDay(maxDate).getTime()) return true;\n return false;\n}\n\n/** Inclusive-exclusive-agnostic \"strictly between a and b\" (a/b order-independent). */\nfunction isBetween(date: Date, a: Date, b: Date): boolean {\n const t = startOfDay(date).getTime();\n const lo = Math.min(startOfDay(a).getTime(), startOfDay(b).getTime());\n const hi = Math.max(startOfDay(a).getTime(), startOfDay(b).getTime());\n return t > lo && t < hi;\n}\n\nfunction buildGrid(month: Date, weekStartsOn: WeekStart): Date[] {\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n const firstWeekday = makeDate(year, monthIndex, 1).getDay();\n const leading = (firstWeekday - weekStartsOn + 7) % 7;\n const start = makeDate(year, monthIndex, 1 - leading);\n return Array.from({ length: DAYS_IN_GRID }, (_, i) =>\n makeDate(start.getFullYear(), start.getMonth(), start.getDate() + i),\n );\n}\n\n/**\n * Date-range picker: pick a start day, then an end day, across one or more\n * month grids. The hovered day previews the range before the end is committed.\n * Pure `Date` math — no date libraries. For a single date, use `Calendar`.\n *\n * Selection: first click sets `start` (clears `end`); the next click sets `end`\n * (auto-ordered if you click earlier than the start); a third click starts over.\n */\nexport function DateRangePicker({\n value,\n onChange,\n numberOfMonths = 2,\n defaultMonth,\n minDate,\n maxDate,\n weekStartsOn = 0,\n className,\n ...props\n}: DateRangePickerProps) {\n const [visibleMonth, setVisibleMonth] = useState<Date>(() => {\n const base = defaultMonth ?? value.start ?? new Date();\n return makeDate(base.getFullYear(), base.getMonth(), 1);\n });\n const [hovered, setHovered] = useState<Date | null>(null);\n\n const today = useMemo(() => startOfDay(new Date()), []);\n const weekdayLabels = useMemo(\n () => Array.from({ length: 7 }, (_, i) => WEEKDAY_LABELS[(i + weekStartsOn) % 7]),\n [weekStartsOn],\n );\n\n const selectDate = useCallback(\n (date: Date): void => {\n if (isOutOfRange(date, minDate, maxDate)) return;\n const { start, end } = value;\n if (!start || end) {\n onChange({ start: date, end: null });\n } else if (startOfDay(date).getTime() < startOfDay(start).getTime()) {\n onChange({ start: date, end: start });\n } else {\n onChange({ start, end: date });\n }\n },\n [value, onChange, minDate, maxDate],\n );\n\n const changeMonth = useCallback((offset: number): void => {\n setVisibleMonth((current) => addMonths(current, offset));\n }, []);\n\n // Effective end used for preview highlighting (hovered day while picking).\n const previewEnd = value.start && !value.end ? hovered : value.end;\n\n function dayState(date: Date): {\n selected: boolean;\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n } {\n const { start } = value;\n const end = previewEnd;\n const isStart = start ? isSameDay(date, start) : false;\n const isEnd = end ? isSameDay(date, end) : false;\n const inRange = start && end ? isBetween(date, start, end) : false;\n return { selected: isStart || isEnd, inRange, isStart, isEnd };\n }\n\n return (\n <div className={cn(styles.root, className)} {...props}>\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n >\n {\"‹\"}\n </button>\n <span className={styles.headerSpacer} aria-hidden />\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n >\n {\"›\"}\n </button>\n </div>\n\n <div className={styles.months} onMouseLeave={() => setHovered(null)}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, monthOffset) => {\n const month = addMonths(visibleMonth, monthOffset);\n const cells = buildGrid(month, weekStartsOn);\n return (\n <div key={monthOffset} className={styles.month}>\n <div className={styles.title} aria-live=\"polite\">\n {MONTH_LABELS[month.getMonth()]} {month.getFullYear()}\n </div>\n <div className={styles.weekdays} role=\"row\">\n {weekdayLabels.map((label) => (\n <span\n key={label}\n className={styles.weekday}\n role=\"columnheader\"\n >\n {label}\n </span>\n ))}\n </div>\n <div className={styles.grid} role=\"grid\">\n {cells.map((date, index) => {\n const inMonth = date.getMonth() === month.getMonth();\n const disabled = isOutOfRange(date, minDate, maxDate);\n const { selected, inRange, isStart, isEnd } = dayState(date);\n const isToday = isSameDay(date, today);\n return (\n <button\n key={index}\n type=\"button\"\n role=\"gridcell\"\n className={cn(\n styles.day,\n !inMonth && styles.outside,\n inRange && styles.inRange,\n selected && styles.selected,\n isStart && styles.rangeStart,\n isEnd && styles.rangeEnd,\n isToday && styles.today,\n )}\n aria-label={`${MONTH_LABELS[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`}\n aria-selected={selected}\n aria-current={isToday ? \"date\" : undefined}\n disabled={disabled}\n onClick={() => selectDate(date)}\n onMouseEnter={() => setHovered(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","names":["styles","DateRangePicker_module_default","WEEKDAY_LABELS","MONTH_LABELS","DAYS_IN_GRID","makeDate","year","month","day","startOfDay","date","addMonths","offset","isSameDay","a","b","isOutOfRange","minDate","maxDate","isBetween","t","lo","hi","buildGrid","monthIndex","start","weekStartsOn","i","DateRangePicker","props","visibleMonth","setVisibleMonth","useState","base","defaultMonth","value","hovered","setHovered","today","useMemo","weekdayLabels","selectDate","useCallback","end","onChange","changeMonth","current","previewEnd","dayState","isStart","isEnd","inRange","cn","className","numberOfMonths","monthOffset","cells","label","inMonth","disabled","isToday","selected","index"],"sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, function-lines — a range is two dates whose validity\n * depends on each other, so the body keeps both ends, the hovered preview end and\n * the open panel in one place; splitting the halves would mean each one reaching\n * into the other's state to clamp itself.\n */\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DateRangePicker.module.css\";\n\nexport type WeekStart = 0 | 1;\n\n/** A selected range. Either bound may be `null` while picking. */\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /** Controlled selected range. */\n value: DateRange;\n /** Called with the new range as the user picks start then end. */\n onChange: (range: DateRange) => void;\n /** How many month grids to show side by side. Default `2`. */\n numberOfMonths?: number;\n /** Initial visible month (uncontrolled). Defaults to the range start or today. */\n defaultMonth?: Date;\n minDate?: Date;\n maxDate?: Date;\n /** First column of the week — `0` Sunday (default) or `1` Monday. */\n weekStartsOn?: WeekStart;\n}\n\nconst WEEKDAY_LABELS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTH_LABELS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\nconst DAYS_IN_GRID = 42;\n\nfunction makeDate(year: number, month: number, day: number): Date {\n return new Date(year, month, day);\n}\n\nfunction startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction addMonths(date: Date, offset: number): Date {\n return makeDate(date.getFullYear(), date.getMonth() + offset, 1);\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isOutOfRange(date: Date, minDate?: Date, maxDate?: Date): boolean {\n const day = startOfDay(date).getTime();\n if (minDate && day < startOfDay(minDate).getTime()) return true;\n if (maxDate && day > startOfDay(maxDate).getTime()) return true;\n return false;\n}\n\n/** Inclusive-exclusive-agnostic \"strictly between a and b\" (a/b order-independent). */\nfunction isBetween(date: Date, a: Date, b: Date): boolean {\n const t = startOfDay(date).getTime();\n const lo = Math.min(startOfDay(a).getTime(), startOfDay(b).getTime());\n const hi = Math.max(startOfDay(a).getTime(), startOfDay(b).getTime());\n return t > lo && t < hi;\n}\n\nfunction buildGrid(month: Date, weekStartsOn: WeekStart): Date[] {\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n const firstWeekday = makeDate(year, monthIndex, 1).getDay();\n const leading = (firstWeekday - weekStartsOn + 7) % 7;\n const start = makeDate(year, monthIndex, 1 - leading);\n return Array.from({ length: DAYS_IN_GRID }, (_, i) =>\n makeDate(start.getFullYear(), start.getMonth(), start.getDate() + i),\n );\n}\n\n/**\n * Date-range picker: pick a start day, then an end day, across one or more\n * month grids. The hovered day previews the range before the end is committed.\n * Pure `Date` math — no date libraries. For a single date, use `Calendar`.\n *\n * Selection: first click sets `start` (clears `end`); the next click sets `end`\n * (auto-ordered if you click earlier than the start); a third click starts over.\n */\nexport function DateRangePicker({\n value,\n onChange,\n numberOfMonths = 2,\n defaultMonth,\n minDate,\n maxDate,\n weekStartsOn = 0,\n className,\n ...props\n}: DateRangePickerProps) {\n const [visibleMonth, setVisibleMonth] = useState<Date>(() => {\n const base = defaultMonth ?? value.start ?? new Date();\n return makeDate(base.getFullYear(), base.getMonth(), 1);\n });\n const [hovered, setHovered] = useState<Date | null>(null);\n\n const today = useMemo(() => startOfDay(new Date()), []);\n const weekdayLabels = useMemo(\n () => Array.from({ length: 7 }, (_, i) => WEEKDAY_LABELS[(i + weekStartsOn) % 7]),\n [weekStartsOn],\n );\n\n const selectDate = useCallback(\n (date: Date): void => {\n if (isOutOfRange(date, minDate, maxDate)) return;\n const { start, end } = value;\n if (!start || end) {\n onChange({ start: date, end: null });\n } else if (startOfDay(date).getTime() < startOfDay(start).getTime()) {\n onChange({ start: date, end: start });\n } else {\n onChange({ start, end: date });\n }\n },\n [value, onChange, minDate, maxDate],\n );\n\n const changeMonth = useCallback((offset: number): void => {\n setVisibleMonth((current) => addMonths(current, offset));\n }, []);\n\n // Effective end used for preview highlighting (hovered day while picking).\n const previewEnd = value.start && !value.end ? hovered : value.end;\n\n function dayState(date: Date): {\n selected: boolean;\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n } {\n const { start } = value;\n const end = previewEnd;\n const isStart = start ? isSameDay(date, start) : false;\n const isEnd = end ? isSameDay(date, end) : false;\n const inRange = start && end ? isBetween(date, start, end) : false;\n return { selected: isStart || isEnd, inRange, isStart, isEnd };\n }\n\n return (\n <div className={cn(styles.root, className)} {...props}>\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n >\n {\"‹\"}\n </button>\n <span className={styles.headerSpacer} aria-hidden />\n <button\n type=\"button\"\n className={styles.nav}\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n >\n {\"›\"}\n </button>\n </div>\n\n <div className={styles.months} onMouseLeave={() => setHovered(null)}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, monthOffset) => {\n const month = addMonths(visibleMonth, monthOffset);\n const cells = buildGrid(month, weekStartsOn);\n return (\n <div key={monthOffset} className={styles.month}>\n <div className={styles.title} aria-live=\"polite\">\n {MONTH_LABELS[month.getMonth()]} {month.getFullYear()}\n </div>\n <div className={styles.weekdays} role=\"row\">\n {weekdayLabels.map((label) => (\n <span\n key={label}\n className={styles.weekday}\n role=\"columnheader\"\n >\n {label}\n </span>\n ))}\n </div>\n <div className={styles.grid} role=\"grid\">\n {cells.map((date, index) => {\n const inMonth = date.getMonth() === month.getMonth();\n const disabled = isOutOfRange(date, minDate, maxDate);\n const { selected, inRange, isStart, isEnd } = dayState(date);\n const isToday = isSameDay(date, today);\n return (\n <button\n key={index}\n type=\"button\"\n role=\"gridcell\"\n className={cn(\n styles.day,\n !inMonth && styles.outside,\n inRange && styles.inRange,\n selected && styles.selected,\n isStart && styles.rangeStart,\n isEnd && styles.rangeEnd,\n isToday && styles.today,\n )}\n aria-label={`${MONTH_LABELS[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`}\n aria-selected={selected}\n aria-current={isToday ? \"date\" : undefined}\n disabled={disabled}\n onClick={() => selectDate(date)}\n onMouseEnter={() => setHovered(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.module.cjs","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.module.cjs","names":["root","header","headerSpacer","nav","months","month","title","weekdays","grid","weekday","day","outside","today","inRange","selected","rangeStart","rangeEnd","DateRangePicker_module_default"],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.module.js","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.module.js","names":["root","header","headerSpacer","nav","months","month","title","weekdays","grid","weekday","day","outside","today","inRange","selected","rangeStart","rangeEnd","DateRangePicker_module_default"],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DescriptionList.cjs","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DescriptionList.module.css\";\n\nexport interface DescriptionListItem {\n /** The key/label rendered inside a `<dt>`. */\n term: ReactNode;\n /** The value rendered inside a `<dd>`. */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** Term/description pairs rendered as `<dt>`/`<dd>` rows. */\n items: DescriptionListItem[];\n}\n\n/**\n * Renders a semantic `<dl>` of term/description pairs with minimal\n * token-based key/value styling.\n *\n * @param items - The term/description pairs to render.\n * @returns The rendered description list.\n */\nexport function DescriptionList({ items, className, ...props }: DescriptionListProps) {\n return (\n <dl className={cn(styles.list, className)} {...props}>\n {items.map((item, index) => (\n <Fragment key={index}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n"],"mappings":"sIAwBA,
|
|
1
|
+
{"version":3,"file":"DescriptionList.cjs","names":["cn","styles","Fragment","require_cn","require_DescriptionList_module","react","react_jsx_runtime","DescriptionList","props","className","items","item","index"],"sources":["../../../src/components/DescriptionList/DescriptionList.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DescriptionList.module.css\";\n\nexport interface DescriptionListItem {\n /** The key/label rendered inside a `<dt>`. */\n term: ReactNode;\n /** The value rendered inside a `<dd>`. */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** Term/description pairs rendered as `<dt>`/`<dd>` rows. */\n items: DescriptionListItem[];\n}\n\n/**\n * Renders a semantic `<dl>` of term/description pairs with minimal\n * token-based key/value styling.\n *\n * @param items - The term/description pairs to render.\n * @returns The rendered description list.\n */\nexport function DescriptionList({ items, className, ...props }: DescriptionListProps) {\n return (\n <dl className={cn(styles.list, className)} {...props}>\n {items.map((item, index) => (\n <Fragment key={index}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n"],"mappings":"A,sIAwBA,SAAgBO,EAAgB,CAAE,QAAO,YAAW,GAAGC,GAA+B,CAClF,OACI,EAAAF,EAAA,IAAA,CAAC,KAAD,CAAI,UAAWN,EAAAA,GAAGC,EAAAA,QAAO,KAAMQ,CAAS,EAAG,GAAID,EAC1C,SAAAE,EAAM,KAAK,EAAM,KACd,EAAAJ,EAAA,KAAA,CAACJ,EAAAA,SAAD,CAAA,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,KAAD,CAAI,UAAWL,EAAAA,QAAO,KAAO,SAAAU,EAAK,IAAS,CAAA,GAC3C,EAAAL,EAAA,IAAA,CAAC,KAAD,CAAI,UAAWL,EAAAA,QAAO,YAAc,SAAAU,EAAK,WAAgB,CAAA,CACnD,CAAA,EAHKC,CAGL,CACb,CACD,CAAA,CAEZ,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DescriptionList.js","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DescriptionList.module.css\";\n\nexport interface DescriptionListItem {\n /** The key/label rendered inside a `<dt>`. */\n term: ReactNode;\n /** The value rendered inside a `<dd>`. */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** Term/description pairs rendered as `<dt>`/`<dd>` rows. */\n items: DescriptionListItem[];\n}\n\n/**\n * Renders a semantic `<dl>` of term/description pairs with minimal\n * token-based key/value styling.\n *\n * @param items - The term/description pairs to render.\n * @returns The rendered description list.\n */\nexport function DescriptionList({ items, className, ...props }: DescriptionListProps) {\n return (\n <dl className={cn(styles.list, className)} {...props}>\n {items.map((item, index) => (\n <Fragment key={index}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n"],"mappings":";;;;;AAwBA,
|
|
1
|
+
{"version":3,"file":"DescriptionList.js","names":["styles","DescriptionList_module_default","DescriptionList","props","cn","className","items","Fragment","item","index"],"sources":["../../../src/components/DescriptionList/DescriptionList.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./DescriptionList.module.css\";\n\nexport interface DescriptionListItem {\n /** The key/label rendered inside a `<dt>`. */\n term: ReactNode;\n /** The value rendered inside a `<dd>`. */\n description: ReactNode;\n}\n\nexport interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {\n /** Term/description pairs rendered as `<dt>`/`<dd>` rows. */\n items: DescriptionListItem[];\n}\n\n/**\n * Renders a semantic `<dl>` of term/description pairs with minimal\n * token-based key/value styling.\n *\n * @param items - The term/description pairs to render.\n * @returns The rendered description list.\n */\nexport function DescriptionList({ items, className, ...props }: DescriptionListProps) {\n return (\n <dl className={cn(styles.list, className)} {...props}>\n {items.map((item, index) => (\n <Fragment key={index}>\n <dt className={styles.term}>{item.term}</dt>\n <dd className={styles.description}>{item.description}</dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n"],"mappings":";;;;;AAwBA,SAAgBE,EAAgB,EAAE,UAAO,cAAW,GAAGC,KAA+B;CAClF,OACI,kBAAC,MAAD;EAAI,WAAWC,EAAGJ,EAAO,MAAMK,CAAS;EAAG,GAAIF;EAC1C,UAAAG,EAAM,KAAK,GAAM,MACd,kBAACC,GAAD,EAAA,UAAA,CACI,kBAAC,MAAD;GAAI,WAAWP,EAAO;GAAO,UAAAQ,EAAK;EAAS,CAAA,GAC3C,kBAAC,MAAD;GAAI,WAAWR,EAAO;GAAc,UAAAQ,EAAK;EAAgB,CAAA,CACnD,EAAA,GAHKC,CAGL,CACb;CACD,CAAA;AAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DescriptionList.module.cjs","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"DescriptionList.module.cjs","names":["list","term","description","DescriptionList_module_default"],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DescriptionList.module.js","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"DescriptionList.module.js","names":["list","term","description","DescriptionList_module_default"],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.cjs","names":[],"sources":["../../../src/components/Divider/Divider.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Divider.module.css\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerVariant = \"solid\" | \"dashed\";\nexport type DividerAlign = \"start\" | \"center\" | \"end\";\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n /** Optional label rendered inside the divider (horizontal only). */\n label?: ReactNode;\n /** Label horizontal position (only when `label` provided). Defaults to `center`. */\n align?: DividerAlign;\n}\n\n/**\n * Horizontal or vertical visual separator. When `label` is provided in\n * horizontal mode the divider splits and centers the label between two lines.\n */\nexport function Divider({\n orientation = \"horizontal\",\n variant = \"solid\",\n label,\n align = \"center\",\n className,\n ...props\n}: DividerProps) {\n if (orientation === \"vertical\") {\n return (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn(\n styles.divider,\n styles.vertical,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n {...props}\n />\n );\n }\n\n if (!label) {\n return (\n <hr\n className={cn(\n styles.divider,\n styles.horizontal,\n styles.bare,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n />\n );\n }\n\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n styles.divider,\n styles.horizontal,\n variant === \"dashed\" && styles.dashed,\n align === \"start\" && styles.alignStart,\n align === \"end\" && styles.alignEnd,\n className,\n )}\n {...props}\n >\n {label}\n </div>\n );\n}\n"],"mappings":"2GAqBA,
|
|
1
|
+
{"version":3,"file":"Divider.cjs","names":["cn","styles","require_cn","require_Divider_module","react_jsx_runtime","Divider","props","orientation","variant","className","label","align"],"sources":["../../../src/components/Divider/Divider.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Divider.module.css\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerVariant = \"solid\" | \"dashed\";\nexport type DividerAlign = \"start\" | \"center\" | \"end\";\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n /** Optional label rendered inside the divider (horizontal only). */\n label?: ReactNode;\n /** Label horizontal position (only when `label` provided). Defaults to `center`. */\n align?: DividerAlign;\n}\n\n/**\n * Horizontal or vertical visual separator. When `label` is provided in\n * horizontal mode the divider splits and centers the label between two lines.\n */\nexport function Divider({\n orientation = \"horizontal\",\n variant = \"solid\",\n label,\n align = \"center\",\n className,\n ...props\n}: DividerProps) {\n if (orientation === \"vertical\") {\n return (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn(\n styles.divider,\n styles.vertical,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n {...props}\n />\n );\n }\n\n if (!label) {\n return (\n <hr\n className={cn(\n styles.divider,\n styles.horizontal,\n styles.bare,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n />\n );\n }\n\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n styles.divider,\n styles.horizontal,\n variant === \"dashed\" && styles.dashed,\n align === \"start\" && styles.alignStart,\n align === \"end\" && styles.alignEnd,\n className,\n )}\n {...props}\n >\n {label}\n </div>\n );\n}\n"],"mappings":"A,2GAqBA,SAAgBK,EAAQ,CACpB,cAAc,aACd,UAAU,QACV,QACA,QAAQ,SACR,YACA,GAAGC,GACU,CA+Bb,OA9BIC,IAAgB,YAEZ,EAAAH,EAAA,IAAA,CAAC,OAAD,CACI,KAAK,YACL,mBAAiB,WACjB,UAAWJ,EAAAA,GACPC,EAAAA,QAAO,QACPA,EAAAA,QAAO,SACPO,IAAY,UAAYP,EAAAA,QAAO,OAC/BQ,CACJ,EACA,GAAIH,CACP,CAAA,EAIJI,GAeD,EAAAN,EAAA,IAAA,CAAC,MAAD,CACI,KAAK,YACL,mBAAiB,aACjB,UAAWJ,EAAAA,GACPC,EAAAA,QAAO,QACPA,EAAAA,QAAO,WACPO,IAAY,UAAYP,EAAAA,QAAO,OAC/BU,IAAU,SAAWV,EAAAA,QAAO,WAC5BU,IAAU,OAASV,EAAAA,QAAO,SAC1BQ,CACJ,EACA,GAAIH,EAEH,SAAAI,CACA,CAAA,GA3BD,EAAAN,EAAA,IAAA,CAAC,KAAD,CACI,UAAWJ,EAAAA,GACPC,EAAAA,QAAO,QACPA,EAAAA,QAAO,WACPA,EAAAA,QAAO,KACPO,IAAY,UAAYP,EAAAA,QAAO,OAC/BQ,CACJ,CACH,CAAA,CAqBb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.js","names":[],"sources":["../../../src/components/Divider/Divider.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Divider.module.css\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerVariant = \"solid\" | \"dashed\";\nexport type DividerAlign = \"start\" | \"center\" | \"end\";\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n /** Optional label rendered inside the divider (horizontal only). */\n label?: ReactNode;\n /** Label horizontal position (only when `label` provided). Defaults to `center`. */\n align?: DividerAlign;\n}\n\n/**\n * Horizontal or vertical visual separator. When `label` is provided in\n * horizontal mode the divider splits and centers the label between two lines.\n */\nexport function Divider({\n orientation = \"horizontal\",\n variant = \"solid\",\n label,\n align = \"center\",\n className,\n ...props\n}: DividerProps) {\n if (orientation === \"vertical\") {\n return (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn(\n styles.divider,\n styles.vertical,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n {...props}\n />\n );\n }\n\n if (!label) {\n return (\n <hr\n className={cn(\n styles.divider,\n styles.horizontal,\n styles.bare,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n />\n );\n }\n\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n styles.divider,\n styles.horizontal,\n variant === \"dashed\" && styles.dashed,\n align === \"start\" && styles.alignStart,\n align === \"end\" && styles.alignEnd,\n className,\n )}\n {...props}\n >\n {label}\n </div>\n );\n}\n"],"mappings":";;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"Divider.js","names":["styles","Divider_module_default","Divider","props","orientation","cn","variant","className","label","align"],"sources":["../../../src/components/Divider/Divider.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Divider.module.css\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerVariant = \"solid\" | \"dashed\";\nexport type DividerAlign = \"start\" | \"center\" | \"end\";\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n /** Optional label rendered inside the divider (horizontal only). */\n label?: ReactNode;\n /** Label horizontal position (only when `label` provided). Defaults to `center`. */\n align?: DividerAlign;\n}\n\n/**\n * Horizontal or vertical visual separator. When `label` is provided in\n * horizontal mode the divider splits and centers the label between two lines.\n */\nexport function Divider({\n orientation = \"horizontal\",\n variant = \"solid\",\n label,\n align = \"center\",\n className,\n ...props\n}: DividerProps) {\n if (orientation === \"vertical\") {\n return (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n className={cn(\n styles.divider,\n styles.vertical,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n {...props}\n />\n );\n }\n\n if (!label) {\n return (\n <hr\n className={cn(\n styles.divider,\n styles.horizontal,\n styles.bare,\n variant === \"dashed\" && styles.dashed,\n className,\n )}\n />\n );\n }\n\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n styles.divider,\n styles.horizontal,\n variant === \"dashed\" && styles.dashed,\n align === \"start\" && styles.alignStart,\n align === \"end\" && styles.alignEnd,\n className,\n )}\n {...props}\n >\n {label}\n </div>\n );\n}\n"],"mappings":";;;;AAqBA,SAAgBE,EAAQ,EACpB,iBAAc,cACd,aAAU,SACV,UACA,WAAQ,UACR,cACA,GAAGC,KACU;CA+Bb,OA9BIC,MAAgB,aAEZ,kBAAC,QAAD;EACI,MAAK;EACL,oBAAiB;EACjB,WAAWC,EACPL,EAAO,SACPA,EAAO,UACPM,MAAY,YAAYN,EAAO,QAC/BO,CACJ;EACA,GAAIJ;CACP,CAAA,IAIJK,IAeD,kBAAC,OAAD;EACI,MAAK;EACL,oBAAiB;EACjB,WAAWH,EACPL,EAAO,SACPA,EAAO,YACPM,MAAY,YAAYN,EAAO,QAC/BS,MAAU,WAAWT,EAAO,YAC5BS,MAAU,SAAST,EAAO,UAC1BO,CACJ;EACA,GAAIJ;EAEH,UAAAK;CACA,CAAA,IA3BD,kBAAC,MAAD,EACI,WAAWH,EACPL,EAAO,SACPA,EAAO,YACPA,EAAO,MACPM,MAAY,YAAYN,EAAO,QAC/BO,CACJ,EACH,CAAA;AAqBb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.module.cjs","names":[],"sources":["../../../src/components/Divider/Divider.module.css"],"sourcesContent":[".divider {\n border: 0;\n background: none;\n color: var(--tempest-text-subtle);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n letter-spacing: var(--tempest-tracking-wide);\n}\n\n.horizontal {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-3);\n width: 100%;\n margin: var(--tempest-space-3) 0;\n}\n\n.horizontal::before,\n.horizontal::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background-color: var(--tempest-border);\n}\n\n.horizontal.bare::before {\n margin: 0;\n}\n.horizontal.bare::after {\n display: none;\n}\n\n.horizontal.bare {\n margin: var(--tempest-space-3) 0;\n height: 1px;\n background-color: var(--tempest-border);\n display: block;\n padding: 0;\n}\n\n.vertical {\n display: inline-block;\n width: 1px;\n background-color: var(--tempest-border);\n align-self: stretch;\n min-height: 1em;\n margin: 0 var(--tempest-space-2);\n}\n\n/* Dashed style */\n.dashed.horizontal::before,\n.dashed.horizontal::after {\n background: none;\n border-top: 1px dashed var(--tempest-border-strong);\n height: 0;\n}\n\n.dashed.vertical {\n background: none;\n border-left: 1px dashed var(--tempest-border-strong);\n width: 0;\n}\n\n/* Label alignment for horizontal */\n.alignStart::before {\n flex: 0 0 var(--tempest-space-4);\n}\n.alignEnd::after {\n flex: 0 0 var(--tempest-space-4);\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"Divider.module.cjs","names":["divider","horizontal","bare","vertical","dashed","alignStart","alignEnd","Divider_module_default"],"sources":["../../../src/components/Divider/Divider.module.css"],"sourcesContent":[".divider {\n border: 0;\n background: none;\n color: var(--tempest-text-subtle);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n letter-spacing: var(--tempest-tracking-wide);\n}\n\n.horizontal {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-3);\n width: 100%;\n margin: var(--tempest-space-3) 0;\n}\n\n.horizontal::before,\n.horizontal::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background-color: var(--tempest-border);\n}\n\n.horizontal.bare::before {\n margin: 0;\n}\n.horizontal.bare::after {\n display: none;\n}\n\n.horizontal.bare {\n margin: var(--tempest-space-3) 0;\n height: 1px;\n background-color: var(--tempest-border);\n display: block;\n padding: 0;\n}\n\n.vertical {\n display: inline-block;\n width: 1px;\n background-color: var(--tempest-border);\n align-self: stretch;\n min-height: 1em;\n margin: 0 var(--tempest-space-2);\n}\n\n/* Dashed style */\n.dashed.horizontal::before,\n.dashed.horizontal::after {\n background: none;\n border-top: 1px dashed var(--tempest-border-strong);\n height: 0;\n}\n\n.dashed.vertical {\n background: none;\n border-left: 1px dashed var(--tempest-border-strong);\n width: 0;\n}\n\n/* Label alignment for horizontal */\n.alignStart::before {\n flex: 0 0 var(--tempest-space-4);\n}\n.alignEnd::after {\n flex: 0 0 var(--tempest-space-4);\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.module.js","names":[],"sources":["../../../src/components/Divider/Divider.module.css"],"sourcesContent":[".divider {\n border: 0;\n background: none;\n color: var(--tempest-text-subtle);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n letter-spacing: var(--tempest-tracking-wide);\n}\n\n.horizontal {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-3);\n width: 100%;\n margin: var(--tempest-space-3) 0;\n}\n\n.horizontal::before,\n.horizontal::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background-color: var(--tempest-border);\n}\n\n.horizontal.bare::before {\n margin: 0;\n}\n.horizontal.bare::after {\n display: none;\n}\n\n.horizontal.bare {\n margin: var(--tempest-space-3) 0;\n height: 1px;\n background-color: var(--tempest-border);\n display: block;\n padding: 0;\n}\n\n.vertical {\n display: inline-block;\n width: 1px;\n background-color: var(--tempest-border);\n align-self: stretch;\n min-height: 1em;\n margin: 0 var(--tempest-space-2);\n}\n\n/* Dashed style */\n.dashed.horizontal::before,\n.dashed.horizontal::after {\n background: none;\n border-top: 1px dashed var(--tempest-border-strong);\n height: 0;\n}\n\n.dashed.vertical {\n background: none;\n border-left: 1px dashed var(--tempest-border-strong);\n width: 0;\n}\n\n/* Label alignment for horizontal */\n.alignStart::before {\n flex: 0 0 var(--tempest-space-4);\n}\n.alignEnd::after {\n flex: 0 0 var(--tempest-space-4);\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"Divider.module.js","names":["divider","horizontal","bare","vertical","dashed","alignStart","alignEnd","Divider_module_default"],"sources":["../../../src/components/Divider/Divider.module.css"],"sourcesContent":[".divider {\n border: 0;\n background: none;\n color: var(--tempest-text-subtle);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-xs);\n font-weight: var(--tempest-weight-medium);\n letter-spacing: var(--tempest-tracking-wide);\n}\n\n.horizontal {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-3);\n width: 100%;\n margin: var(--tempest-space-3) 0;\n}\n\n.horizontal::before,\n.horizontal::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background-color: var(--tempest-border);\n}\n\n.horizontal.bare::before {\n margin: 0;\n}\n.horizontal.bare::after {\n display: none;\n}\n\n.horizontal.bare {\n margin: var(--tempest-space-3) 0;\n height: 1px;\n background-color: var(--tempest-border);\n display: block;\n padding: 0;\n}\n\n.vertical {\n display: inline-block;\n width: 1px;\n background-color: var(--tempest-border);\n align-self: stretch;\n min-height: 1em;\n margin: 0 var(--tempest-space-2);\n}\n\n/* Dashed style */\n.dashed.horizontal::before,\n.dashed.horizontal::after {\n background: none;\n border-top: 1px dashed var(--tempest-border-strong);\n height: 0;\n}\n\n.dashed.vertical {\n background: none;\n border-left: 1px dashed var(--tempest-border-strong);\n width: 0;\n}\n\n/* Label alignment for horizontal */\n.alignStart::before {\n flex: 0 0 var(--tempest-space-4);\n}\n.alignEnd::after {\n flex: 0 0 var(--tempest-space-4);\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.cjs","names":[],"sources":["../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count, function-lines — placement plus mobilePlacement is\n * the whole point — a drawer that comes from the side on desktop and from the bottom\n * on a phone — and the rest is the dialog contract the SDK's Modal also has (open,\n * onClose, title, children, footer, closeOnBackdrop, closeOnEsc, hideCloseButton)\n * plus showHandle for the sheet affordance.\n */\nimport { useEffect, useRef } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { cn } from \"@/utils/cn\";\nimport { useBreakpoint } from \"@/hooks/use-breakpoint\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport styles from \"./Drawer.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type DrawerPlacement = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose: () => void;\n placement?: DrawerPlacement;\n title?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n hideCloseButton?: boolean;\n className?: string;\n /**\n * Auto-switch to bottom-sheet placement on mobile viewports (< md).\n * Modern mobile apps default to bottom drawers; on desktop the original\n * `placement` is preserved.\n */\n mobilePlacement?: DrawerPlacement;\n /** Render a drag handle indicator at the leading edge (bottom-sheet style). */\n showHandle?: boolean;\n}\n\n/**\n * Sliding side panel. Same building blocks as {@link Modal} but anchored to\n * an edge. Locks body scroll while open, and traps keyboard focus in the panel\n * the same way `Modal` does: focus enters on open, `Tab` cycles inside (portalled\n * panels opened from it included) and returns to the opener on close.\n */\nexport function Drawer({\n open,\n onClose,\n placement = \"right\",\n title,\n children,\n footer,\n closeOnBackdrop = true,\n closeOnEsc = true,\n hideCloseButton = false,\n className,\n mobilePlacement,\n showHandle = false,\n}: DrawerProps) {\n const { isMobile } = useBreakpoint();\n const effectivePlacement: DrawerPlacement =\n isMobile && mobilePlacement ? mobilePlacement : placement;\n\n const panelRef = useRef<HTMLElement>(null);\n useFocusTrap(panelRef, open);\n useEscapeLayer(open, closeOnEsc ? onClose : null);\n useEffect(() => {\n if (!open) return;\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [open, closeOnEsc, onClose]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <>\n <div\n className={styles.overlay}\n onClick={() => {\n if (closeOnBackdrop) onClose();\n }}\n />\n <aside\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n className={cn(styles.panel, styles[effectivePlacement], className)}\n >\n {showHandle &&\n (effectivePlacement === \"bottom\" || effectivePlacement === \"top\") && (\n <div\n className={cn(\n styles.handle,\n effectivePlacement === \"top\" && styles.handleTop,\n )}\n aria-hidden\n />\n )}\n {(title || !hideCloseButton) && (\n <header className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {!hideCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Fechar\"\n className={styles.close}\n onClick={onClose}\n >\n <CloseIcon />\n </button>\n )}\n </header>\n )}\n <div className={styles.body}>{children}</div>\n {footer && <footer className={styles.footer}>{footer}</footer>}\n </aside>\n </>,\n portalHost,\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"2TA8CA,
|
|
1
|
+
{"version":3,"file":"Drawer.cjs","names":["useBreakpoint","useRef","usePortalHost","createPortal","_Fragment","styles","cn","require_cn","require_use_breakpoint","require_escape_layer","require_use_focus_trap","require_portal_host","require_Drawer_module","react","react_jsx_runtime","react_dom","Drawer","effectivePlacement","isMobile","mobilePlacement","placement","panelRef","open","closeOnEsc","onClose","previousOverflow","portalHost","closeOnBackdrop","className","showHandle","title","hideCloseButton","CloseIcon","footer"],"sources":["../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count, function-lines — placement plus mobilePlacement is\n * the whole point — a drawer that comes from the side on desktop and from the bottom\n * on a phone — and the rest is the dialog contract the SDK's Modal also has (open,\n * onClose, title, children, footer, closeOnBackdrop, closeOnEsc, hideCloseButton)\n * plus showHandle for the sheet affordance.\n */\nimport { useEffect, useRef } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { cn } from \"@/utils/cn\";\nimport { useBreakpoint } from \"@/hooks/use-breakpoint\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport styles from \"./Drawer.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type DrawerPlacement = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose: () => void;\n placement?: DrawerPlacement;\n title?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n hideCloseButton?: boolean;\n className?: string;\n /**\n * Auto-switch to bottom-sheet placement on mobile viewports (< md).\n * Modern mobile apps default to bottom drawers; on desktop the original\n * `placement` is preserved.\n */\n mobilePlacement?: DrawerPlacement;\n /** Render a drag handle indicator at the leading edge (bottom-sheet style). */\n showHandle?: boolean;\n}\n\n/**\n * Sliding side panel. Same building blocks as {@link Modal} but anchored to\n * an edge. Locks body scroll while open, and traps keyboard focus in the panel\n * the same way `Modal` does: focus enters on open, `Tab` cycles inside (portalled\n * panels opened from it included) and returns to the opener on close.\n */\nexport function Drawer({\n open,\n onClose,\n placement = \"right\",\n title,\n children,\n footer,\n closeOnBackdrop = true,\n closeOnEsc = true,\n hideCloseButton = false,\n className,\n mobilePlacement,\n showHandle = false,\n}: DrawerProps) {\n const { isMobile } = useBreakpoint();\n const effectivePlacement: DrawerPlacement =\n isMobile && mobilePlacement ? mobilePlacement : placement;\n\n const panelRef = useRef<HTMLElement>(null);\n useFocusTrap(panelRef, open);\n useEscapeLayer(open, closeOnEsc ? onClose : null);\n useEffect(() => {\n if (!open) return;\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [open, closeOnEsc, onClose]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <>\n <div\n className={styles.overlay}\n onClick={() => {\n if (closeOnBackdrop) onClose();\n }}\n />\n <aside\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n className={cn(styles.panel, styles[effectivePlacement], className)}\n >\n {showHandle &&\n (effectivePlacement === \"bottom\" || effectivePlacement === \"top\") && (\n <div\n className={cn(\n styles.handle,\n effectivePlacement === \"top\" && styles.handleTop,\n )}\n aria-hidden\n />\n )}\n {(title || !hideCloseButton) && (\n <header className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {!hideCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Fechar\"\n className={styles.close}\n onClick={onClose}\n >\n <CloseIcon />\n </button>\n )}\n </header>\n )}\n <div className={styles.body}>{children}</div>\n {footer && <footer className={styles.footer}>{footer}</footer>}\n </aside>\n </>,\n portalHost,\n );\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"A,2TA8CA,SAAgBgB,EAAO,CACnB,OACA,UACA,YAAY,QACZ,QACA,WACA,SACA,kBAAkB,GAClB,aAAa,GACb,kBAAkB,GAClB,YACA,kBACA,aAAa,IACD,CACZ,GAAM,CAAE,YAAahB,EAAAA,cAAc,EAC7BiB,EACFC,GAAYC,EAAkBA,EAAkBC,EAE9CC,GAAA,EAAWpB,EAAAA,OAAAA,CAAoB,IAAI,EACzCS,EAAA,aAAaW,EAAUC,CAAI,EAC3Bb,EAAA,eAAea,EAAMC,EAAaC,EAAU,IAAI,GAChD,EAAAX,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACS,EAAM,OACX,IAAMG,EAAmB,SAAS,KAAK,MAAM,SAE7C,MADA,UAAS,KAAK,MAAM,SAAW,aAClB,CACT,SAAS,KAAK,MAAM,SAAWA,CACnC,CACJ,EAAG,CAACH,EAAMC,EAAYC,CAAO,CAAC,EAE9B,IAAME,EAAaxB,EAAAA,cAAc,EAIjC,MAFI,CAACoB,GAAQ,CAACI,EAAmB,MAEjC,EAAOvB,EAAAA,aAAAA,EACH,EAAAW,EAAA,KAAA,CAAAV,EAAAA,SAAA,CAAA,SAAA,EACI,EAAAU,EAAA,IAAA,CAAC,MAAD,CACI,UAAWT,EAAAA,QAAO,QAClB,YAAe,CACPsB,GAAiBH,EAAQ,CACjC,CACH,CAAA,GACD,EAAAV,EAAA,KAAA,CAAC,QAAD,CACI,IAAKO,EACL,KAAK,SACL,aAAW,OACX,SAAU,GACV,UAAWf,EAAAA,GAAGD,EAAAA,QAAO,MAAOA,EAAAA,QAAOY,GAAqBW,CAAS,EALrE,SAAA,CAOKC,IACIZ,IAAuB,UAAYA,IAAuB,SACvD,EAAAH,EAAA,IAAA,CAAC,MAAD,CACI,UAAWR,EAAAA,GACPD,EAAAA,QAAO,OACPY,IAAuB,OAASZ,EAAAA,QAAO,SAC3C,EACA,cAAA,EACH,CAAA,GAEPyB,GAAS,CAACC,KACR,EAAAjB,EAAA,KAAA,CAAC,SAAD,CAAQ,UAAWT,EAAAA,QAAO,OAA1B,SAAA,EACI,EAAAS,EAAA,IAAA,CAAC,KAAD,CAAI,UAAWT,EAAAA,QAAO,MAAQ,SAAAyB,CAAU,CAAA,EACvC,CAACC,IACE,EAAAjB,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,aAAW,SACX,UAAWT,EAAAA,QAAO,MAClB,QAASmB,EAET,UAAA,EAAAV,EAAA,IAAA,CAACkB,EAAD,CAAY,CAAA,CACR,CAAA,CAER,C,IAEZ,EAAAlB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWT,EAAAA,QAAO,KAAO,UAAc,CAAA,EAC3C4B,IAAU,EAAAnB,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAWT,EAAAA,QAAO,OAAS,SAAA4B,CAAe,CAAA,CAC1D,CACT,CAAA,CAAA,CAAA,CAAA,EACFP,CACJ,CACJ,CAEA,SAASM,GAAY,CACjB,OACI,EAAAlB,EAAA,IAAA,CAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACjD,UAAA,EAAAA,EAAA,IAAA,CAAC,OAAD,CACI,EAAE,uBACF,OAAO,eACP,YAAY,IACZ,cAAc,OACjB,CAAA,CACA,CAAA,CAEb,C"}
|