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":"scheduler-layout.js","names":[],"sources":["../../../src/components/Scheduler/scheduler-layout.ts"],"sourcesContent":["/** An event on the schedule. `start`/`end` are absolute instants in local time. */\nexport interface SchedulerEvent {\n id: string;\n title: string;\n start: Date;\n end: Date;\n /** Render across the all-day lane instead of the time grid. */\n allDay?: boolean;\n /** Free-form payload the app passes through. */\n data?: Record<string, unknown>;\n}\n\n/** An event placed in the grid: which day, where vertically, which column. */\nexport interface PlacedEvent {\n event: SchedulerEvent;\n /** Index into the rendered day list. */\n dayIndex: number;\n /** Distance from the top of the day column, as a fraction of its height. */\n top: number;\n /** Height as a fraction of the day column. */\n height: number;\n /** Column this event occupies among its overlapping cluster, zero-based. */\n column: number;\n /** How many columns the cluster was split into. */\n columns: number;\n}\n\n/** The visible time window of a day, in minutes from midnight. */\nexport interface DayWindow {\n startMinute: number;\n endMinute: number;\n}\n\n/** Minutes from midnight, in local time. */\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes();\n}\n\n/** Midnight local time on the same calendar day as `date`. */\nexport function startOfDay(date: Date): Date {\n const copy = new Date(date);\n copy.setHours(0, 0, 0, 0);\n return copy;\n}\n\n/** `date` shifted by whole days, preserving local wall-clock time. */\nexport function addDays(date: Date, days: number): Date {\n const copy = new Date(date);\n copy.setDate(copy.getDate() + days);\n return copy;\n}\n\n/** Whether two dates fall on the same local calendar day. */\nexport function 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\n/**\n * The consecutive local days a schedule should render.\n *\n * Built by incrementing the calendar day rather than adding 24 h of milliseconds:\n * across a DST boundary a day is 23 or 25 hours long, and millisecond arithmetic\n * would silently produce a duplicated or skipped date.\n *\n * @param anchor - Any instant within the first day.\n * @param count - How many days to produce.\n * @returns Midnight of each day, in order.\n */\nexport function dayRange(anchor: Date, count: number): Date[] {\n const first = startOfDay(anchor);\n return Array.from({ length: Math.max(0, count) }, (_, index) => addDays(first, index));\n}\n\n/**\n * Split an event into one segment per day it touches, clipped to the window.\n *\n * An event that crosses midnight has to appear in both columns, and each piece has\n * to be clipped to that day's visible window — otherwise a 23:00–01:00 booking\n * either vanishes or is drawn far outside its column.\n *\n * @param event - The event to place.\n * @param days - Midnight of each rendered day.\n * @param window - Visible minute range shared by every day.\n * @returns One entry per day the event is visible on.\n */\nfunction segmentsFor(\n event: SchedulerEvent,\n days: Date[],\n window: DayWindow,\n): { dayIndex: number; from: number; to: number }[] {\n const out: { dayIndex: number; from: number; to: number }[] = [];\n days.forEach((day, dayIndex) => {\n const dayStart = day.getTime();\n const dayEnd = addDays(day, 1).getTime();\n if (event.end.getTime() <= dayStart || event.start.getTime() >= dayEnd) return;\n\n const from = event.start.getTime() <= dayStart ? 0 : minutesOfDay(event.start);\n const to =\n event.end.getTime() >= dayEnd\n ? 24 * 60\n : minutesOfDay(event.end) || (event.end.getTime() > dayStart ? 24 * 60 : 0);\n\n const clippedFrom = Math.max(window.startMinute, from);\n const clippedTo = Math.min(window.endMinute, to);\n if (clippedTo <= clippedFrom) return;\n out.push({ dayIndex, from: clippedFrom, to: clippedTo });\n });\n return out;\n}\n\n/**\n * Assign columns so overlapping events sit side by side instead of on top.\n *\n * Events are grouped into *clusters* of mutual overlap — a chain where each event\n * overlaps at least one other — and every event in a cluster is given the same\n * column count. That shared count is what makes the widths line up; assigning\n * columns per pair instead produces the ragged layout where two events claim half\n * the width and a third silently covers one of them.\n *\n * A column is reused as soon as it is free, so `9–10`, `9–10`, `10–11` needs two\n * columns rather than three.\n *\n * @param segments - Same-day segments, in any order.\n * @returns The same segments with `column` and `columns` filled in.\n */\nfunction assignColumns<T extends { from: number; to: number }>(\n segments: T[],\n): (T & { column: number; columns: number })[] {\n const sorted = [...segments].sort((a, b) => a.from - b.from || a.to - b.to);\n const placed: (T & { column: number; columns: number })[] = [];\n\n let cluster: (T & { column: number; columns: number })[] = [];\n let clusterEnd = -Infinity;\n\n /** Freeze the current cluster: everyone in it shares its column count. */\n const closeCluster = (): void => {\n const width = cluster.reduce((max, item) => Math.max(max, item.column + 1), 0);\n for (const item of cluster) item.columns = width;\n placed.push(...cluster);\n cluster = [];\n clusterEnd = -Infinity;\n };\n\n for (const segment of sorted) {\n if (segment.from >= clusterEnd) closeCluster();\n\n // Lowest column whose last event has already ended.\n const taken = new Set(\n cluster.filter((item) => item.to > segment.from).map((i) => i.column),\n );\n let column = 0;\n while (taken.has(column)) column += 1;\n\n cluster.push({ ...segment, column, columns: 1 });\n clusterEnd = Math.max(clusterEnd, segment.to);\n }\n closeCluster();\n\n return placed;\n}\n\n/**\n * Lay out timed events across the rendered days.\n *\n * All-day events are excluded — they belong in their own lane, where a vertical\n * position would be meaningless.\n *\n * @param params.events - Every event, all-day ones included.\n * @param params.days - Midnight of each rendered day.\n * @param params.window - Visible minute range.\n * @returns Placed events, positioned as fractions of the column height.\n */\nexport function layoutEvents({\n events,\n days,\n window,\n}: {\n events: readonly SchedulerEvent[];\n days: Date[];\n window: DayWindow;\n}): PlacedEvent[] {\n const span = window.endMinute - window.startMinute;\n if (span <= 0 || days.length === 0) return [];\n\n const byDay = new Map<number, { event: SchedulerEvent; from: number; to: number }[]>();\n for (const event of events) {\n if (event.allDay) continue;\n if (event.end.getTime() <= event.start.getTime()) continue;\n for (const segment of segmentsFor(event, days, window)) {\n const list = byDay.get(segment.dayIndex) ?? [];\n list.push({ event, from: segment.from, to: segment.to });\n byDay.set(segment.dayIndex, list);\n }\n }\n\n const placed: PlacedEvent[] = [];\n for (const [dayIndex, segments] of byDay) {\n for (const item of assignColumns(segments)) {\n placed.push({\n event: item.event,\n dayIndex,\n top: (item.from - window.startMinute) / span,\n height: (item.to - item.from) / span,\n column: item.column,\n columns: item.columns,\n });\n }\n }\n return placed;\n}\n\n/**\n * All-day events that intersect the rendered range, with their day span.\n *\n * @param params.events - Every event.\n * @param params.days - Midnight of each rendered day.\n * @returns One entry per all-day event, clipped to the visible days.\n */\nexport function layoutAllDay({\n events,\n days,\n}: {\n events: readonly SchedulerEvent[];\n days: Date[];\n}): { event: SchedulerEvent; dayIndex: number; span: number }[] {\n if (days.length === 0) return [];\n const rangeEnd = addDays(days[days.length - 1], 1).getTime();\n\n return events\n .filter((event) => event.allDay)\n .filter(\n (event) => event.end.getTime() > days[0].getTime() && event.start.getTime() < rangeEnd,\n )\n .map((event) => {\n const firstIndex = days.findIndex(\n (day) => addDays(day, 1).getTime() > event.start.getTime(),\n );\n const lastIndex = days.reduce(\n (last, day, index) => (day.getTime() < event.end.getTime() ? index : last),\n 0,\n );\n const dayIndex = Math.max(0, firstIndex);\n return { event, dayIndex, span: Math.max(1, lastIndex - dayIndex + 1) };\n });\n}\n\n/**\n * Hour marks to label the time gutter with.\n *\n * @param window - Visible minute range.\n * @returns Each whole hour inside the window, in minutes from midnight.\n */\nexport function hourMarks(window: DayWindow): number[] {\n const first = Math.ceil(window.startMinute / 60);\n const last = Math.floor(window.endMinute / 60);\n return Array.from({ length: Math.max(0, last - first + 1) }, (_, i) => (first + i) * 60);\n}\n\n/**\n * Where an instant falls within the window, as a fraction of the column height.\n *\n * @param date - The instant.\n * @param window - Visible minute range.\n * @returns A fraction in `0…1`, or `null` when outside the window.\n */\nexport function fractionOfWindow(date: Date, window: DayWindow): number | null {\n const minute = minutesOfDay(date);\n const span = window.endMinute - window.startMinute;\n if (span <= 0 || minute < window.startMinute || minute > window.endMinute) return null;\n return (minute - window.startMinute) / span;\n}\n"],"mappings":";AAkCA,SAAgB,EAAa,GAAoB;CAC7C,OAAO,EAAK,SAAS,IAAI,KAAK,EAAK,WAAW;AAClD;AAGA,SAAgB,EAAW,GAAkB;CACzC,IAAM,IAAO,IAAI,KAAK,CAAI;CAE1B,OADA,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC,GACjB;AACX;AAGA,SAAgB,EAAQ,GAAY,GAAoB;CACpD,IAAM,IAAO,IAAI,KAAK,CAAI;CAE1B,OADA,EAAK,QAAQ,EAAK,QAAQ,IAAI,CAAI,GAC3B;AACX;AAGA,SAAgB,EAAU,GAAS,GAAkB;CACjD,OACI,EAAE,YAAY,MAAM,EAAE,YAAY,KAClC,EAAE,SAAS,MAAM,EAAE,SAAS,KAC5B,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAElC;AAaA,SAAgB,EAAS,GAAc,GAAuB;CAC1D,IAAM,IAAQ,EAAW,CAAM;CAC/B,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,CAAK,EAAE,IAAI,GAAG,MAAU,EAAQ,GAAO,CAAK,CAAC;AACzF;AAcA,SAAS,EACL,GACA,GACA,GACgD;CAChD,IAAM,IAAwD,CAAC;CAiB/D,OAhBA,EAAK,SAAS,GAAK,MAAa;EAC5B,IAAM,IAAW,EAAI,QAAQ,GACvB,IAAS,EAAQ,GAAK,CAAC,CAAC,CAAC,QAAQ;EACvC,IAAI,EAAM,IAAI,QAAQ,KAAK,KAAY,EAAM,MAAM,QAAQ,KAAK,GAAQ;EAExE,IAAM,IAAO,EAAM,MAAM,QAAQ,KAAK,IAAW,IAAI,EAAa,EAAM,KAAK,GACvE,IACF,EAAM,IAAI,QAAQ,KAAK,IACjB,OACA,EAAa,EAAM,GAAG,MAAM,EAAM,IAAI,QAAQ,IAAI,IAAW,OAAU,IAE3E,IAAc,KAAK,IAAI,EAAO,aAAa,CAAI,GAC/C,IAAY,KAAK,IAAI,EAAO,WAAW,CAAE;EAC3C,KAAa,KACjB,EAAI,KAAK;GAAE;GAAU,MAAM;GAAa,IAAI;EAAU,CAAC;CAC3D,CAAC,GACM;AACX;AAiBA,SAAS,EACL,GAC2C;CAC3C,IAAM,IAAS,CAAC,GAAG,CAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GACpE,IAAsD,CAAC,GAEzD,IAAuD,CAAC,GACxD,IAAa,WAGX,UAA2B;EAC7B,IAAM,IAAQ,EAAQ,QAAQ,GAAK,MAAS,KAAK,IAAI,GAAK,EAAK,SAAS,CAAC,GAAG,CAAC;EAC7E,KAAK,IAAM,KAAQ,GAAS,EAAK,UAAU;EAG3C,AAFA,EAAO,KAAK,GAAG,CAAO,GACtB,IAAU,CAAC,GACX,IAAa;CACjB;CAEA,KAAK,IAAM,KAAW,GAAQ;EAC1B,AAAI,EAAQ,QAAQ,KAAY,EAAa;EAG7C,IAAM,IAAQ,IAAI,IACd,EAAQ,QAAQ,MAAS,EAAK,KAAK,EAAQ,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,MAAM,CACxE,GACI,IAAS;EACb,OAAO,EAAM,IAAI,CAAM,IAAG,KAAU;EAGpC,AADA,EAAQ,KAAK;GAAE,GAAG;GAAS;GAAQ,SAAS;EAAE,CAAC,GAC/C,IAAa,KAAK,IAAI,GAAY,EAAQ,EAAE;CAChD;CAGA,OAFA,EAAa,GAEN;AACX;AAaA,SAAgB,EAAa,EACzB,WACA,SACA,aAKc;CACd,IAAM,IAAO,EAAO,YAAY,EAAO;CACvC,IAAI,KAAQ,KAAK,EAAK,WAAW,GAAG,OAAO,CAAC;CAE5C,IAAM,oBAAQ,IAAI,IAAmE;CACrF,KAAK,IAAM,KAAS,GACZ,OAAM,UACN,IAAM,IAAI,QAAQ,KAAK,EAAM,MAAM,QAAQ,IAC/C,KAAK,IAAM,KAAW,EAAY,GAAO,GAAM,CAAM,GAAG;EACpD,IAAM,IAAO,EAAM,IAAI,EAAQ,QAAQ,KAAK,CAAC;EAE7C,AADA,EAAK,KAAK;GAAE;GAAO,MAAM,EAAQ;GAAM,IAAI,EAAQ;EAAG,CAAC,GACvD,EAAM,IAAI,EAAQ,UAAU,CAAI;CACpC;CAGJ,IAAM,IAAwB,CAAC;CAC/B,KAAK,IAAM,CAAC,GAAU,MAAa,GAC/B,KAAK,IAAM,KAAQ,EAAc,CAAQ,GACrC,EAAO,KAAK;EACR,OAAO,EAAK;EACZ;EACA,MAAM,EAAK,OAAO,EAAO,eAAe;EACxC,SAAS,EAAK,KAAK,EAAK,QAAQ;EAChC,QAAQ,EAAK;EACb,SAAS,EAAK;CAClB,CAAC;CAGT,OAAO;AACX;AASA,SAAgB,EAAa,EACzB,WACA,WAI4D;CAC5D,IAAI,EAAK,WAAW,GAAG,OAAO,CAAC;CAC/B,IAAM,IAAW,EAAQ,EAAK,EAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ;CAE3D,OAAO,EACF,QAAQ,MAAU,EAAM,MAAM,CAAC,CAC/B,QACI,MAAU,EAAM,IAAI,QAAQ,IAAI,EAAK,EAAE,CAAC,QAAQ,KAAK,EAAM,MAAM,QAAQ,IAAI,CAClF,CAAC,CACA,KAAK,MAAU;EACZ,IAAM,IAAa,EAAK,WACnB,MAAQ,EAAQ,GAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAM,MAAM,QAAQ,CAC7D,GACM,IAAY,EAAK,QAClB,GAAM,GAAK,MAAW,EAAI,QAAQ,IAAI,EAAM,IAAI,QAAQ,IAAI,IAAQ,GACrE,CACJ,GACM,IAAW,KAAK,IAAI,GAAG,CAAU;EACvC,OAAO;GAAE;GAAO;GAAU,MAAM,KAAK,IAAI,GAAG,IAAY,IAAW,CAAC;EAAE;CAC1E,CAAC;AACT;AAQA,SAAgB,EAAU,GAA6B;CACnD,IAAM,IAAQ,KAAK,KAAK,EAAO,cAAc,EAAE,GACzC,IAAO,KAAK,MAAM,EAAO,YAAY,EAAE;CAC7C,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAO,IAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,IAAQ,KAAK,EAAE;AAC3F;AASA,SAAgB,EAAiB,GAAY,GAAkC;CAC3E,IAAM,IAAS,EAAa,CAAI,GAC1B,IAAO,EAAO,YAAY,EAAO;CAEvC,OADI,KAAQ,KAAK,IAAS,EAAO,eAAe,IAAS,EAAO,YAAkB,QAC1E,IAAS,EAAO,eAAe;AAC3C"}
|
|
1
|
+
{"version":3,"file":"scheduler-layout.js","names":["minutesOfDay","date","startOfDay","copy","addDays","days","isSameDay","a","b","dayRange","first","anchor","count","index","segmentsFor","out","dayStart","day","dayEnd","event","from","to","clippedFrom","window","clippedTo","assignColumns","sorted","segments","placed","cluster","clusterEnd","closeCluster","width","max","item","segment","taken","i","column","layoutEvents","span","byDay","events","list","dayIndex","layoutAllDay","rangeEnd","firstIndex","lastIndex","last","hourMarks","fractionOfWindow","minute"],"sources":["../../../src/components/Scheduler/scheduler-layout.ts"],"sourcesContent":["/** An event on the schedule. `start`/`end` are absolute instants in local time. */\nexport interface SchedulerEvent {\n id: string;\n title: string;\n start: Date;\n end: Date;\n /** Render across the all-day lane instead of the time grid. */\n allDay?: boolean;\n /** Free-form payload the app passes through. */\n data?: Record<string, unknown>;\n}\n\n/** An event placed in the grid: which day, where vertically, which column. */\nexport interface PlacedEvent {\n event: SchedulerEvent;\n /** Index into the rendered day list. */\n dayIndex: number;\n /** Distance from the top of the day column, as a fraction of its height. */\n top: number;\n /** Height as a fraction of the day column. */\n height: number;\n /** Column this event occupies among its overlapping cluster, zero-based. */\n column: number;\n /** How many columns the cluster was split into. */\n columns: number;\n}\n\n/** The visible time window of a day, in minutes from midnight. */\nexport interface DayWindow {\n startMinute: number;\n endMinute: number;\n}\n\n/** Minutes from midnight, in local time. */\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes();\n}\n\n/** Midnight local time on the same calendar day as `date`. */\nexport function startOfDay(date: Date): Date {\n const copy = new Date(date);\n copy.setHours(0, 0, 0, 0);\n return copy;\n}\n\n/** `date` shifted by whole days, preserving local wall-clock time. */\nexport function addDays(date: Date, days: number): Date {\n const copy = new Date(date);\n copy.setDate(copy.getDate() + days);\n return copy;\n}\n\n/** Whether two dates fall on the same local calendar day. */\nexport function 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\n/**\n * The consecutive local days a schedule should render.\n *\n * Built by incrementing the calendar day rather than adding 24 h of milliseconds:\n * across a DST boundary a day is 23 or 25 hours long, and millisecond arithmetic\n * would silently produce a duplicated or skipped date.\n *\n * @param anchor - Any instant within the first day.\n * @param count - How many days to produce.\n * @returns Midnight of each day, in order.\n */\nexport function dayRange(anchor: Date, count: number): Date[] {\n const first = startOfDay(anchor);\n return Array.from({ length: Math.max(0, count) }, (_, index) => addDays(first, index));\n}\n\n/**\n * Split an event into one segment per day it touches, clipped to the window.\n *\n * An event that crosses midnight has to appear in both columns, and each piece has\n * to be clipped to that day's visible window — otherwise a 23:00–01:00 booking\n * either vanishes or is drawn far outside its column.\n *\n * @param event - The event to place.\n * @param days - Midnight of each rendered day.\n * @param window - Visible minute range shared by every day.\n * @returns One entry per day the event is visible on.\n */\nfunction segmentsFor(\n event: SchedulerEvent,\n days: Date[],\n window: DayWindow,\n): { dayIndex: number; from: number; to: number }[] {\n const out: { dayIndex: number; from: number; to: number }[] = [];\n days.forEach((day, dayIndex) => {\n const dayStart = day.getTime();\n const dayEnd = addDays(day, 1).getTime();\n if (event.end.getTime() <= dayStart || event.start.getTime() >= dayEnd) return;\n\n const from = event.start.getTime() <= dayStart ? 0 : minutesOfDay(event.start);\n const to =\n event.end.getTime() >= dayEnd\n ? 24 * 60\n : minutesOfDay(event.end) || (event.end.getTime() > dayStart ? 24 * 60 : 0);\n\n const clippedFrom = Math.max(window.startMinute, from);\n const clippedTo = Math.min(window.endMinute, to);\n if (clippedTo <= clippedFrom) return;\n out.push({ dayIndex, from: clippedFrom, to: clippedTo });\n });\n return out;\n}\n\n/**\n * Assign columns so overlapping events sit side by side instead of on top.\n *\n * Events are grouped into *clusters* of mutual overlap — a chain where each event\n * overlaps at least one other — and every event in a cluster is given the same\n * column count. That shared count is what makes the widths line up; assigning\n * columns per pair instead produces the ragged layout where two events claim half\n * the width and a third silently covers one of them.\n *\n * A column is reused as soon as it is free, so `9–10`, `9–10`, `10–11` needs two\n * columns rather than three.\n *\n * @param segments - Same-day segments, in any order.\n * @returns The same segments with `column` and `columns` filled in.\n */\nfunction assignColumns<T extends { from: number; to: number }>(\n segments: T[],\n): (T & { column: number; columns: number })[] {\n const sorted = [...segments].sort((a, b) => a.from - b.from || a.to - b.to);\n const placed: (T & { column: number; columns: number })[] = [];\n\n let cluster: (T & { column: number; columns: number })[] = [];\n let clusterEnd = -Infinity;\n\n /** Freeze the current cluster: everyone in it shares its column count. */\n const closeCluster = (): void => {\n const width = cluster.reduce((max, item) => Math.max(max, item.column + 1), 0);\n for (const item of cluster) item.columns = width;\n placed.push(...cluster);\n cluster = [];\n clusterEnd = -Infinity;\n };\n\n for (const segment of sorted) {\n if (segment.from >= clusterEnd) closeCluster();\n\n // Lowest column whose last event has already ended.\n const taken = new Set(\n cluster.filter((item) => item.to > segment.from).map((i) => i.column),\n );\n let column = 0;\n while (taken.has(column)) column += 1;\n\n cluster.push({ ...segment, column, columns: 1 });\n clusterEnd = Math.max(clusterEnd, segment.to);\n }\n closeCluster();\n\n return placed;\n}\n\n/**\n * Lay out timed events across the rendered days.\n *\n * All-day events are excluded — they belong in their own lane, where a vertical\n * position would be meaningless.\n *\n * @param params.events - Every event, all-day ones included.\n * @param params.days - Midnight of each rendered day.\n * @param params.window - Visible minute range.\n * @returns Placed events, positioned as fractions of the column height.\n */\nexport function layoutEvents({\n events,\n days,\n window,\n}: {\n events: readonly SchedulerEvent[];\n days: Date[];\n window: DayWindow;\n}): PlacedEvent[] {\n const span = window.endMinute - window.startMinute;\n if (span <= 0 || days.length === 0) return [];\n\n const byDay = new Map<number, { event: SchedulerEvent; from: number; to: number }[]>();\n for (const event of events) {\n if (event.allDay) continue;\n if (event.end.getTime() <= event.start.getTime()) continue;\n for (const segment of segmentsFor(event, days, window)) {\n const list = byDay.get(segment.dayIndex) ?? [];\n list.push({ event, from: segment.from, to: segment.to });\n byDay.set(segment.dayIndex, list);\n }\n }\n\n const placed: PlacedEvent[] = [];\n for (const [dayIndex, segments] of byDay) {\n for (const item of assignColumns(segments)) {\n placed.push({\n event: item.event,\n dayIndex,\n top: (item.from - window.startMinute) / span,\n height: (item.to - item.from) / span,\n column: item.column,\n columns: item.columns,\n });\n }\n }\n return placed;\n}\n\n/**\n * All-day events that intersect the rendered range, with their day span.\n *\n * @param params.events - Every event.\n * @param params.days - Midnight of each rendered day.\n * @returns One entry per all-day event, clipped to the visible days.\n */\nexport function layoutAllDay({\n events,\n days,\n}: {\n events: readonly SchedulerEvent[];\n days: Date[];\n}): { event: SchedulerEvent; dayIndex: number; span: number }[] {\n if (days.length === 0) return [];\n const rangeEnd = addDays(days[days.length - 1], 1).getTime();\n\n return events\n .filter((event) => event.allDay)\n .filter(\n (event) => event.end.getTime() > days[0].getTime() && event.start.getTime() < rangeEnd,\n )\n .map((event) => {\n const firstIndex = days.findIndex(\n (day) => addDays(day, 1).getTime() > event.start.getTime(),\n );\n const lastIndex = days.reduce(\n (last, day, index) => (day.getTime() < event.end.getTime() ? index : last),\n 0,\n );\n const dayIndex = Math.max(0, firstIndex);\n return { event, dayIndex, span: Math.max(1, lastIndex - dayIndex + 1) };\n });\n}\n\n/**\n * Hour marks to label the time gutter with.\n *\n * @param window - Visible minute range.\n * @returns Each whole hour inside the window, in minutes from midnight.\n */\nexport function hourMarks(window: DayWindow): number[] {\n const first = Math.ceil(window.startMinute / 60);\n const last = Math.floor(window.endMinute / 60);\n return Array.from({ length: Math.max(0, last - first + 1) }, (_, i) => (first + i) * 60);\n}\n\n/**\n * Where an instant falls within the window, as a fraction of the column height.\n *\n * @param date - The instant.\n * @param window - Visible minute range.\n * @returns A fraction in `0…1`, or `null` when outside the window.\n */\nexport function fractionOfWindow(date: Date, window: DayWindow): number | null {\n const minute = minutesOfDay(date);\n const span = window.endMinute - window.startMinute;\n if (span <= 0 || minute < window.startMinute || minute > window.endMinute) return null;\n return (minute - window.startMinute) / span;\n}\n"],"mappings":";AAkCA,SAAgBA,EAAa,GAAoB;CAC7C,OAAOC,EAAK,SAAS,IAAI,KAAKA,EAAK,WAAW;AAClD;AAGA,SAAgBC,EAAW,GAAkB;CACzC,IAAMC,IAAO,IAAI,KAAKF,CAAI;CAE1B,OADAE,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC,GACjBA;AACX;AAGA,SAAgBC,EAAQ,GAAY,GAAoB;CACpD,IAAMD,IAAO,IAAI,KAAKF,CAAI;CAE1B,OADAE,EAAK,QAAQA,EAAK,QAAQ,IAAIE,CAAI,GAC3BF;AACX;AAGA,SAAgBG,EAAU,GAAS,GAAkB;CACjD,OACIC,EAAE,YAAY,MAAMC,EAAE,YAAY,KAClCD,EAAE,SAAS,MAAMC,EAAE,SAAS,KAC5BD,EAAE,QAAQ,MAAMC,EAAE,QAAQ;AAElC;AAaA,SAAgBC,EAAS,GAAc,GAAuB;CAC1D,IAAMC,IAAQR,EAAWS,CAAM;CAC/B,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAGC,CAAK,EAAE,IAAI,GAAG,MAAUR,EAAQM,GAAOG,CAAK,CAAC;AACzF;AAcA,SAASC,EACL,GACA,GACA,GACgD;CAChD,IAAMC,IAAwD,CAAC;CAiB/D,OAhBAV,EAAK,SAAS,GAAK,MAAa;EAC5B,IAAMW,IAAWC,EAAI,QAAQ,GACvBC,IAASd,EAAQa,GAAK,CAAC,CAAC,CAAC,QAAQ;EACvC,IAAIE,EAAM,IAAI,QAAQ,KAAKH,KAAYG,EAAM,MAAM,QAAQ,KAAKD,GAAQ;EAExE,IAAME,IAAOD,EAAM,MAAM,QAAQ,KAAKH,IAAW,IAAIhB,EAAamB,EAAM,KAAK,GACvEE,IACFF,EAAM,IAAI,QAAQ,KAAKD,IACjB,OACAlB,EAAamB,EAAM,GAAG,MAAMA,EAAM,IAAI,QAAQ,IAAIH,IAAW,OAAU,IAE3EM,IAAc,KAAK,IAAIC,EAAO,aAAaH,CAAI,GAC/CI,IAAY,KAAK,IAAID,EAAO,WAAWF,CAAE;EAC/C,AAAIG,KAAaF,KACjBP,EAAI,KAAK;GAAE;GAAU,MAAMO;GAAa,IAAIE;EAAU,CAAC;CAC3D,CAAC,GACMT;AACX;AAiBA,SAASU,EACL,GAC2C;CAC3C,IAAMC,IAAS,CAAC,GAAGC,CAAQ,CAAC,CAAC,MAAM,GAAG,MAAMpB,EAAE,OAAOC,EAAE,QAAQD,EAAE,KAAKC,EAAE,EAAE,GACpEoB,IAAsD,CAAC,GAEzDC,IAAuD,CAAC,GACxDC,IAAa,WAGXC,UAA2B;EAC7B,IAAMC,IAAQH,EAAQ,QAAQ,GAAK,MAAS,KAAK,IAAII,GAAKC,EAAK,SAAS,CAAC,GAAG,CAAC;EAC7E,KAAK,IAAMA,KAAQL,GAAS,EAAK,UAAUG;EAG3C,AAFAJ,EAAO,KAAK,GAAGC,CAAO,GACtB,IAAU,CAAC,GACX,IAAa;CACjB;CAEA,KAAK,IAAMM,KAAWT,GAAQ;EAC1B,AAAIS,EAAQ,QAAQL,KAAYC,EAAa;EAG7C,IAAMK,IAAQ,IAAI,IACdP,EAAQ,QAAQ,MAASK,EAAK,KAAKC,EAAQ,IAAI,CAAC,CAAC,KAAK,MAAME,EAAE,MAAM,CACxE,GACIC,IAAS;EACb,OAAOF,EAAM,IAAIE,CAAM,IAAG,KAAU;EAGpC,AADAT,EAAQ,KAAK;GAAE,GAAGM;GAAS;GAAQ,SAAS;EAAE,CAAC,GAC/C,IAAa,KAAK,IAAIL,GAAYK,EAAQ,EAAE;CAChD;CAGA,OAFAJ,EAAa,GAENH;AACX;AAaA,SAAgBW,EAAa,EACzB,WACA,SACA,aAKc;CACd,IAAMC,IAAOjB,EAAO,YAAYA,EAAO;CACvC,IAAIiB,KAAQ,KAAKnC,EAAK,WAAW,GAAG,OAAO,CAAC;CAE5C,IAAMoC,oBAAQ,IAAI,IAAmE;CACrF,KAAK,IAAMtB,KAASuB,GAChB,IAAI,GAAM,UACN,IAAM,IAAI,QAAQ,KAAKvB,EAAM,MAAM,QAAQ,IAC/C,KAAK,IAAMgB,KAAWrB,EAAYK,GAAOd,GAAMkB,CAAM,GAAG;EACpD,IAAMoB,IAAOF,EAAM,IAAIN,EAAQ,QAAQ,KAAK,CAAC;EAE7C,AADAQ,EAAK,KAAK;GAAE;GAAO,MAAMR,EAAQ;GAAM,IAAIA,EAAQ;EAAG,CAAC,GACvDM,EAAM,IAAIN,EAAQ,UAAUQ,CAAI;CACpC;CAGJ,IAAMf,IAAwB,CAAC;CAC/B,KAAK,IAAM,CAACgB,GAAUjB,MAAac,GAC/B,KAAK,IAAMP,KAAQT,EAAcE,CAAQ,GACrC,EAAO,KAAK;EACR,OAAOO,EAAK;EACZ;EACA,MAAMA,EAAK,OAAOX,EAAO,eAAeiB;EACxC,SAASN,EAAK,KAAKA,EAAK,QAAQM;EAChC,QAAQN,EAAK;EACb,SAASA,EAAK;CAClB,CAAC;CAGT,OAAON;AACX;AASA,SAAgBiB,EAAa,EACzB,WACA,WAI4D;CAC5D,IAAIxC,EAAK,WAAW,GAAG,OAAO,CAAC;CAC/B,IAAMyC,IAAW1C,EAAQC,EAAKA,EAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ;CAE3D,OAAOqC,EACF,QAAQ,MAAUvB,EAAM,MAAM,CAAC,CAC/B,QACI,MAAUA,EAAM,IAAI,QAAQ,IAAId,EAAK,EAAE,CAAC,QAAQ,KAAKc,EAAM,MAAM,QAAQ,IAAI2B,CAClF,CAAC,CACA,KAAK,MAAU;EACZ,IAAMC,IAAa1C,EAAK,WACnB,MAAQD,EAAQa,GAAK,CAAC,CAAC,CAAC,QAAQ,IAAIE,EAAM,MAAM,QAAQ,CAC7D,GACM6B,IAAY3C,EAAK,QAClB,GAAM,GAAK,MAAWY,EAAI,QAAQ,IAAIE,EAAM,IAAI,QAAQ,IAAIN,IAAQoC,GACrE,CACJ,GACML,IAAW,KAAK,IAAI,GAAGG,CAAU;EACvC,OAAO;GAAE;GAAO;GAAU,MAAM,KAAK,IAAI,GAAGC,IAAYJ,IAAW,CAAC;EAAE;CAC1E,CAAC;AACT;AAQA,SAAgBM,EAAU,GAA6B;CACnD,IAAMxC,IAAQ,KAAK,KAAKa,EAAO,cAAc,EAAE,GACzC0B,IAAO,KAAK,MAAM1B,EAAO,YAAY,EAAE;CAC7C,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG0B,IAAOvC,IAAQ,CAAC,EAAE,IAAI,GAAG,OAAOA,IAAQ2B,KAAK,EAAE;AAC3F;AASA,SAAgBc,EAAiB,GAAY,GAAkC;CAC3E,IAAMC,IAASpD,EAAaC,CAAI,GAC1BuC,IAAOjB,EAAO,YAAYA,EAAO;CAEvC,OADIiB,KAAQ,KAAKY,IAAS7B,EAAO,eAAe6B,IAAS7B,EAAO,YAAkB,QAC1E6B,IAAS7B,EAAO,eAAeiB;AAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArea.cjs","names":[],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport type { CSSProperties, HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { useScrollOverflow } from \"@/hooks/use-scroll-overflow\";\nimport styles from \"./ScrollArea.module.css\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {\n /** Caps the container height; numbers are treated as pixels. */\n maxHeight?: number | string;\n /** Which axis scrolls. Default `\"vertical\"`. */\n orientation?: ScrollAreaOrientation;\n /**\n * Accessible name used while the content actually overflows, when the area\n * takes a tab stop of its own. Defaults to a generic one; name it when the\n * page holds several scroll areas.\n */\n scrollLabel?: string;\n}\n\n/**\n * A styled scroll container that overflows on the chosen axis and renders a\n * thin custom scrollbar (WebKit) while staying fully functional in browsers\n * without scrollbar styling. Forwards `className`, `style` and the ref to the\n * underlying `<div>`.\n *\n * While the content overflows, the container becomes a named, focusable group.\n * A scroll area whose children are plain text holds nothing focusable, so\n * without that a keyboard user can see the scrollbar and has no way to move it.\n * The tab stop disappears again once the content fits, so an area that does not\n * scroll never adds one. Callers may still override `tabIndex` or `role`.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n {\n maxHeight,\n orientation = \"vertical\",\n scrollLabel = \"Área rolável\",\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const innerRef = useRef<HTMLDivElement>(null);\n const scrollable = useScrollOverflow(innerRef, orientation);\n\n /**\n * Keep the forwarded ref working while measuring internally: the caller's\n * ref is the public contract, the inner one is what the observer needs.\n */\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const mergedStyle: CSSProperties = {\n overflowX: orientation === \"vertical\" ? \"hidden\" : \"auto\",\n overflowY: orientation === \"horizontal\" ? \"hidden\" : \"auto\",\n ...(maxHeight !== undefined ? { maxHeight } : {}),\n ...style,\n };\n\n return (\n <div\n ref={setRefs}\n className={cn(styles.root, className)}\n style={mergedStyle}\n tabIndex={scrollable ? 0 : undefined}\n role={scrollable ? \"group\" : undefined}\n aria-label={scrollable ? scrollLabel : undefined}\n {...props}\n >\n {children}\n </div>\n );\n});\n"],"mappings":"kLAiCA,
|
|
1
|
+
{"version":3,"file":"ScrollArea.cjs","names":["forwardRef","useRef","useScrollOverflow","useCallback","cn","styles","require_cn","require_use_scroll_overflow","require_ScrollArea_module","react","react_jsx_runtime","ScrollArea","props","innerRef","scrollable","orientation","setRefs","node","ref","mergedStyle","maxHeight","style","className","scrollLabel"],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport type { CSSProperties, HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { useScrollOverflow } from \"@/hooks/use-scroll-overflow\";\nimport styles from \"./ScrollArea.module.css\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {\n /** Caps the container height; numbers are treated as pixels. */\n maxHeight?: number | string;\n /** Which axis scrolls. Default `\"vertical\"`. */\n orientation?: ScrollAreaOrientation;\n /**\n * Accessible name used while the content actually overflows, when the area\n * takes a tab stop of its own. Defaults to a generic one; name it when the\n * page holds several scroll areas.\n */\n scrollLabel?: string;\n}\n\n/**\n * A styled scroll container that overflows on the chosen axis and renders a\n * thin custom scrollbar (WebKit) while staying fully functional in browsers\n * without scrollbar styling. Forwards `className`, `style` and the ref to the\n * underlying `<div>`.\n *\n * While the content overflows, the container becomes a named, focusable group.\n * A scroll area whose children are plain text holds nothing focusable, so\n * without that a keyboard user can see the scrollbar and has no way to move it.\n * The tab stop disappears again once the content fits, so an area that does not\n * scroll never adds one. Callers may still override `tabIndex` or `role`.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n {\n maxHeight,\n orientation = \"vertical\",\n scrollLabel = \"Área rolável\",\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const innerRef = useRef<HTMLDivElement>(null);\n const scrollable = useScrollOverflow(innerRef, orientation);\n\n /**\n * Keep the forwarded ref working while measuring internally: the caller's\n * ref is the public contract, the inner one is what the observer needs.\n */\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const mergedStyle: CSSProperties = {\n overflowX: orientation === \"vertical\" ? \"hidden\" : \"auto\",\n overflowY: orientation === \"horizontal\" ? \"hidden\" : \"auto\",\n ...(maxHeight !== undefined ? { maxHeight } : {}),\n ...style,\n };\n\n return (\n <div\n ref={setRefs}\n className={cn(styles.root, className)}\n style={mergedStyle}\n tabIndex={scrollable ? 0 : undefined}\n role={scrollable ? \"group\" : undefined}\n aria-label={scrollable ? scrollLabel : undefined}\n {...props}\n >\n {children}\n </div>\n );\n});\n"],"mappings":"A,kLAiCA,IAAaW,GAAA,EAAaX,EAAAA,WAAAA,CAA4C,SAClE,CACI,YACA,cAAc,WACd,cAAc,eACd,YACA,QACA,WACA,GAAGY,GAEP,EACF,CACE,IAAMC,GAAA,EAAWZ,EAAAA,OAAAA,CAAuB,IAAI,EACtCa,EAAaZ,EAAAA,kBAAkBW,EAAUE,CAAW,EAMpDC,GAAA,EAAUb,EAAAA,YAAAA,CACX,GAAgC,CAC7B,EAAS,QAAUc,EACf,OAAOC,GAAQ,WAAYA,EAAID,CAAI,EAC9BC,IAAK,EAAI,QAAUD,EAChC,EACA,CAACC,CAAG,CACR,EAEMC,EAA6B,CAC/B,UAAWJ,IAAgB,WAAa,SAAW,OACnD,UAAWA,IAAgB,aAAe,SAAW,OACrD,GAAIK,IAAc,IAAA,GAA4B,CAAC,EAAjB,CAAE,WAAU,EAC1C,GAAGC,CACP,EAEA,OACI,EAAAX,EAAA,IAAA,CAAC,MAAD,CACI,IAAKM,EACL,UAAWZ,EAAAA,GAAGC,EAAAA,QAAO,KAAMiB,CAAS,EACpC,MAAOH,EACP,SAAUL,EAAa,EAAI,IAAA,GAC3B,KAAMA,EAAa,QAAU,IAAA,GAC7B,aAAYA,EAAaS,EAAc,IAAA,GACvC,GAAIX,EAEH,UACA,CAAA,CAEb,CAAC,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArea.js","names":[],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport type { CSSProperties, HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { useScrollOverflow } from \"@/hooks/use-scroll-overflow\";\nimport styles from \"./ScrollArea.module.css\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {\n /** Caps the container height; numbers are treated as pixels. */\n maxHeight?: number | string;\n /** Which axis scrolls. Default `\"vertical\"`. */\n orientation?: ScrollAreaOrientation;\n /**\n * Accessible name used while the content actually overflows, when the area\n * takes a tab stop of its own. Defaults to a generic one; name it when the\n * page holds several scroll areas.\n */\n scrollLabel?: string;\n}\n\n/**\n * A styled scroll container that overflows on the chosen axis and renders a\n * thin custom scrollbar (WebKit) while staying fully functional in browsers\n * without scrollbar styling. Forwards `className`, `style` and the ref to the\n * underlying `<div>`.\n *\n * While the content overflows, the container becomes a named, focusable group.\n * A scroll area whose children are plain text holds nothing focusable, so\n * without that a keyboard user can see the scrollbar and has no way to move it.\n * The tab stop disappears again once the content fits, so an area that does not\n * scroll never adds one. Callers may still override `tabIndex` or `role`.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n {\n maxHeight,\n orientation = \"vertical\",\n scrollLabel = \"Área rolável\",\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const innerRef = useRef<HTMLDivElement>(null);\n const scrollable = useScrollOverflow(innerRef, orientation);\n\n /**\n * Keep the forwarded ref working while measuring internally: the caller's\n * ref is the public contract, the inner one is what the observer needs.\n */\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const mergedStyle: CSSProperties = {\n overflowX: orientation === \"vertical\" ? \"hidden\" : \"auto\",\n overflowY: orientation === \"horizontal\" ? \"hidden\" : \"auto\",\n ...(maxHeight !== undefined ? { maxHeight } : {}),\n ...style,\n };\n\n return (\n <div\n ref={setRefs}\n className={cn(styles.root, className)}\n style={mergedStyle}\n tabIndex={scrollable ? 0 : undefined}\n role={scrollable ? \"group\" : undefined}\n aria-label={scrollable ? scrollLabel : undefined}\n {...props}\n >\n {children}\n </div>\n );\n});\n"],"mappings":";;;;;;AAiCA,
|
|
1
|
+
{"version":3,"file":"ScrollArea.js","names":["styles","ScrollArea_module_default","ScrollArea","forwardRef","props","innerRef","useRef","scrollable","useScrollOverflow","orientation","setRefs","useCallback","node","ref","mergedStyle","maxHeight","style","cn","className","scrollLabel"],"sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport type { CSSProperties, HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { useScrollOverflow } from \"@/hooks/use-scroll-overflow\";\nimport styles from \"./ScrollArea.module.css\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {\n /** Caps the container height; numbers are treated as pixels. */\n maxHeight?: number | string;\n /** Which axis scrolls. Default `\"vertical\"`. */\n orientation?: ScrollAreaOrientation;\n /**\n * Accessible name used while the content actually overflows, when the area\n * takes a tab stop of its own. Defaults to a generic one; name it when the\n * page holds several scroll areas.\n */\n scrollLabel?: string;\n}\n\n/**\n * A styled scroll container that overflows on the chosen axis and renders a\n * thin custom scrollbar (WebKit) while staying fully functional in browsers\n * without scrollbar styling. Forwards `className`, `style` and the ref to the\n * underlying `<div>`.\n *\n * While the content overflows, the container becomes a named, focusable group.\n * A scroll area whose children are plain text holds nothing focusable, so\n * without that a keyboard user can see the scrollbar and has no way to move it.\n * The tab stop disappears again once the content fits, so an area that does not\n * scroll never adds one. Callers may still override `tabIndex` or `role`.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n {\n maxHeight,\n orientation = \"vertical\",\n scrollLabel = \"Área rolável\",\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const innerRef = useRef<HTMLDivElement>(null);\n const scrollable = useScrollOverflow(innerRef, orientation);\n\n /**\n * Keep the forwarded ref working while measuring internally: the caller's\n * ref is the public contract, the inner one is what the observer needs.\n */\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const mergedStyle: CSSProperties = {\n overflowX: orientation === \"vertical\" ? \"hidden\" : \"auto\",\n overflowY: orientation === \"horizontal\" ? \"hidden\" : \"auto\",\n ...(maxHeight !== undefined ? { maxHeight } : {}),\n ...style,\n };\n\n return (\n <div\n ref={setRefs}\n className={cn(styles.root, className)}\n style={mergedStyle}\n tabIndex={scrollable ? 0 : undefined}\n role={scrollable ? \"group\" : undefined}\n aria-label={scrollable ? scrollLabel : undefined}\n {...props}\n >\n {children}\n </div>\n );\n});\n"],"mappings":";;;;;;AAiCA,IAAaE,IAAaC,EAA4C,SAClE,EACI,cACA,iBAAc,YACd,iBAAc,gBACd,cACA,UACA,aACA,GAAGC,KAEP,GACF;CACE,IAAMC,IAAWC,EAAuB,IAAI,GACtCC,IAAaC,EAAkBH,GAAUI,CAAW,GAMpDC,IAAUC,GACX,MAAgC;EAE7B,AADA,EAAS,UAAUC,GACf,OAAOC,KAAQ,aAAYA,EAAID,CAAI,IAC9BC,MAAK,EAAI,UAAUD;CAChC,GACA,CAACC,CAAG,CACR,GAEMC,IAA6B;EAC/B,WAAWL,MAAgB,aAAa,WAAW;EACnD,WAAWA,MAAgB,eAAe,WAAW;EACrD,GAAIM,MAAc,KAAA,IAA4B,CAAC,IAAjB,EAAE,aAAU;EAC1C,GAAGC;CACP;CAEA,OACI,kBAAC,OAAD;EACI,KAAKN;EACL,WAAWO,EAAGjB,EAAO,MAAMkB,CAAS;EACpC,OAAOJ;EACP,UAAUP,IAAa,IAAI,KAAA;EAC3B,MAAMA,IAAa,UAAU,KAAA;EAC7B,cAAYA,IAAaY,IAAc,KAAA;EACvC,GAAIf;EAEH;CACA,CAAA;AAEb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArea.module.cjs","names":[],"sources":["../../../src/components/ScrollArea/ScrollArea.module.css"],"sourcesContent":[".root {\n /* Overflow is set inline per orientation; this only styles the scrollbar.\n Firefox thin scrollbar; degrades gracefully elsewhere. */\n scrollbar-width: thin;\n scrollbar-color: var(--tempest-border) transparent;\n overscroll-behavior: contain;\n}\n\n.root::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.root::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.root::-webkit-scrollbar-thumb {\n background-color: var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n border: 2px solid transparent;\n background-clip: padding-box;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .root::-webkit-scrollbar-thumb:hover {\n background-color: var(--tempest-text-muted);\n }\n}\n\n.root:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"ScrollArea.module.cjs","names":["root","ScrollArea_module_default"],"sources":["../../../src/components/ScrollArea/ScrollArea.module.css"],"sourcesContent":[".root {\n /* Overflow is set inline per orientation; this only styles the scrollbar.\n Firefox thin scrollbar; degrades gracefully elsewhere. */\n scrollbar-width: thin;\n scrollbar-color: var(--tempest-border) transparent;\n overscroll-behavior: contain;\n}\n\n.root::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.root::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.root::-webkit-scrollbar-thumb {\n background-color: var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n border: 2px solid transparent;\n background-clip: padding-box;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .root::-webkit-scrollbar-thumb:hover {\n background-color: var(--tempest-text-muted);\n }\n}\n\n.root:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArea.module.js","names":[],"sources":["../../../src/components/ScrollArea/ScrollArea.module.css"],"sourcesContent":[".root {\n /* Overflow is set inline per orientation; this only styles the scrollbar.\n Firefox thin scrollbar; degrades gracefully elsewhere. */\n scrollbar-width: thin;\n scrollbar-color: var(--tempest-border) transparent;\n overscroll-behavior: contain;\n}\n\n.root::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.root::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.root::-webkit-scrollbar-thumb {\n background-color: var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n border: 2px solid transparent;\n background-clip: padding-box;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .root::-webkit-scrollbar-thumb:hover {\n background-color: var(--tempest-text-muted);\n }\n}\n\n.root:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"ScrollArea.module.js","names":["root","ScrollArea_module_default"],"sources":["../../../src/components/ScrollArea/ScrollArea.module.css"],"sourcesContent":[".root {\n /* Overflow is set inline per orientation; this only styles the scrollbar.\n Firefox thin scrollbar; degrades gracefully elsewhere. */\n scrollbar-width: thin;\n scrollbar-color: var(--tempest-border) transparent;\n overscroll-behavior: contain;\n}\n\n.root::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n.root::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.root::-webkit-scrollbar-thumb {\n background-color: var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n border: 2px solid transparent;\n background-clip: padding-box;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .root::-webkit-scrollbar-thumb:hover {\n background-color: var(--tempest-text-muted);\n }\n}\n\n.root:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.cjs","names":[],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SearchBar.module.css\";\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n onClear?: () => void;\n wrapperClassName?: string;\n}\n\n/**\n * Search input with magnifier icon and a clear button. Controlled component:\n * pass `value` and `onChange`.\n */\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(function SearchBar(\n { value, onChange, onClear, wrapperClassName, placeholder = \"Buscar...\", className, ...props },\n ref,\n) {\n function handleClear(): void {\n onChange(\"\");\n onClear?.();\n }\n\n return (\n <div className={cn(styles.wrapper, wrapperClassName)}>\n <span className={styles.iconLeft} aria-hidden>\n <SearchIcon />\n </span>\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n className={cn(styles.input, className)}\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label=\"Limpar busca\"\n onClick={handleClear}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n});\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20l-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg width=\"14\" height=\"14\" 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":"gIAgBA,
|
|
1
|
+
{"version":3,"file":"SearchBar.cjs","names":["forwardRef","cn","styles","require_cn","require_SearchBar_module","react","react_jsx_runtime","SearchBar","props","handleClear","onChange","onClear","wrapperClassName","SearchIcon","event","className","value","ClearIcon"],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SearchBar.module.css\";\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n onClear?: () => void;\n wrapperClassName?: string;\n}\n\n/**\n * Search input with magnifier icon and a clear button. Controlled component:\n * pass `value` and `onChange`.\n */\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(function SearchBar(\n { value, onChange, onClear, wrapperClassName, placeholder = \"Buscar...\", className, ...props },\n ref,\n) {\n function handleClear(): void {\n onChange(\"\");\n onClear?.();\n }\n\n return (\n <div className={cn(styles.wrapper, wrapperClassName)}>\n <span className={styles.iconLeft} aria-hidden>\n <SearchIcon />\n </span>\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n className={cn(styles.input, className)}\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label=\"Limpar busca\"\n onClick={handleClear}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n});\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20l-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg width=\"14\" height=\"14\" 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,gIAgBA,IAAaO,GAAA,EAAYP,EAAAA,WAAAA,CAA6C,SAClE,CAAE,QAAO,WAAU,UAAS,mBAAkB,cAAc,YAAa,YAAW,GAAGQ,GACvF,EACF,CACE,SAASC,GAAoB,CACzBC,EAAS,EAAE,EACXC,IAAU,CACd,CAEA,OACI,EAAAL,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWL,EAAAA,GAAGC,EAAAA,QAAO,QAASU,CAAgB,EAAnD,SAAA,EACI,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,SAAU,cAAA,GAC9B,UAAA,EAAAI,EAAA,IAAA,CAACO,EAAD,CAAa,CAAA,CACX,CAAA,GACN,EAAAP,EAAA,IAAA,CAAC,QAAD,CACS,MACL,KAAK,SACE,QACP,SAAW,GAAUI,EAASI,EAAM,OAAO,KAAK,EACnC,cACb,UAAWb,EAAAA,GAAGC,EAAAA,QAAO,MAAOa,CAAS,EACrC,GAAIP,CACP,CAAA,EACAQ,IACG,EAAAV,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAWJ,EAAAA,QAAO,MAClB,aAAW,eACX,QAASO,EAET,UAAA,EAAAH,EAAA,IAAA,CAACW,EAAD,CAAY,CAAA,CACR,CAAA,CAEX,C,EAEb,CAAC,EAED,SAASJ,GAAa,CAClB,OACI,EAAAP,EAAA,KAAA,CAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAArD,SAAA,EACI,EAAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,OAAO,eAAe,YAAY,GAAK,CAAA,GACrE,EAAAA,EAAA,IAAA,CAAC,OAAD,CAAM,EAAE,kBAAkB,OAAO,eAAe,YAAY,IAAI,cAAc,OAAS,CAAA,CACtF,C,EAEb,CAEA,SAASW,GAAY,CACjB,OACI,EAAAX,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.js","names":[],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SearchBar.module.css\";\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n onClear?: () => void;\n wrapperClassName?: string;\n}\n\n/**\n * Search input with magnifier icon and a clear button. Controlled component:\n * pass `value` and `onChange`.\n */\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(function SearchBar(\n { value, onChange, onClear, wrapperClassName, placeholder = \"Buscar...\", className, ...props },\n ref,\n) {\n function handleClear(): void {\n onChange(\"\");\n onClear?.();\n }\n\n return (\n <div className={cn(styles.wrapper, wrapperClassName)}>\n <span className={styles.iconLeft} aria-hidden>\n <SearchIcon />\n </span>\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n className={cn(styles.input, className)}\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label=\"Limpar busca\"\n onClick={handleClear}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n});\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20l-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg width=\"14\" height=\"14\" 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":";;;;;AAgBA,
|
|
1
|
+
{"version":3,"file":"SearchBar.js","names":["styles","SearchBar_module_default","SearchBar","forwardRef","props","handleClear","onChange","onClear","cn","wrapperClassName","SearchIcon","event","className","value","ClearIcon"],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SearchBar.module.css\";\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n onClear?: () => void;\n wrapperClassName?: string;\n}\n\n/**\n * Search input with magnifier icon and a clear button. Controlled component:\n * pass `value` and `onChange`.\n */\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(function SearchBar(\n { value, onChange, onClear, wrapperClassName, placeholder = \"Buscar...\", className, ...props },\n ref,\n) {\n function handleClear(): void {\n onChange(\"\");\n onClear?.();\n }\n\n return (\n <div className={cn(styles.wrapper, wrapperClassName)}>\n <span className={styles.iconLeft} aria-hidden>\n <SearchIcon />\n </span>\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n className={cn(styles.input, className)}\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label=\"Limpar busca\"\n onClick={handleClear}\n >\n <ClearIcon />\n </button>\n )}\n </div>\n );\n});\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20l-3.5-3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg width=\"14\" height=\"14\" 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":";;;;;AAgBA,IAAaE,IAAYC,EAA6C,SAClE,EAAE,UAAO,aAAU,YAAS,qBAAkB,iBAAc,aAAa,cAAW,GAAGC,KACvF,GACF;CACE,SAASC,IAAoB;EAEzB,AADAC,EAAS,EAAE,GACXC,IAAU;CACd;CAEA,OACI,kBAAC,OAAD;EAAK,WAAWC,EAAGR,EAAO,SAASS,CAAgB;EAAnD,UAAA;GACI,kBAAC,QAAD;IAAM,WAAWT,EAAO;IAAU,eAAA;IAC9B,UAAA,kBAACU,GAAD,CAAa,CAAA;GACX,CAAA;GACN,kBAAC,SAAD;IACS;IACL,MAAK;IACE;IACP,WAAW,MAAUJ,EAASK,EAAM,OAAO,KAAK;IACnC;IACb,WAAWH,EAAGR,EAAO,OAAOY,CAAS;IACrC,GAAIR;GACP,CAAA;GACAS,KACG,kBAAC,UAAD;IACI,MAAK;IACL,WAAWb,EAAO;IAClB,cAAW;IACX,SAASK;IAET,UAAA,kBAACS,GAAD,CAAY,CAAA;GACR,CAAA;EAEX;;AAEb,CAAC;AAED,SAASJ,IAAa;CAClB,OACI,kBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAArD,UAAA,CACI,kBAAC,UAAD;GAAQ,IAAG;GAAK,IAAG;GAAK,GAAE;GAAI,QAAO;GAAe,aAAY;EAAK,CAAA,GACrE,kBAAC,QAAD;GAAM,GAAE;GAAkB,QAAO;GAAe,aAAY;GAAI,eAAc;EAAS,CAAA,CACtF;;AAEb;AAEA,SAASI,IAAY;CACjB,OACI,kBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EACjD,UAAA,kBAAC,QAAD;GACI,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;EACjB,CAAA;CACA,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.module.cjs","names":[],"sources":["../../../src/components/SearchBar/SearchBar.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n width: 100%;\n max-width: 360px;\n font-family: var(--tempest-font-sans);\n}\n\n.input {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0 36px 0 36px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-control-font-md);\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.input::placeholder {\n color: var(--tempest-text-subtle);\n}\n\n.input:hover:not(:focus):not(:disabled) {\n border-color: var(--tempest-border-strong);\n}\n\n.input:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.iconLeft,\n.clear {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text-muted);\n}\n\n.iconLeft {\n left: 12px;\n pointer-events: none;\n}\n\n.clear {\n right: 8px;\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: var(--tempest-radius-full);\n transition: var(--tempest-transition-color);\n cursor: pointer;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .clear:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.clear:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SearchBar.module.cjs","names":["wrapper","input","iconLeft","clear","SearchBar_module_default"],"sources":["../../../src/components/SearchBar/SearchBar.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n width: 100%;\n max-width: 360px;\n font-family: var(--tempest-font-sans);\n}\n\n.input {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0 36px 0 36px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-control-font-md);\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.input::placeholder {\n color: var(--tempest-text-subtle);\n}\n\n.input:hover:not(:focus):not(:disabled) {\n border-color: var(--tempest-border-strong);\n}\n\n.input:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.iconLeft,\n.clear {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text-muted);\n}\n\n.iconLeft {\n left: 12px;\n pointer-events: none;\n}\n\n.clear {\n right: 8px;\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: var(--tempest-radius-full);\n transition: var(--tempest-transition-color);\n cursor: pointer;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .clear:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.clear:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.module.js","names":[],"sources":["../../../src/components/SearchBar/SearchBar.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n width: 100%;\n max-width: 360px;\n font-family: var(--tempest-font-sans);\n}\n\n.input {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0 36px 0 36px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-control-font-md);\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.input::placeholder {\n color: var(--tempest-text-subtle);\n}\n\n.input:hover:not(:focus):not(:disabled) {\n border-color: var(--tempest-border-strong);\n}\n\n.input:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.iconLeft,\n.clear {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text-muted);\n}\n\n.iconLeft {\n left: 12px;\n pointer-events: none;\n}\n\n.clear {\n right: 8px;\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: var(--tempest-radius-full);\n transition: var(--tempest-transition-color);\n cursor: pointer;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .clear:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.clear:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SearchBar.module.js","names":["wrapper","input","iconLeft","clear","SearchBar_module_default"],"sources":["../../../src/components/SearchBar/SearchBar.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n width: 100%;\n max-width: 360px;\n font-family: var(--tempest-font-sans);\n}\n\n.input {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0 36px 0 36px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-control-font-md);\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.input::placeholder {\n color: var(--tempest-text-subtle);\n}\n\n.input:hover:not(:focus):not(:disabled) {\n border-color: var(--tempest-border-strong);\n}\n\n.input:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.iconLeft,\n.clear {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text-muted);\n}\n\n.iconLeft {\n left: 12px;\n pointer-events: none;\n}\n\n.clear {\n right: 8px;\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: var(--tempest-radius-full);\n transition: var(--tempest-transition-color);\n cursor: pointer;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .clear:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.clear:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHeader.cjs","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":"oIA6CA,IAAM,GAAA,EAAiB,EAAA,cAAA,CAA0C,IAAI,EAoCrE,SAAgB,EAAc,CAC1B,QACA,UACA,cACA,UACA,QAAQ,EACR,QAAQ,QACR,KACA,YACA,GAAG,GACgB,CACnB,IAAM,GAAA,EAAS,EAAA,MAAA,CAAM,EACf,GAAA,EAAU,EAAA,WAAA,CAAW,CAAc,EACnC,EAAW,EAAQ,EACnB,EAAc,IAAY,MAAQ,GAAY,EAAQ,MAAM,CAAM,EAClE,EAAY,IAAO,EAAc,EAAQ,UAAY,GACrD,EAAW,GAAS,SAK1B,IAJA,EAAA,EAAA,gBAAA,KAAsB,CACd,GAAC,GAAa,EAClB,OAAO,EAAS,CAAS,CAC7B,EAAG,CAAC,EAAU,EAAU,CAAS,CAAC,EAC9B,CAAC,GAAS,CAAC,GAAW,CAAC,GAAe,CAAC,EAAS,OAAO,KAC3D,IAAM,EAAU,IAAI,IACpB,OACI,EAAA,EAAA,KAAA,CAAC,SAAD,CACI,UAAW,EAAA,GAAG,EAAA,QAAO,OAAQ,IAAU,UAAY,EAAA,QAAO,OAAQ,CAAS,EAC3E,GAAI,EAFR,SAAA,EAII,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,WAAvB,SAAA,CACK,IAAW,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,SAAA,CAAa,CAAA,EACzD,IACG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAI,EAAW,UAAW,EAAA,QAAO,MACrC,SAAA,CACI,CAAA,EAEZ,IAAe,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,YAAc,SAAA,CAAe,CAAA,CACjE,CACJ,CAAA,EAAA,IAAW,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,SAAA,CAAa,CAAA,CACtD,GAEhB,CAiEA,SAAgB,EAAQ,CAAE,WAAU,OAAM,GAAG,GAAuB,CAChE,IAAM,GAAA,EAAY,EAAA,MAAA,CAAM,EAClB,GAAA,EAAW,EAAA,OAAA,CAAsB,IAAI,EACrC,CAAC,EAAY,IAAA,EAAiB,EAAA,SAAA,CAA0B,IAAI,EAC5D,GAAA,EAAU,EAAA,QAAA,MACL,CACH,YACA,MAAQ,IACJ,EAAS,UAAY,EACd,EAAS,UAAY,GAEhC,SAAW,IACP,EAAe,GAAY,CAAC,GAAI,GAAW,CAAC,EAAI,CAAE,CAAC,MAE/C,EAAe,IAAa,GAAW,CAAC,EAAA,CAAG,OAAQ,GAAU,IAAU,CAAE,CAAC,EAEtF,GACA,CAAC,CAAS,CACd,GACA,EAAA,EAAA,gBAAA,KAAsB,CAClB,EAAe,GAAY,GAAW,CAAC,CAAC,CAC5C,EAAG,CAAC,CAAC,EACL,IAAM,EAAQ,EAAM,qBAAuB,IAAA,IAAa,EAAM,gBAAkB,IAAA,GAC1E,EAAa,IAAe,KAAO,EAAY,EAAW,GAChE,OACI,EAAA,EAAA,IAAA,CAAC,EAAe,SAAhB,CAAyB,MAAO,EAC5B,UAAA,EAAA,EAAA,IAAA,CAAC,UAAD,CACI,kBAAiB,EAAQ,IAAA,GAAY,EACrC,oBAAmB,EACnB,GAAI,EAEH,UACI,CAAA,CACY,CAAA,CAEjC"}
|
|
1
|
+
{"version":3,"file":"SectionHeader.cjs","names":["createContext","useId","useContext","cn","styles","useRef","useState","useMemo","require_cn","require_SectionHeader_module","react","react_jsx_runtime","SectionContext","SectionHeader","props","autoId","section","hasTitle","title","ownsSection","headingId","id","register","eyebrow","description","actions","Heading","level","align","className","Section","sectionId","ownerRef","headingIds","setHeadingIds","context","headerKey","current","entry","named","labelledBy","tone"],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":"A,oIA6CA,IAAMY,GAAA,EAAiBZ,EAAAA,cAAAA,CAA0C,IAAI,EAoCrE,SAAgBa,EAAc,CAC1B,QACA,UACA,cACA,UACA,QAAQ,EACR,QAAQ,QACR,KACA,YACA,GAAGC,GACgB,CACnB,IAAMC,GAAA,EAASd,EAAAA,MAAAA,CAAM,EACfe,GAAA,EAAUd,EAAAA,WAAAA,CAAWU,CAAc,EACnCK,EAAW,EAAQC,EACnBC,EAAcH,IAAY,MAAQC,GAAYD,EAAQ,MAAMD,CAAM,EAClEK,EAAYC,IAAOF,EAAcH,EAAQ,UAAYD,GACrDO,EAAWN,GAAS,SAK1B,IAJA,EAAAN,EAAA,gBAAA,KAAsB,CAClB,GAAKY,GAAaL,EAClB,OAAOK,EAASF,CAAS,CAC7B,EAAG,CAACE,EAAUL,EAAUG,CAAS,CAAC,EAC9B,CAACF,GAAS,CAACK,GAAW,CAACC,GAAe,CAACC,EAAS,OAAO,KAC3D,IAAMC,EAAU,IAAIC,IACpB,OACI,EAAAhB,EAAA,KAAA,CAAC,SAAD,CACI,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,OAAQwB,IAAU,UAAYxB,EAAAA,QAAO,OAAQyB,CAAS,EAC3E,GAAIf,EAFR,SAAA,EAII,EAAAH,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,WAAvB,SAAA,CACKmB,IAAW,EAAAZ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,QAAU,SAAAmB,CAAa,CAAA,EACzDL,IACG,EAAAP,EAAA,IAAA,CAACe,EAAD,CAAS,GAAIN,EAAW,UAAWhB,EAAAA,QAAO,MACrC,SAAAc,CACI,CAAA,EAEZM,IAAe,EAAAb,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWP,EAAAA,QAAO,YAAc,SAAAoB,CAAe,CAAA,CACjE,CACJ,CAAA,EAAAC,IAAW,EAAAd,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,QAAU,SAAAqB,CAAa,CAAA,CACtD,C,EAEhB,CAiEA,SAAgBK,EAAQ,CAAE,WAAU,OAAM,GAAGhB,GAAuB,CAChE,IAAMiB,GAAA,EAAY9B,EAAAA,MAAAA,CAAM,EAClB+B,GAAA,EAAW3B,EAAAA,OAAAA,CAAsB,IAAI,EACrC,CAAC4B,EAAYC,IAAA,EAAiB5B,EAAAA,SAAAA,CAA0B,IAAI,EAC5D6B,GAAA,EAAU5B,EAAAA,QAAAA,MACL,CACH,YACA,MAAQ,IACJ,EAAS,UAAY6B,EACdJ,EAAS,UAAYI,GAEhC,SAAW,IACPF,EAAe,GAAY,CAAC,GAAIG,GAAW,CAAC,EAAIhB,CAAE,CAAC,MAE/Ca,EAAe,IAAaG,GAAW,CAAC,EAAA,CAAG,OAAQ,GAAUC,IAAUjB,CAAE,CAAC,EAEtF,GACA,CAACU,CAAS,CACd,GACA,EAAArB,EAAA,gBAAA,KAAsB,CAClBwB,EAAe,GAAYG,GAAW,CAAC,CAAC,CAC5C,EAAG,CAAC,CAAC,EACL,IAAME,EAAQzB,EAAM,qBAAuB,IAAA,IAAaA,EAAM,gBAAkB,IAAA,GAC1E0B,EAAaP,IAAe,KAAOF,EAAYE,EAAW,GAChE,OACI,EAAAtB,EAAA,IAAA,CAACC,EAAe,SAAhB,CAAyB,MAAOuB,EAC5B,UAAA,EAAAxB,EAAA,IAAA,CAAC,UAAD,CACI,kBAAiB4B,EAAQ,IAAA,GAAYC,EACrC,oBAAmBC,EACnB,GAAI3B,EAEH,UACI,CAAA,CACY,CAAA,CAEjC,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHeader.js","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6CA,IAAM,IAAiB,EAA0C,IAAI;AAoCrE,SAAgB,EAAc,EAC1B,UACA,YACA,gBACA,YACA,WAAQ,GACR,WAAQ,SACR,OACA,cACA,GAAG,KACgB;CACnB,IAAM,IAAS,EAAM,GACf,IAAU,EAAW,CAAc,GACnC,IAAW,EAAQ,GACnB,IAAc,MAAY,QAAQ,KAAY,EAAQ,MAAM,CAAM,GAClE,IAAY,MAAO,IAAc,EAAQ,YAAY,IACrD,IAAW,GAAS;CAK1B,IAJA,QAAsB;EACd,IAAC,KAAa,GAClB,OAAO,EAAS,CAAS;CAC7B,GAAG;EAAC;EAAU;EAAU;CAAS,CAAC,GAC9B,CAAC,KAAS,CAAC,KAAW,CAAC,KAAe,CAAC,GAAS,OAAO;CAC3D,IAAM,IAAU,IAAI;CACpB,OACI,kBAAC,UAAD;EACI,WAAW,EAAG,EAAO,QAAQ,MAAU,YAAY,EAAO,QAAQ,CAAS;EAC3E,GAAI;EAFR,UAAA,CAII,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAvB,UAAA;IACK,KAAW,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAU,UAAA;IAAa,CAAA;IACzD,KACG,kBAAC,GAAD;KAAS,IAAI;KAAW,WAAW,EAAO;KACrC,UAAA;IACI,CAAA;IAEZ,KAAe,kBAAC,KAAD;KAAG,WAAW,EAAO;KAAc,UAAA;IAAe,CAAA;GACjE;EACJ,CAAA,GAAA,KAAW,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAU,UAAA;EAAa,CAAA,CACtD;;AAEhB;AAiEA,SAAgB,EAAQ,EAAE,aAAU,SAAM,GAAG,KAAuB;CAChE,IAAM,IAAY,EAAM,GAClB,IAAW,EAAsB,IAAI,GACrC,CAAC,GAAY,KAAiB,EAA0B,IAAI,GAC5D,IAAU,SACL;EACH;EACA,QAAQ,OACJ,EAAS,YAAY,GACd,EAAS,YAAY;EAEhC,WAAW,OACP,GAAe,MAAY,CAAC,GAAI,KAAW,CAAC,GAAI,CAAE,CAAC,SAE/C,GAAe,OAAa,KAAW,CAAC,EAAA,CAAG,QAAQ,MAAU,MAAU,CAAE,CAAC;CAEtF,IACA,CAAC,CAAS,CACd;CACA,QAAsB;EAClB,GAAe,MAAY,KAAW,CAAC,CAAC;CAC5C,GAAG,CAAC,CAAC;CACL,IAAM,IAAQ,EAAM,uBAAuB,KAAA,KAAa,EAAM,kBAAkB,KAAA,GAC1E,IAAa,MAAe,OAAO,IAAY,EAAW;CAChE,OACI,kBAAC,EAAe,UAAhB;EAAyB,OAAO;EAC5B,UAAA,kBAAC,WAAD;GACI,mBAAiB,IAAQ,KAAA,IAAY;GACrC,qBAAmB;GACnB,GAAI;GAEH;EACI,CAAA;CACY,CAAA;AAEjC"}
|
|
1
|
+
{"version":3,"file":"SectionHeader.js","names":["styles","SectionHeader_module_default","SectionContext","createContext","SectionHeader","props","autoId","useId","section","useContext","hasTitle","title","ownsSection","headingId","id","register","useLayoutEffect","eyebrow","description","actions","Heading","level","cn","align","className","Section","sectionId","ownerRef","useRef","headingIds","setHeadingIds","useState","context","useMemo","headerKey","current","entry","named","labelledBy","tone"],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6CA,IAAME,IAAiBC,EAA0C,IAAI;AAoCrE,SAAgBC,EAAc,EAC1B,UACA,YACA,gBACA,YACA,WAAQ,GACR,WAAQ,SACR,OACA,cACA,GAAGC,KACgB;CACnB,IAAMC,IAASC,EAAM,GACfC,IAAUC,EAAWP,CAAc,GACnCQ,IAAW,EAAQC,GACnBC,IAAcJ,MAAY,QAAQE,KAAYF,EAAQ,MAAMF,CAAM,GAClEO,IAAYC,MAAOF,IAAcJ,EAAQ,YAAYF,IACrDS,IAAWP,GAAS;CAK1B,IAJAQ,QAAsB;EAClB,IAAKD,KAAaL,GAClB,OAAOK,EAASF,CAAS;CAC7B,GAAG;EAACE;EAAUL;EAAUG;CAAS,CAAC,GAC9B,CAACF,KAAS,CAACM,KAAW,CAACC,KAAe,CAACC,GAAS,OAAO;CAC3D,IAAMC,IAAU,IAAIC;CACpB,OACI,kBAAC,UAAD;EACI,WAAWC,EAAGtB,EAAO,QAAQuB,MAAU,YAAYvB,EAAO,QAAQwB,CAAS;EAC3E,GAAInB;EAFR,UAAA,CAII,kBAAC,OAAD;GAAK,WAAWL,EAAO;GAAvB,UAAA;IACKiB,KAAW,kBAAC,OAAD;KAAK,WAAWjB,EAAO;KAAU,UAAAiB;IAAa,CAAA;IACzDN,KACG,kBAACS,GAAD;KAAS,IAAIP;KAAW,WAAWb,EAAO;KACrC,UAAAW;IACI,CAAA;IAEZO,KAAe,kBAAC,KAAD;KAAG,WAAWlB,EAAO;KAAc,UAAAkB;IAAe,CAAA;GACjE;EACJ,CAAA,GAAAC,KAAW,kBAAC,OAAD;GAAK,WAAWnB,EAAO;GAAU,UAAAmB;EAAa,CAAA,CACtD;;AAEhB;AAiEA,SAAgBM,EAAQ,EAAE,aAAU,SAAM,GAAGpB,KAAuB;CAChE,IAAMqB,IAAYnB,EAAM,GAClBoB,IAAWC,EAAsB,IAAI,GACrC,CAACC,GAAYC,KAAiBC,EAA0B,IAAI,GAC5DC,IAAUC,SACL;EACH;EACA,QAAQ,OACJ,EAAS,YAAYC,GACdP,EAAS,YAAYO;EAEhC,WAAW,OACPJ,GAAe,MAAY,CAAC,GAAIK,KAAW,CAAC,GAAIrB,CAAE,CAAC,SAE/CgB,GAAe,OAAaK,KAAW,CAAC,EAAA,CAAG,QAAQ,MAAUC,MAAUtB,CAAE,CAAC;CAEtF,IACA,CAACY,CAAS,CACd;CACA,QAAsB;EAClB,GAAe,MAAYS,KAAW,CAAC,CAAC;CAC5C,GAAG,CAAC,CAAC;CACL,IAAME,IAAQhC,EAAM,uBAAuB,KAAA,KAAaA,EAAM,kBAAkB,KAAA,GAC1EiC,IAAaT,MAAe,OAAOH,IAAYG,EAAW;CAChE,OACI,kBAAC3B,EAAe,UAAhB;EAAyB,OAAO8B;EAC5B,UAAA,kBAAC,WAAD;GACI,mBAAiBK,IAAQ,KAAA,IAAYC;GACrC,qBAAmBC;GACnB,GAAIlC;GAEH;EACI,CAAA;CACY,CAAA;AAEjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHeader.module.cjs","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SectionHeader.module.cjs","names":["header","headerText","eyebrow","title","description","actions","center","SectionHeader_module_default"],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHeader.module.js","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SectionHeader.module.js","names":["header","headerText","eyebrow","title","description","actions","center","SectionHeader_module_default"],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.cjs","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":"oHA2CA,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.cjs","names":["cn","styles","require_cn","require_SegmentedControl_module","react_jsx_runtime","SegmentedControl","ariaLabel","props","size","fullWidth","className","options","selected","option","value","onChange"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":"A,oHA2CA,SAAgBK,EAAiD,CAC7D,UACA,QACA,WACA,OAAO,KACP,YAAY,GACZ,YACA,aAAcC,EACd,GAAGC,GAC2B,CAC9B,OACI,EAAAH,EAAA,IAAA,CAAC,MAAD,CACI,KAAK,aACL,aAAYE,EACZ,UAAWN,EAAAA,GAAGC,EAAAA,QAAO,MAAOA,EAAAA,QAAOO,GAAOC,GAAaR,EAAAA,QAAO,UAAWS,CAAS,EAClF,GAAIH,EAEH,SAAAI,EAAQ,IAAK,GAAW,CACrB,IAAMC,EAAWC,EAAO,QAAUC,EAClC,OACI,EAAAV,EAAA,KAAA,CAAC,SAAD,CAEI,KAAK,SACL,KAAK,QACL,eAAcQ,EACd,SAAUC,EAAO,SACjB,UAAWb,EAAAA,GAAGC,EAAAA,QAAO,QAASW,GAAYX,EAAAA,QAAO,MAAM,EACvD,YAAec,EAASF,EAAO,KAAK,EAPxC,SAAA,CASKA,EAAO,OAAQ,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,KAAO,SAAAY,EAAO,IAAW,CAAA,GACjE,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAY,EAAO,KAAY,CAAA,CAC/C,CAVC,EAAAA,EAAO,KAUR,CAEhB,CAAC,CACA,CAAA,CAEb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.js","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;AA2CA,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.js","names":["styles","SegmentedControl_module_default","SegmentedControl","ariaLabel","props","cn","size","fullWidth","className","options","selected","option","value","onChange"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;AA2CA,SAAgBE,EAAiD,EAC7D,YACA,UACA,aACA,UAAO,MACP,eAAY,IACZ,cACA,cAAcC,GACd,GAAGC,KAC2B;CAC9B,OACI,kBAAC,OAAD;EACI,MAAK;EACL,cAAYD;EACZ,WAAWE,EAAGL,EAAO,OAAOA,EAAOM,IAAOC,KAAaP,EAAO,WAAWQ,CAAS;EAClF,GAAIJ;EAEH,UAAAK,EAAQ,KAAK,MAAW;GACrB,IAAMC,IAAWC,EAAO,UAAUC;GAClC,OACI,kBAAC,UAAD;IAEI,MAAK;IACL,MAAK;IACL,gBAAcF;IACd,UAAUC,EAAO;IACjB,WAAWN,EAAGL,EAAO,SAASU,KAAYV,EAAO,MAAM;IACvD,eAAea,EAASF,EAAO,KAAK;IAPxC,UAAA,CASKA,EAAO,QAAQ,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAO,UAAAW,EAAO;IAAW,CAAA,GACjE,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAQ,UAAAW,EAAO;IAAY,CAAA,CAC/C;GAVC,GAAAA,EAAO,KAUR;EAEhB,CAAC;CACA,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.module.cjs","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SegmentedControl.module.cjs","names":["group","fullWidth","segment","sm","md","lg","active","icon","label","SegmentedControl_module_default"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.module.js","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"SegmentedControl.module.js","names":["group","fullWidth","segment","sm","md","lg","active","icon","label","SegmentedControl_module_default"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaretIcon.cjs","names":[],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"mCAYA,
|
|
1
|
+
{"version":3,"file":"CaretIcon.cjs","names":["react_jsx_runtime","CaretIcon"],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"A,mCAYA,SAAgBC,GAA0B,CACtC,OACI,EAAAD,EAAA,IAAA,CAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACjD,UAAA,EAAAA,EAAA,IAAA,CAAC,OAAD,CACI,EAAE,eACF,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,OAClB,CAAA,CACA,CAAA,CAEb,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaretIcon.js","names":[],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"CaretIcon.js","names":["CaretIcon"],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":";;AAYA,SAAgBA,IAA0B;CACtC,OACI,kBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EACjD,UAAA,kBAAC,QAAD;GACI,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAClB,CAAA;CACA,CAAA;AAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.cjs","names":[],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":"0JAkGA,
|
|
1
|
+
{"version":3,"file":"Select.cjs","names":["forwardRef","useId","cn","styles","CaretIcon","require_cn","require_CaretIcon","require_Select_module","react","react_jsx_runtime","Select","rest","props","isChip","variant","isBare","generatedId","selectId","id","control","wrapperClassName","error","className","placeholder","options","opt","children","caretIcon","label","required","helperText"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":"A,0JAkGA,IAAaU,GAAA,EAASV,EAAAA,WAAAA,CAA2C,SAAgB,EAAO,EAAK,CACzF,GAAM,CACF,UACA,cACA,mBACA,YACA,WACA,KACA,WACA,UAAU,QACV,QACA,aACA,QACA,YACA,GAAGW,GACHC,EAMEC,EAASC,IAAY,OACrBC,EAASD,IAAY,OACrBE,GAAA,EAAcf,EAAAA,MAAAA,CAAM,EACpBgB,EAAWC,GAAMF,EAEjBG,GACF,EAAAV,EAAA,KAAA,CAAC,MAAD,CACI,UAAWP,EAAAA,GACPC,EAAAA,QAAO,MACPU,GAAUV,EAAAA,QAAO,KACjBY,GAAUZ,EAAAA,QAAO,KACjBY,GAAUK,CACd,EANJ,SAAA,EAQI,EAAAX,EAAA,KAAA,CAAC,SAAD,CACS,MACL,GAAIQ,EACJ,eAAc,CAAC,CAACI,EACN,WACV,UAAWnB,EAAAA,GAAGC,EAAAA,QAAO,OAAQmB,CAAS,EACtC,GAAIX,EANR,SAAA,CAQKY,IACG,EAAAd,EAAA,IAAA,CAAC,SAAD,CAAQ,MAAM,GAAG,SAAA,GAAS,OAAA,GACrB,SAAAc,CACG,CAAA,EAEXC,GAAS,IAAK,IACX,EAAAf,EAAA,IAAA,CAAC,SAAD,CAAwB,MAAOgB,EAAI,MAAO,SAAUA,EAAI,SACnD,SAAAA,EAAI,KACD,EAFKA,EAAI,KAET,CACX,EACAC,CACG,CACR,CAAA,GAAA,EAAAjB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,MAAO,cAAA,GAC1B,SAAAwB,IAAa,EAAAlB,EAAA,IAAA,CAACL,EAAAA,UAAD,CAAY,CAAA,CACxB,CAAA,CACL,C,GAWT,OARIW,EACOI,EAGPN,GACO,EAAAJ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,GAAGC,EAAAA,QAAO,YAAaiB,CAAgB,EAAI,SAAAD,CAAa,CAAA,GAI/E,EAAAV,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,GAAGC,EAAAA,QAAO,QAASkB,GAASlB,EAAAA,QAAO,MAAOiB,CAAgB,EAA1E,SAAA,CACKQ,IACG,EAAAnB,EAAA,KAAA,CAAC,QAAD,CAAO,QAASQ,EAAU,UAAWd,EAAAA,QAAO,MAA5C,SAAA,CACKyB,EACAC,IAAY,EAAApB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,SAAU,SAAA,GAAO,CAAA,CACnD,C,GAEVgB,EACAE,GACG,EAAAZ,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,UAAY,SAAAkB,CAAY,CAAA,EAChDS,GACA,EAAArB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,OAAS,SAAA2B,CAAiB,CAAA,EAClD,IACH,C,EAEb,CAAC,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":[],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;AAkGA,
|
|
1
|
+
{"version":3,"file":"Select.js","names":["styles","Select_module_default","Select","forwardRef","rest","props","isChip","variant","isBare","generatedId","useId","selectId","id","control","cn","wrapperClassName","error","className","placeholder","options","opt","children","caretIcon","CaretIcon","label","required","helperText"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;AAkGA,IAAaE,IAASC,EAA2C,SAAgB,GAAO,GAAK;CACzF,IAAM,EACF,YACA,gBACA,qBACA,cACA,aACA,OACA,aACA,aAAU,SACV,UACA,eACA,UACA,cACA,GAAGC,MACHC,GAMEC,IAASC,MAAY,QACrBC,IAASD,MAAY,QACrBE,IAAcC,EAAM,GACpBC,IAAWC,KAAMH,GAEjBI,IACF,kBAAC,OAAD;EACI,WAAWC,EACPd,EAAO,OACPM,KAAUN,EAAO,MACjBQ,KAAUR,EAAO,MACjBQ,KAAUO,CACd;EANJ,UAAA,CAQI,kBAAC,UAAD;GACS;GACL,IAAIJ;GACJ,gBAAc,CAAC,CAACK;GACN;GACV,WAAWF,EAAGd,EAAO,QAAQiB,CAAS;GACtC,GAAIb;GANR,UAAA;IAQKc,KACG,kBAAC,UAAD;KAAQ,OAAM;KAAG,UAAA;KAAS,QAAA;KACrB,UAAAA;IACG,CAAA;IAEXC,GAAS,KAAK,MACX,kBAAC,UAAD;KAAwB,OAAOC,EAAI;KAAO,UAAUA,EAAI;KACnD,UAAAA,EAAI;IACD,GAFKA,EAAI,KAET,CACX;IACAC;GACG;EACR,CAAA,GAAA,kBAAC,QAAD;GAAM,WAAWrB,EAAO;GAAO,eAAA;GAC1B,UAAAsB,KAAa,kBAACC,GAAD,CAAY,CAAA;EACxB,CAAA,CACL;;CAWT,OARIf,IACOK,IAGPP,IACO,kBAAC,OAAD;EAAK,WAAWQ,EAAGd,EAAO,aAAae,CAAgB;EAAI,UAAAF;CAAa,CAAA,IAI/E,kBAAC,OAAD;EAAK,WAAWC,EAAGd,EAAO,SAASgB,KAAShB,EAAO,OAAOe,CAAgB;EAA1E,UAAA;GACKS,KACG,kBAAC,SAAD;IAAO,SAASb;IAAU,WAAWX,EAAO;IAA5C,UAAA,CACKwB,GACAC,KAAY,kBAAC,QAAD;KAAM,WAAWzB,EAAO;KAAU,UAAA;IAAO,CAAA,CACnD;;GAEVa;GACAG,IACG,kBAAC,QAAD;IAAM,WAAWhB,EAAO;IAAY,UAAAgB;GAAY,CAAA,IAChDU,IACA,kBAAC,QAAD;IAAM,WAAW1B,EAAO;IAAS,UAAA0B;GAAiB,CAAA,IAClD;EACH;;AAEb,CAAC"}
|