tempest-react-sdk 0.78.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1585) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/openapi/generate.mjs +168 -64
  3. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  4. package/bin/lib/openapi/generate.test.mjs +263 -1
  5. package/dist/access/Can.cjs.map +1 -1
  6. package/dist/access/Can.js.map +1 -1
  7. package/dist/access/access-control-context.cjs.map +1 -1
  8. package/dist/access/access-control-context.js.map +1 -1
  9. package/dist/access/create-role-access-control.cjs.map +1 -1
  10. package/dist/access/create-role-access-control.js.map +1 -1
  11. package/dist/access/permissions-from-token.cjs.map +1 -1
  12. package/dist/access/permissions-from-token.js.map +1 -1
  13. package/dist/access/use-can.cjs.map +1 -1
  14. package/dist/access/use-can.js.map +1 -1
  15. package/dist/app/AppProviders.cjs.map +1 -1
  16. package/dist/app/AppProviders.js.map +1 -1
  17. package/dist/audio/audio-bus.cjs.map +1 -1
  18. package/dist/audio/audio-bus.js.map +1 -1
  19. package/dist/audio/audio-output.cjs.map +1 -1
  20. package/dist/audio/audio-output.js.map +1 -1
  21. package/dist/audio/audio-player.cjs.map +1 -1
  22. package/dist/audio/audio-player.js.map +1 -1
  23. package/dist/audio/audio-recorder.cjs.map +1 -1
  24. package/dist/audio/audio-recorder.js.map +1 -1
  25. package/dist/audio/duration.cjs.map +1 -1
  26. package/dist/audio/duration.js.map +1 -1
  27. package/dist/audio/level-meter.cjs.map +1 -1
  28. package/dist/audio/level-meter.js.map +1 -1
  29. package/dist/audio/media-access.cjs.map +1 -1
  30. package/dist/audio/media-access.js.map +1 -1
  31. package/dist/audio/noise-floor.cjs.map +1 -1
  32. package/dist/audio/noise-floor.js.map +1 -1
  33. package/dist/audio/sfx-pool.cjs.map +1 -1
  34. package/dist/audio/sfx-pool.js.map +1 -1
  35. package/dist/audio/use-audio-bus.cjs.map +1 -1
  36. package/dist/audio/use-audio-bus.js.map +1 -1
  37. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  38. package/dist/audio/use-audio-recorder.js.map +1 -1
  39. package/dist/audio/use-audio.cjs.map +1 -1
  40. package/dist/audio/use-audio.js.map +1 -1
  41. package/dist/audio/use-microphone.cjs +1 -1
  42. package/dist/audio/use-microphone.cjs.map +1 -1
  43. package/dist/audio/use-microphone.js +1 -5
  44. package/dist/audio/use-microphone.js.map +1 -1
  45. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  46. package/dist/audio/use-sfx-pool.js.map +1 -1
  47. package/dist/audio/voice-activity.cjs.map +1 -1
  48. package/dist/audio/voice-activity.js.map +1 -1
  49. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  50. package/dist/audio/voice-chain-stages.js.map +1 -1
  51. package/dist/audio/voice-chain.cjs.map +1 -1
  52. package/dist/audio/voice-chain.js.map +1 -1
  53. package/dist/audio/wav.cjs.map +1 -1
  54. package/dist/audio/wav.js.map +1 -1
  55. package/dist/auth/AuthGuard.cjs.map +1 -1
  56. package/dist/auth/AuthGuard.js.map +1 -1
  57. package/dist/auth/create-auth-store.cjs.map +1 -1
  58. package/dist/auth/create-auth-store.js.map +1 -1
  59. package/dist/auth/create-tempest-auth.cjs +1 -1
  60. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  61. package/dist/auth/create-tempest-auth.js +1 -3
  62. package/dist/auth/create-tempest-auth.js.map +1 -1
  63. package/dist/auth/jwt.cjs.map +1 -1
  64. package/dist/auth/jwt.js.map +1 -1
  65. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  66. package/dist/auth/lazy-with-retry.js.map +1 -1
  67. package/dist/auth/passkey.cjs.map +1 -1
  68. package/dist/auth/passkey.js.map +1 -1
  69. package/dist/auth/refresh-queue.cjs.map +1 -1
  70. package/dist/auth/refresh-queue.js.map +1 -1
  71. package/dist/auth/use-passkey.cjs +1 -1
  72. package/dist/auth/use-passkey.cjs.map +1 -1
  73. package/dist/auth/use-passkey.js +1 -1
  74. package/dist/auth/use-passkey.js.map +1 -1
  75. package/dist/br/BrazilMap.cjs.map +1 -1
  76. package/dist/br/BrazilMap.js.map +1 -1
  77. package/dist/br/BrazilMap.module.cjs.map +1 -1
  78. package/dist/br/BrazilMap.module.js.map +1 -1
  79. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  80. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  81. package/dist/br/BrazilStateMap.cjs.map +1 -1
  82. package/dist/br/BrazilStateMap.js.map +1 -1
  83. package/dist/br/MapLegend.cjs.map +1 -1
  84. package/dist/br/MapLegend.js.map +1 -1
  85. package/dist/br/MapLegend.module.cjs.map +1 -1
  86. package/dist/br/MapLegend.module.js.map +1 -1
  87. package/dist/br/MapMarkers.cjs.map +1 -1
  88. package/dist/br/MapMarkers.js.map +1 -1
  89. package/dist/br/MapTooltip.cjs.map +1 -1
  90. package/dist/br/MapTooltip.js.map +1 -1
  91. package/dist/br/MunicipalitySearch.cjs +1 -1
  92. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  93. package/dist/br/MunicipalitySearch.js +2 -5
  94. package/dist/br/MunicipalitySearch.js.map +1 -1
  95. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  96. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  97. package/dist/br/PixQRCode.cjs.map +1 -1
  98. package/dist/br/PixQRCode.js.map +1 -1
  99. package/dist/br/PixQRCode.module.cjs.map +1 -1
  100. package/dist/br/PixQRCode.module.js.map +1 -1
  101. package/dist/br/boleto.cjs.map +1 -1
  102. package/dist/br/boleto.js.map +1 -1
  103. package/dist/br/br-geo.cjs.map +1 -1
  104. package/dist/br/br-geo.js.map +1 -1
  105. package/dist/br/data/br-centroids.cjs.map +1 -1
  106. package/dist/br/data/br-centroids.js.map +1 -1
  107. package/dist/br/data/br-locations.cjs.map +1 -1
  108. package/dist/br/data/br-locations.js.map +1 -1
  109. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  110. package/dist/br/data/br-uf-geo.js.map +1 -1
  111. package/dist/br/data/mun/AC.cjs.map +1 -1
  112. package/dist/br/data/mun/AC.js.map +1 -1
  113. package/dist/br/data/mun/AL.cjs.map +1 -1
  114. package/dist/br/data/mun/AL.js.map +1 -1
  115. package/dist/br/data/mun/AM.cjs.map +1 -1
  116. package/dist/br/data/mun/AM.js.map +1 -1
  117. package/dist/br/data/mun/AP.cjs.map +1 -1
  118. package/dist/br/data/mun/AP.js.map +1 -1
  119. package/dist/br/data/mun/BA.cjs.map +1 -1
  120. package/dist/br/data/mun/BA.js.map +1 -1
  121. package/dist/br/data/mun/CE.cjs.map +1 -1
  122. package/dist/br/data/mun/CE.js.map +1 -1
  123. package/dist/br/data/mun/DF.cjs.map +1 -1
  124. package/dist/br/data/mun/DF.js.map +1 -1
  125. package/dist/br/data/mun/ES.cjs.map +1 -1
  126. package/dist/br/data/mun/ES.js.map +1 -1
  127. package/dist/br/data/mun/GO.cjs.map +1 -1
  128. package/dist/br/data/mun/GO.js.map +1 -1
  129. package/dist/br/data/mun/MA.cjs.map +1 -1
  130. package/dist/br/data/mun/MA.js.map +1 -1
  131. package/dist/br/data/mun/MG.cjs.map +1 -1
  132. package/dist/br/data/mun/MG.js.map +1 -1
  133. package/dist/br/data/mun/MS.cjs.map +1 -1
  134. package/dist/br/data/mun/MS.js.map +1 -1
  135. package/dist/br/data/mun/MT.cjs.map +1 -1
  136. package/dist/br/data/mun/MT.js.map +1 -1
  137. package/dist/br/data/mun/PA.cjs.map +1 -1
  138. package/dist/br/data/mun/PA.js.map +1 -1
  139. package/dist/br/data/mun/PB.cjs.map +1 -1
  140. package/dist/br/data/mun/PB.js.map +1 -1
  141. package/dist/br/data/mun/PE.cjs.map +1 -1
  142. package/dist/br/data/mun/PE.js.map +1 -1
  143. package/dist/br/data/mun/PI.cjs.map +1 -1
  144. package/dist/br/data/mun/PI.js.map +1 -1
  145. package/dist/br/data/mun/PR.cjs.map +1 -1
  146. package/dist/br/data/mun/PR.js.map +1 -1
  147. package/dist/br/data/mun/RJ.cjs.map +1 -1
  148. package/dist/br/data/mun/RJ.js.map +1 -1
  149. package/dist/br/data/mun/RN.cjs.map +1 -1
  150. package/dist/br/data/mun/RN.js.map +1 -1
  151. package/dist/br/data/mun/RO.cjs.map +1 -1
  152. package/dist/br/data/mun/RO.js.map +1 -1
  153. package/dist/br/data/mun/RR.cjs.map +1 -1
  154. package/dist/br/data/mun/RR.js.map +1 -1
  155. package/dist/br/data/mun/RS.cjs.map +1 -1
  156. package/dist/br/data/mun/RS.js.map +1 -1
  157. package/dist/br/data/mun/SC.cjs.map +1 -1
  158. package/dist/br/data/mun/SC.js.map +1 -1
  159. package/dist/br/data/mun/SE.cjs.map +1 -1
  160. package/dist/br/data/mun/SE.js.map +1 -1
  161. package/dist/br/data/mun/SP.cjs.map +1 -1
  162. package/dist/br/data/mun/SP.js.map +1 -1
  163. package/dist/br/data/mun/TO.cjs.map +1 -1
  164. package/dist/br/data/mun/TO.js.map +1 -1
  165. package/dist/br/geocode.cjs.map +1 -1
  166. package/dist/br/geocode.js.map +1 -1
  167. package/dist/br/holidays.cjs.map +1 -1
  168. package/dist/br/holidays.js.map +1 -1
  169. package/dist/br/locations.cjs.map +1 -1
  170. package/dist/br/locations.js.map +1 -1
  171. package/dist/br/nfe.cjs.map +1 -1
  172. package/dist/br/nfe.js.map +1 -1
  173. package/dist/br/pix.cjs +1 -1
  174. package/dist/br/pix.cjs.map +1 -1
  175. package/dist/br/pix.js +108 -74
  176. package/dist/br/pix.js.map +1 -1
  177. package/dist/br/regions.cjs.map +1 -1
  178. package/dist/br/regions.js.map +1 -1
  179. package/dist/br/scales.cjs.map +1 -1
  180. package/dist/br/scales.js.map +1 -1
  181. package/dist/br/state-geo.cjs.map +1 -1
  182. package/dist/br/state-geo.js.map +1 -1
  183. package/dist/br/svg-utils.cjs.map +1 -1
  184. package/dist/br/svg-utils.js.map +1 -1
  185. package/dist/br/use-map-hover.cjs.map +1 -1
  186. package/dist/br/use-map-hover.js.map +1 -1
  187. package/dist/br/use-map-zoom.cjs.map +1 -1
  188. package/dist/br/use-map-zoom.js.map +1 -1
  189. package/dist/br/whatsapp.cjs.map +1 -1
  190. package/dist/br/whatsapp.js.map +1 -1
  191. package/dist/br.cjs.map +1 -1
  192. package/dist/br.d.ts +6 -2
  193. package/dist/br.js.map +1 -1
  194. package/dist/capture/barcode.cjs.map +1 -1
  195. package/dist/capture/barcode.js.map +1 -1
  196. package/dist/capture/media-recorder.cjs.map +1 -1
  197. package/dist/capture/media-recorder.js.map +1 -1
  198. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  199. package/dist/capture/use-barcode-scanner.js.map +1 -1
  200. package/dist/capture/use-screen-capture.cjs +1 -1
  201. package/dist/capture/use-screen-capture.cjs.map +1 -1
  202. package/dist/capture/use-screen-capture.js +1 -7
  203. package/dist/capture/use-screen-capture.js.map +1 -1
  204. package/dist/capture/use-speech-recognition.cjs +1 -1
  205. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  206. package/dist/capture/use-speech-recognition.js +35 -36
  207. package/dist/capture/use-speech-recognition.js.map +1 -1
  208. package/dist/capture/use-torch.cjs.map +1 -1
  209. package/dist/capture/use-torch.js.map +1 -1
  210. package/dist/capture/use-video-recorder.cjs.map +1 -1
  211. package/dist/capture/use-video-recorder.js.map +1 -1
  212. package/dist/capture/video-recorder.cjs.map +1 -1
  213. package/dist/capture/video-recorder.js.map +1 -1
  214. package/dist/charts/AreaChart.cjs.map +1 -1
  215. package/dist/charts/AreaChart.js.map +1 -1
  216. package/dist/charts/BarChart.cjs.map +1 -1
  217. package/dist/charts/BarChart.js.map +1 -1
  218. package/dist/charts/LineChart.cjs.map +1 -1
  219. package/dist/charts/LineChart.js.map +1 -1
  220. package/dist/charts/PieChart.cjs.map +1 -1
  221. package/dist/charts/PieChart.js.map +1 -1
  222. package/dist/charts/RadarChart.cjs.map +1 -1
  223. package/dist/charts/RadarChart.js.map +1 -1
  224. package/dist/charts/palette.cjs.map +1 -1
  225. package/dist/charts/palette.js.map +1 -1
  226. package/dist/charts/scales.cjs.map +1 -1
  227. package/dist/charts/scales.js.map +1 -1
  228. package/dist/charts/types.cjs.map +1 -1
  229. package/dist/charts/types.js.map +1 -1
  230. package/dist/charts/use-chart-colors.cjs.map +1 -1
  231. package/dist/charts/use-chart-colors.js.map +1 -1
  232. package/dist/components/AIChat/AIChat.cjs +1 -1
  233. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  234. package/dist/components/AIChat/AIChat.js +1 -5
  235. package/dist/components/AIChat/AIChat.js.map +1 -1
  236. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  237. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  238. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  239. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  240. package/dist/components/AIChat/AIChatComposer.js +1 -7
  241. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  242. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  243. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  244. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  245. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  246. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  247. package/dist/components/Accordion/Accordion.js.map +1 -1
  248. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  249. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  250. package/dist/components/Alert/Alert.cjs.map +1 -1
  251. package/dist/components/Alert/Alert.js.map +1 -1
  252. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  253. package/dist/components/Alert/Alert.module.js.map +1 -1
  254. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  255. package/dist/components/AppBar/AppBar.js.map +1 -1
  256. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  257. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  258. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  259. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  260. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  261. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  262. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  263. package/dist/components/AppShell/AppShell.js.map +1 -1
  264. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  265. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  266. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  267. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  268. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  269. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  270. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  271. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  272. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  273. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  274. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  275. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  276. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  277. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  278. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  279. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  280. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  281. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  282. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  283. package/dist/components/Avatar/Avatar.js.map +1 -1
  284. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  285. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  286. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  287. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  288. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  289. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  290. package/dist/components/Badge/Badge.cjs.map +1 -1
  291. package/dist/components/Badge/Badge.js.map +1 -1
  292. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  293. package/dist/components/Badge/Badge.module.js.map +1 -1
  294. package/dist/components/Banner/Banner.cjs.map +1 -1
  295. package/dist/components/Banner/Banner.js.map +1 -1
  296. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  297. package/dist/components/Banner/Banner.module.js.map +1 -1
  298. package/dist/components/BarList/BarList.cjs.map +1 -1
  299. package/dist/components/BarList/BarList.js.map +1 -1
  300. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  301. package/dist/components/BarList/BarList.module.js.map +1 -1
  302. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  303. package/dist/components/BarList/bar-list-model.js.map +1 -1
  304. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  305. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  306. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  307. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  308. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  309. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  310. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  311. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  312. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  313. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  314. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  315. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  316. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  317. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  318. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  319. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  320. package/dist/components/Button/Button.cjs.map +1 -1
  321. package/dist/components/Button/Button.js.map +1 -1
  322. package/dist/components/Button/Button.module.cjs.map +1 -1
  323. package/dist/components/Button/Button.module.js.map +1 -1
  324. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  325. package/dist/components/Button/ButtonContent.js.map +1 -1
  326. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  327. package/dist/components/Button/ButtonSlot.js.map +1 -1
  328. package/dist/components/Button/button-class.cjs.map +1 -1
  329. package/dist/components/Button/button-class.js.map +1 -1
  330. package/dist/components/Button/link-rel.cjs.map +1 -1
  331. package/dist/components/Button/link-rel.js.map +1 -1
  332. package/dist/components/Button/slot.cjs.map +1 -1
  333. package/dist/components/Button/slot.js.map +1 -1
  334. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  335. package/dist/components/Calendar/Calendar.js.map +1 -1
  336. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  337. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  338. package/dist/components/Card/Card.cjs.map +1 -1
  339. package/dist/components/Card/Card.js.map +1 -1
  340. package/dist/components/Card/Card.module.cjs.map +1 -1
  341. package/dist/components/Card/Card.module.js.map +1 -1
  342. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  343. package/dist/components/Carousel/Carousel.js.map +1 -1
  344. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  345. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  346. package/dist/components/Center/Center.cjs.map +1 -1
  347. package/dist/components/Center/Center.js.map +1 -1
  348. package/dist/components/Center/Center.module.cjs.map +1 -1
  349. package/dist/components/Center/Center.module.js.map +1 -1
  350. package/dist/components/Chat/Chat.cjs.map +1 -1
  351. package/dist/components/Chat/Chat.js.map +1 -1
  352. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  353. package/dist/components/Chat/Chat.module.js.map +1 -1
  354. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  355. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  356. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  357. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  358. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  359. package/dist/components/Chat/ChatBubble.js.map +1 -1
  360. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  361. package/dist/components/Chat/ChatComposer.js.map +1 -1
  362. package/dist/components/Chat/chat-groups.cjs +1 -1
  363. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  364. package/dist/components/Chat/chat-groups.js +2 -6
  365. package/dist/components/Chat/chat-groups.js.map +1 -1
  366. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  367. package/dist/components/Chat/chat-receipt.js.map +1 -1
  368. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  369. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  370. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  371. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  372. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  373. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  374. package/dist/components/ChipInput/ChipInput.js +2 -12
  375. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  376. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  377. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  378. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  379. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  380. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  381. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  382. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  383. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  384. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  385. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  386. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  387. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  388. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  389. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  390. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  391. package/dist/components/Combobox/Combobox.js.map +1 -1
  392. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  393. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  394. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  395. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  396. package/dist/components/Command/Command.cjs +1 -1
  397. package/dist/components/Command/Command.cjs.map +1 -1
  398. package/dist/components/Command/Command.js +4 -11
  399. package/dist/components/Command/Command.js.map +1 -1
  400. package/dist/components/Command/Command.module.cjs.map +1 -1
  401. package/dist/components/Command/Command.module.js.map +1 -1
  402. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  403. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  404. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  405. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  406. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  407. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  408. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  409. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  410. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  411. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  412. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  413. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  414. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  415. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  416. package/dist/components/DataList/DataList.cjs.map +1 -1
  417. package/dist/components/DataList/DataList.js.map +1 -1
  418. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  419. package/dist/components/DataList/DataList.module.js.map +1 -1
  420. package/dist/components/DataTable/DataTable.cjs +1 -1
  421. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  422. package/dist/components/DataTable/DataTable.js +6 -14
  423. package/dist/components/DataTable/DataTable.js.map +1 -1
  424. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  425. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  426. package/dist/components/DataTable/EditableCell.cjs +1 -1
  427. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  428. package/dist/components/DataTable/EditableCell.js +1 -9
  429. package/dist/components/DataTable/EditableCell.js.map +1 -1
  430. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  431. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  432. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  433. package/dist/components/DataTable/edit-labels.js.map +1 -1
  434. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  435. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  436. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  437. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  438. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  439. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  440. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  441. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  442. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  443. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  444. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  445. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  446. package/dist/components/Divider/Divider.cjs.map +1 -1
  447. package/dist/components/Divider/Divider.js.map +1 -1
  448. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  449. package/dist/components/Divider/Divider.module.js.map +1 -1
  450. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  451. package/dist/components/Drawer/Drawer.js.map +1 -1
  452. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  453. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  454. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  455. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  456. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  457. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  458. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  459. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  460. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  461. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  462. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  463. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  464. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  465. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  466. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  467. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  468. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  469. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  470. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  471. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  472. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  473. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  474. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  475. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  476. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  477. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  478. package/dist/components/FileUpload/FileUpload.js +7 -17
  479. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  480. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  481. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  482. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  483. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  484. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  485. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  486. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  487. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  488. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  489. package/dist/components/FilterBar/filter-model.js.map +1 -1
  490. package/dist/components/FilterBar/filter-query.cjs +1 -1
  491. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  492. package/dist/components/FilterBar/filter-query.js +2 -5
  493. package/dist/components/FilterBar/filter-query.js.map +1 -1
  494. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  495. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  496. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  497. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  498. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  499. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  500. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  501. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  502. package/dist/components/For/For.cjs.map +1 -1
  503. package/dist/components/For/For.js.map +1 -1
  504. package/dist/components/Form/Form.cjs.map +1 -1
  505. package/dist/components/Form/Form.js.map +1 -1
  506. package/dist/components/Form/Form.module.cjs.map +1 -1
  507. package/dist/components/Form/Form.module.js.map +1 -1
  508. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  509. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  510. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  511. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  512. package/dist/components/Image/Image.cjs.map +1 -1
  513. package/dist/components/Image/Image.js.map +1 -1
  514. package/dist/components/Image/Image.module.cjs.map +1 -1
  515. package/dist/components/Image/Image.module.js.map +1 -1
  516. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  517. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  518. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  519. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  520. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  521. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  522. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  523. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  524. package/dist/components/Input/Input.cjs.map +1 -1
  525. package/dist/components/Input/Input.js.map +1 -1
  526. package/dist/components/Input/Input.module.cjs.map +1 -1
  527. package/dist/components/Input/Input.module.js.map +1 -1
  528. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  529. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  530. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  531. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  532. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  533. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  534. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  535. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  536. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  537. package/dist/components/InstallButton/install-hints.js.map +1 -1
  538. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  539. package/dist/components/Kanban/Kanban.js.map +1 -1
  540. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  541. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  542. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  543. package/dist/components/Kbd/Kbd.js.map +1 -1
  544. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  545. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  546. package/dist/components/Label/Label.cjs.map +1 -1
  547. package/dist/components/Label/Label.js.map +1 -1
  548. package/dist/components/Label/Label.module.cjs.map +1 -1
  549. package/dist/components/Label/Label.module.js.map +1 -1
  550. package/dist/components/Layout/Layout.cjs.map +1 -1
  551. package/dist/components/Layout/Layout.js.map +1 -1
  552. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  553. package/dist/components/Layout/Layout.module.js.map +1 -1
  554. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  555. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  556. package/dist/components/Lightbox/Lightbox.js +1 -1
  557. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  558. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  559. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  560. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  561. package/dist/components/ListTile/ListTile.js.map +1 -1
  562. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  563. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  564. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  565. package/dist/components/Markdown/Markdown.js.map +1 -1
  566. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  567. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  568. package/dist/components/Markdown/markdown-parse.cjs +2 -2
  569. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  570. package/dist/components/Markdown/markdown-parse.js +8 -27
  571. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  572. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  573. package/dist/components/Masonry/Masonry.js.map +1 -1
  574. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  575. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  576. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  577. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  578. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  579. package/dist/components/Menubar/Menubar.js.map +1 -1
  580. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  581. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  582. package/dist/components/Modal/Modal.cjs.map +1 -1
  583. package/dist/components/Modal/Modal.js.map +1 -1
  584. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  585. package/dist/components/Modal/Modal.module.js.map +1 -1
  586. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  587. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  588. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  589. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  590. package/dist/components/Money/Money.cjs.map +1 -1
  591. package/dist/components/Money/Money.js.map +1 -1
  592. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  593. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  594. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  595. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  596. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  597. package/dist/components/NProgress/NProgress.js.map +1 -1
  598. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  599. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  600. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  601. package/dist/components/Navbar/Navbar.js.map +1 -1
  602. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  603. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  604. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  605. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  606. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  607. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  608. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  609. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  610. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  611. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  612. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  613. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  614. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  615. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  616. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  617. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  618. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  619. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  620. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  621. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  622. package/dist/components/Page/Page.cjs.map +1 -1
  623. package/dist/components/Page/Page.js.map +1 -1
  624. package/dist/components/Page/Page.module.cjs.map +1 -1
  625. package/dist/components/Page/Page.module.js.map +1 -1
  626. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  627. package/dist/components/Pagination/Pagination.js.map +1 -1
  628. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  629. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  630. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  631. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  632. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  633. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  634. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  635. package/dist/components/PinInput/PinInput.js.map +1 -1
  636. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  637. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  638. package/dist/components/Popover/Popover.cjs.map +1 -1
  639. package/dist/components/Popover/Popover.js.map +1 -1
  640. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  641. package/dist/components/Popover/Popover.module.js.map +1 -1
  642. package/dist/components/Portal/Portal.cjs.map +1 -1
  643. package/dist/components/Portal/Portal.js.map +1 -1
  644. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  645. package/dist/components/Portal/anchor-position.js.map +1 -1
  646. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  647. package/dist/components/Portal/escape-layer.js.map +1 -1
  648. package/dist/components/Portal/portal-host.cjs.map +1 -1
  649. package/dist/components/Portal/portal-host.js.map +1 -1
  650. package/dist/components/Portal/tab-bridge.cjs +1 -1
  651. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  652. package/dist/components/Portal/tab-bridge.js +1 -5
  653. package/dist/components/Portal/tab-bridge.js.map +1 -1
  654. package/dist/components/Progress/Progress.cjs.map +1 -1
  655. package/dist/components/Progress/Progress.js.map +1 -1
  656. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  657. package/dist/components/Progress/Progress.module.js.map +1 -1
  658. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  659. package/dist/components/QRCode/QRCode.js.map +1 -1
  660. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  661. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  662. package/dist/components/QRCode/qr-encode.cjs +1 -1
  663. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  664. package/dist/components/QRCode/qr-encode.js +7 -13
  665. package/dist/components/QRCode/qr-encode.js.map +1 -1
  666. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  667. package/dist/components/QRCode/qr-tables.js.map +1 -1
  668. package/dist/components/Radio/Radio.cjs.map +1 -1
  669. package/dist/components/Radio/Radio.js.map +1 -1
  670. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  671. package/dist/components/Radio/Radio.module.js.map +1 -1
  672. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  673. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  674. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  675. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  676. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  677. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  678. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  679. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  680. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  681. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  682. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  683. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  684. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  685. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  686. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  687. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  688. package/dist/components/Resizable/Resizable.cjs +1 -1
  689. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  690. package/dist/components/Resizable/Resizable.js +1 -9
  691. package/dist/components/Resizable/Resizable.js.map +1 -1
  692. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  693. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  694. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  695. package/dist/components/Responsive/Responsive.js.map +1 -1
  696. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  697. package/dist/components/Reveal/Reveal.js.map +1 -1
  698. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  699. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  700. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  701. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  702. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  703. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  704. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  705. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  706. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  707. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  708. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  709. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  710. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  711. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  712. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  713. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  714. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  715. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  716. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  717. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  718. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  719. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  720. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  721. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  722. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  723. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  724. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  725. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  726. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  727. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  728. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  729. package/dist/components/Select/CaretIcon.js.map +1 -1
  730. package/dist/components/Select/Select.cjs.map +1 -1
  731. package/dist/components/Select/Select.js.map +1 -1
  732. package/dist/components/Select/Select.module.cjs.map +1 -1
  733. package/dist/components/Select/Select.module.js.map +1 -1
  734. package/dist/components/Select/options.cjs.map +1 -1
  735. package/dist/components/Select/options.js.map +1 -1
  736. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  737. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  738. package/dist/components/Sidebar/Sidebar.js +13 -23
  739. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  740. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  741. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  742. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  743. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  744. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  745. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  746. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  747. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  748. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  749. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  750. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  751. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  752. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  753. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  754. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  755. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  756. package/dist/components/Slider/Slider.cjs.map +1 -1
  757. package/dist/components/Slider/Slider.js.map +1 -1
  758. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  759. package/dist/components/Slider/Slider.module.js.map +1 -1
  760. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  761. package/dist/components/Spacer/Spacer.js.map +1 -1
  762. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  763. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  764. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  765. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  766. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  767. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  768. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  769. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  770. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  771. package/dist/components/Spinner/Spinner.js.map +1 -1
  772. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  773. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  774. package/dist/components/Stat/Stat.cjs.map +1 -1
  775. package/dist/components/Stat/Stat.js.map +1 -1
  776. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  777. package/dist/components/Stat/Stat.module.js.map +1 -1
  778. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  779. package/dist/components/Stepper/Stepper.js.map +1 -1
  780. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  781. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  782. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  783. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  784. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  785. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  786. package/dist/components/Switch/Switch.cjs.map +1 -1
  787. package/dist/components/Switch/Switch.js.map +1 -1
  788. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  789. package/dist/components/Switch/Switch.module.js.map +1 -1
  790. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  791. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  792. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  793. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  794. package/dist/components/Table/Table.cjs.map +1 -1
  795. package/dist/components/Table/Table.js.map +1 -1
  796. package/dist/components/Table/Table.module.cjs.map +1 -1
  797. package/dist/components/Table/Table.module.js.map +1 -1
  798. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  799. package/dist/components/Tabs/Tabs.js.map +1 -1
  800. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  801. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  802. package/dist/components/Tag/Tag.cjs.map +1 -1
  803. package/dist/components/Tag/Tag.js.map +1 -1
  804. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  805. package/dist/components/Tag/Tag.module.js.map +1 -1
  806. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  807. package/dist/components/Textarea/Textarea.js.map +1 -1
  808. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  809. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  810. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  811. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  812. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  813. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  814. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  815. package/dist/components/Timeline/Timeline.js.map +1 -1
  816. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  817. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  818. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  819. package/dist/components/Toast/Toast.module.js.map +1 -1
  820. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  821. package/dist/components/Toast/ToastProvider.js.map +1 -1
  822. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  823. package/dist/components/Toggle/Toggle.js.map +1 -1
  824. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  825. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  826. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  827. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  828. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  829. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  830. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  831. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  832. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  833. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  834. package/dist/components/Tour/Tour.cjs +1 -1
  835. package/dist/components/Tour/Tour.cjs.map +1 -1
  836. package/dist/components/Tour/Tour.js +1 -5
  837. package/dist/components/Tour/Tour.js.map +1 -1
  838. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  839. package/dist/components/Tour/Tour.module.js.map +1 -1
  840. package/dist/components/Tour/tour-position.cjs.map +1 -1
  841. package/dist/components/Tour/tour-position.js.map +1 -1
  842. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  843. package/dist/components/Transfer/Transfer.js.map +1 -1
  844. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  845. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  846. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  847. package/dist/components/Transfer/transfer-state.js.map +1 -1
  848. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  849. package/dist/components/TreeView/TreeView.js.map +1 -1
  850. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  851. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  852. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  853. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  854. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  855. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  856. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  857. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  858. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  859. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  860. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  861. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  862. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  863. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  864. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  865. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  866. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  867. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  868. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  869. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  870. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  871. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  872. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  873. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  874. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  875. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  876. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  877. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  878. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  879. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  880. package/dist/components/Wizard/Wizard.cjs +1 -1
  881. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  882. package/dist/components/Wizard/Wizard.js +4 -11
  883. package/dist/components/Wizard/Wizard.js.map +1 -1
  884. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  885. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  886. package/dist/data/create-data-provider.cjs.map +1 -1
  887. package/dist/data/create-data-provider.js.map +1 -1
  888. package/dist/data/data-provider-context.cjs.map +1 -1
  889. package/dist/data/data-provider-context.js.map +1 -1
  890. package/dist/data/use-resource.cjs.map +1 -1
  891. package/dist/data/use-resource.js.map +1 -1
  892. package/dist/editor/RichTextEditor.cjs.map +1 -1
  893. package/dist/editor/RichTextEditor.js.map +1 -1
  894. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  895. package/dist/editor/RichTextEditor.module.js.map +1 -1
  896. package/dist/editor.js +1 -2
  897. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  898. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  899. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  900. package/dist/error-boundary/use-error-handler.js.map +1 -1
  901. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  902. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  903. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  904. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  905. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  906. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  907. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  908. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  909. package/dist/forms/FormField.cjs.map +1 -1
  910. package/dist/forms/FormField.js.map +1 -1
  911. package/dist/forms/br-validators.cjs.map +1 -1
  912. package/dist/forms/br-validators.js.map +1 -1
  913. package/dist/forms/masked-inputs.cjs.map +1 -1
  914. package/dist/forms/masked-inputs.js.map +1 -1
  915. package/dist/forms/use-viacep.cjs.map +1 -1
  916. package/dist/forms/use-viacep.js.map +1 -1
  917. package/dist/forms/use-zod-form.cjs.map +1 -1
  918. package/dist/forms/use-zod-form.js.map +1 -1
  919. package/dist/forms/validate-form.cjs.map +1 -1
  920. package/dist/forms/validate-form.js.map +1 -1
  921. package/dist/forms/zod-resolver.cjs.map +1 -1
  922. package/dist/forms/zod-resolver.js.map +1 -1
  923. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  924. package/dist/geo/TrajectoryMap.js.map +1 -1
  925. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  926. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  927. package/dist/geo/bounds.cjs.map +1 -1
  928. package/dist/geo/bounds.js.map +1 -1
  929. package/dist/geo/create-position-tracker.cjs +1 -1
  930. package/dist/geo/create-position-tracker.cjs.map +1 -1
  931. package/dist/geo/create-position-tracker.js +1 -7
  932. package/dist/geo/create-position-tracker.js.map +1 -1
  933. package/dist/geo/distance.cjs.map +1 -1
  934. package/dist/geo/distance.js.map +1 -1
  935. package/dist/geo/estimate.cjs.map +1 -1
  936. package/dist/geo/estimate.js.map +1 -1
  937. package/dist/geo/leaflet-map.cjs.map +1 -1
  938. package/dist/geo/leaflet-map.js.map +1 -1
  939. package/dist/geo/projection.cjs.map +1 -1
  940. package/dist/geo/projection.js.map +1 -1
  941. package/dist/geo/routing.cjs.map +1 -1
  942. package/dist/geo/routing.js.map +1 -1
  943. package/dist/geo/types.cjs.map +1 -1
  944. package/dist/geo/types.js.map +1 -1
  945. package/dist/geo/use-position-tracker.cjs.map +1 -1
  946. package/dist/geo/use-position-tracker.js.map +1 -1
  947. package/dist/hooks/pwa-env.cjs.map +1 -1
  948. package/dist/hooks/pwa-env.js.map +1 -1
  949. package/dist/hooks/tab-sequence.cjs.map +1 -1
  950. package/dist/hooks/tab-sequence.js.map +1 -1
  951. package/dist/hooks/use-announce.cjs +1 -1
  952. package/dist/hooks/use-announce.cjs.map +1 -1
  953. package/dist/hooks/use-announce.js +2 -2
  954. package/dist/hooks/use-announce.js.map +1 -1
  955. package/dist/hooks/use-async.cjs.map +1 -1
  956. package/dist/hooks/use-async.js.map +1 -1
  957. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  958. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  959. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  960. package/dist/hooks/use-breakpoint.js.map +1 -1
  961. package/dist/hooks/use-click-outside.cjs.map +1 -1
  962. package/dist/hooks/use-click-outside.js.map +1 -1
  963. package/dist/hooks/use-client-filter.cjs.map +1 -1
  964. package/dist/hooks/use-client-filter.js.map +1 -1
  965. package/dist/hooks/use-clipboard.cjs.map +1 -1
  966. package/dist/hooks/use-clipboard.js.map +1 -1
  967. package/dist/hooks/use-countdown.cjs.map +1 -1
  968. package/dist/hooks/use-countdown.js.map +1 -1
  969. package/dist/hooks/use-counter.cjs.map +1 -1
  970. package/dist/hooks/use-counter.js.map +1 -1
  971. package/dist/hooks/use-debounce.cjs.map +1 -1
  972. package/dist/hooks/use-debounce.js.map +1 -1
  973. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  974. package/dist/hooks/use-deep-memo.js.map +1 -1
  975. package/dist/hooks/use-disclosure.cjs.map +1 -1
  976. package/dist/hooks/use-disclosure.js.map +1 -1
  977. package/dist/hooks/use-document-title.cjs.map +1 -1
  978. package/dist/hooks/use-document-title.js.map +1 -1
  979. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  980. package/dist/hooks/use-document-visibility.js.map +1 -1
  981. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  982. package/dist/hooks/use-draft-filters.js.map +1 -1
  983. package/dist/hooks/use-event-listener.cjs.map +1 -1
  984. package/dist/hooks/use-event-listener.js.map +1 -1
  985. package/dist/hooks/use-favicon.cjs.map +1 -1
  986. package/dist/hooks/use-favicon.js.map +1 -1
  987. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  988. package/dist/hooks/use-focus-trap.js.map +1 -1
  989. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  990. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  991. package/dist/hooks/use-fullscreen.cjs +1 -1
  992. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  993. package/dist/hooks/use-fullscreen.js +7 -23
  994. package/dist/hooks/use-fullscreen.js.map +1 -1
  995. package/dist/hooks/use-geolocation.cjs.map +1 -1
  996. package/dist/hooks/use-geolocation.js.map +1 -1
  997. package/dist/hooks/use-hover.cjs.map +1 -1
  998. package/dist/hooks/use-hover.js.map +1 -1
  999. package/dist/hooks/use-idle.cjs.map +1 -1
  1000. package/dist/hooks/use-idle.js.map +1 -1
  1001. package/dist/hooks/use-install-prompt.cjs +1 -1
  1002. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1003. package/dist/hooks/use-install-prompt.js +1 -1
  1004. package/dist/hooks/use-install-prompt.js.map +1 -1
  1005. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1006. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1007. package/dist/hooks/use-interval.cjs.map +1 -1
  1008. package/dist/hooks/use-interval.js.map +1 -1
  1009. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1010. package/dist/hooks/use-is-first-render.js.map +1 -1
  1011. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1012. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1013. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1014. package/dist/hooks/use-latest-ref.js.map +1 -1
  1015. package/dist/hooks/use-list-state.cjs.map +1 -1
  1016. package/dist/hooks/use-list-state.js.map +1 -1
  1017. package/dist/hooks/use-local-storage.cjs +1 -1
  1018. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1019. package/dist/hooks/use-local-storage.js +2 -5
  1020. package/dist/hooks/use-local-storage.js.map +1 -1
  1021. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1022. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1023. package/dist/hooks/use-long-press.cjs.map +1 -1
  1024. package/dist/hooks/use-long-press.js.map +1 -1
  1025. package/dist/hooks/use-map.cjs.map +1 -1
  1026. package/dist/hooks/use-map.js.map +1 -1
  1027. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1028. package/dist/hooks/use-media-devices.js.map +1 -1
  1029. package/dist/hooks/use-media-permission.cjs +1 -1
  1030. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1031. package/dist/hooks/use-media-permission.js +2 -5
  1032. package/dist/hooks/use-media-permission.js.map +1 -1
  1033. package/dist/hooks/use-media-query.cjs.map +1 -1
  1034. package/dist/hooks/use-media-query.js.map +1 -1
  1035. package/dist/hooks/use-object-url.cjs.map +1 -1
  1036. package/dist/hooks/use-object-url.js.map +1 -1
  1037. package/dist/hooks/use-online.cjs.map +1 -1
  1038. package/dist/hooks/use-online.js.map +1 -1
  1039. package/dist/hooks/use-pagination.cjs.map +1 -1
  1040. package/dist/hooks/use-pagination.js.map +1 -1
  1041. package/dist/hooks/use-previous.cjs.map +1 -1
  1042. package/dist/hooks/use-previous.js.map +1 -1
  1043. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1044. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1045. package/dist/hooks/use-queue.cjs.map +1 -1
  1046. package/dist/hooks/use-queue.js.map +1 -1
  1047. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1048. package/dist/hooks/use-resize-observer.js.map +1 -1
  1049. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1050. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1051. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1052. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1053. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1054. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1055. package/dist/hooks/use-set.cjs.map +1 -1
  1056. package/dist/hooks/use-set.js.map +1 -1
  1057. package/dist/hooks/use-sortable.cjs.map +1 -1
  1058. package/dist/hooks/use-sortable.js.map +1 -1
  1059. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1060. package/dist/hooks/use-stable-callback.js.map +1 -1
  1061. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1062. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1063. package/dist/hooks/use-throttle.cjs.map +1 -1
  1064. package/dist/hooks/use-throttle.js.map +1 -1
  1065. package/dist/hooks/use-timeout.cjs.map +1 -1
  1066. package/dist/hooks/use-timeout.js.map +1 -1
  1067. package/dist/hooks/use-toggle.cjs.map +1 -1
  1068. package/dist/hooks/use-toggle.js.map +1 -1
  1069. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1070. package/dist/hooks/use-typewriter.js.map +1 -1
  1071. package/dist/hooks/use-window-size.cjs.map +1 -1
  1072. package/dist/hooks/use-window-size.js.map +1 -1
  1073. package/dist/http/api-client.cjs.map +1 -1
  1074. package/dist/http/api-client.js.map +1 -1
  1075. package/dist/http/build-url.cjs.map +1 -1
  1076. package/dist/http/build-url.js.map +1 -1
  1077. package/dist/http/credential-scope.cjs.map +1 -1
  1078. package/dist/http/credential-scope.js.map +1 -1
  1079. package/dist/http/csrf.cjs.map +1 -1
  1080. package/dist/http/csrf.js.map +1 -1
  1081. package/dist/http/decode-response.cjs.map +1 -1
  1082. package/dist/http/decode-response.js.map +1 -1
  1083. package/dist/http/describe-api-error.cjs.map +1 -1
  1084. package/dist/http/describe-api-error.js.map +1 -1
  1085. package/dist/http/errors.cjs.map +1 -1
  1086. package/dist/http/errors.js.map +1 -1
  1087. package/dist/http/idempotency.cjs.map +1 -1
  1088. package/dist/http/idempotency.js.map +1 -1
  1089. package/dist/http/parse-response.cjs.map +1 -1
  1090. package/dist/http/parse-response.js.map +1 -1
  1091. package/dist/http/resumable-upload.cjs.map +1 -1
  1092. package/dist/http/resumable-upload.js.map +1 -1
  1093. package/dist/http/retry.cjs.map +1 -1
  1094. package/dist/http/retry.js.map +1 -1
  1095. package/dist/http/timeout.cjs.map +1 -1
  1096. package/dist/http/timeout.js.map +1 -1
  1097. package/dist/http/upload-with-progress.cjs +1 -1
  1098. package/dist/http/upload-with-progress.cjs.map +1 -1
  1099. package/dist/http/upload-with-progress.js +2 -7
  1100. package/dist/http/upload-with-progress.js.map +1 -1
  1101. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1102. package/dist/http/use-describe-api-error.js.map +1 -1
  1103. package/dist/http/use-poll.cjs +1 -1
  1104. package/dist/http/use-poll.cjs.map +1 -1
  1105. package/dist/http/use-poll.js +2 -5
  1106. package/dist/http/use-poll.js.map +1 -1
  1107. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1108. package/dist/i18n/I18nProvider.js.map +1 -1
  1109. package/dist/i18n/create-i18n.cjs.map +1 -1
  1110. package/dist/i18n/create-i18n.js.map +1 -1
  1111. package/dist/icons/Icon.cjs.map +1 -1
  1112. package/dist/icons/Icon.js.map +1 -1
  1113. package/dist/icons/IconPicker.cjs.map +1 -1
  1114. package/dist/icons/IconPicker.js.map +1 -1
  1115. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1116. package/dist/icons/IconPicker.module.js.map +1 -1
  1117. package/dist/icons/IconProvider.cjs.map +1 -1
  1118. package/dist/icons/IconProvider.js.map +1 -1
  1119. package/dist/icons/alias.cjs.map +1 -1
  1120. package/dist/icons/alias.js.map +1 -1
  1121. package/dist/icons/generated/aliases.cjs.map +1 -1
  1122. package/dist/icons/generated/aliases.js.map +1 -1
  1123. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1124. package/dist/icons/generated/icon-names.js.map +1 -1
  1125. package/dist/icons/generated/loaders.cjs.map +1 -1
  1126. package/dist/icons/generated/loaders.js.map +1 -1
  1127. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1128. package/dist/icons/generated/shard-00.js.map +1 -1
  1129. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1130. package/dist/icons/generated/shard-01.js.map +1 -1
  1131. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1132. package/dist/icons/generated/shard-02.js.map +1 -1
  1133. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1134. package/dist/icons/generated/shard-03.js.map +1 -1
  1135. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1136. package/dist/icons/generated/shard-04.js.map +1 -1
  1137. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1138. package/dist/icons/generated/shard-05.js.map +1 -1
  1139. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1140. package/dist/icons/generated/shard-06.js.map +1 -1
  1141. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1142. package/dist/icons/generated/shard-07.js.map +1 -1
  1143. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1144. package/dist/icons/generated/shard-08.js.map +1 -1
  1145. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1146. package/dist/icons/generated/shard-09.js.map +1 -1
  1147. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1148. package/dist/icons/generated/shard-10.js.map +1 -1
  1149. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1150. package/dist/icons/generated/shard-11.js.map +1 -1
  1151. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1152. package/dist/icons/generated/shard-12.js.map +1 -1
  1153. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-13.js.map +1 -1
  1155. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-14.js.map +1 -1
  1157. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-15.js.map +1 -1
  1159. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-16.js.map +1 -1
  1161. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-17.js.map +1 -1
  1163. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-18.js.map +1 -1
  1165. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-19.js.map +1 -1
  1167. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-20.js.map +1 -1
  1169. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-21.js.map +1 -1
  1171. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-22.js.map +1 -1
  1173. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-23.js.map +1 -1
  1175. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-24.js.map +1 -1
  1177. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-25.js.map +1 -1
  1179. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-26.js.map +1 -1
  1181. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-27.js.map +1 -1
  1183. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-28.js.map +1 -1
  1185. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-29.js.map +1 -1
  1187. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-30.js.map +1 -1
  1189. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-31.js.map +1 -1
  1191. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-32.js.map +1 -1
  1193. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-33.js.map +1 -1
  1195. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-34.js.map +1 -1
  1197. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-35.js.map +1 -1
  1199. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-36.js.map +1 -1
  1201. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-37.js.map +1 -1
  1203. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-38.js.map +1 -1
  1205. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-39.js.map +1 -1
  1207. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-40.js.map +1 -1
  1209. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-41.js.map +1 -1
  1211. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-42.js.map +1 -1
  1213. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-43.js.map +1 -1
  1215. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-44.js.map +1 -1
  1217. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-45.js.map +1 -1
  1219. package/dist/icons/icon-context.cjs.map +1 -1
  1220. package/dist/icons/icon-context.js.map +1 -1
  1221. package/dist/icons/is-icon-name.cjs.map +1 -1
  1222. package/dist/icons/is-icon-name.js.map +1 -1
  1223. package/dist/icons/material-symbols.cjs.map +1 -1
  1224. package/dist/icons/material-symbols.js.map +1 -1
  1225. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1226. package/dist/icons/normalize-icon-name.js.map +1 -1
  1227. package/dist/icons/shard-cache.cjs +1 -1
  1228. package/dist/icons/shard-cache.cjs.map +1 -1
  1229. package/dist/icons/shard-cache.js +2 -5
  1230. package/dist/icons/shard-cache.js.map +1 -1
  1231. package/dist/icons/use-icon.cjs.map +1 -1
  1232. package/dist/icons/use-icon.js.map +1 -1
  1233. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1234. package/dist/icons/validate-icon-name.js.map +1 -1
  1235. package/dist/icons-virtual.cjs.map +1 -1
  1236. package/dist/icons-virtual.js.map +1 -1
  1237. package/dist/imaging/canvas.cjs.map +1 -1
  1238. package/dist/imaging/canvas.js.map +1 -1
  1239. package/dist/imaging/compress.cjs.map +1 -1
  1240. package/dist/imaging/compress.js.map +1 -1
  1241. package/dist/imaging/decode.cjs.map +1 -1
  1242. package/dist/imaging/decode.js.map +1 -1
  1243. package/dist/imaging/encode.cjs.map +1 -1
  1244. package/dist/imaging/encode.js.map +1 -1
  1245. package/dist/imaging/exceptions.cjs.map +1 -1
  1246. package/dist/imaging/exceptions.js.map +1 -1
  1247. package/dist/imaging/frame.cjs.map +1 -1
  1248. package/dist/imaging/frame.js.map +1 -1
  1249. package/dist/imaging/thumbnails.cjs.map +1 -1
  1250. package/dist/imaging/thumbnails.js.map +1 -1
  1251. package/dist/imaging/transform.cjs.map +1 -1
  1252. package/dist/imaging/transform.js.map +1 -1
  1253. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1254. package/dist/imaging/use-image-processing.js.map +1 -1
  1255. package/dist/logger/logger.cjs.map +1 -1
  1256. package/dist/logger/logger.js.map +1 -1
  1257. package/dist/neural.cjs.map +1 -1
  1258. package/dist/neural.js.map +1 -1
  1259. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1260. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1261. package/dist/oauth/GoogleSignIn.js +6 -9
  1262. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1263. package/dist/oauth/callback.cjs.map +1 -1
  1264. package/dist/oauth/callback.js.map +1 -1
  1265. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1266. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1267. package/dist/offline/conflict.cjs.map +1 -1
  1268. package/dist/offline/conflict.js.map +1 -1
  1269. package/dist/offline/create-offline-database.cjs.map +1 -1
  1270. package/dist/offline/create-offline-database.js.map +1 -1
  1271. package/dist/offline/create-offline-store.cjs +1 -1
  1272. package/dist/offline/create-offline-store.cjs.map +1 -1
  1273. package/dist/offline/create-offline-store.js +1 -5
  1274. package/dist/offline/create-offline-store.js.map +1 -1
  1275. package/dist/offline/create-offline-sync.cjs +1 -1
  1276. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1277. package/dist/offline/create-offline-sync.js +9 -14
  1278. package/dist/offline/create-offline-sync.js.map +1 -1
  1279. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1280. package/dist/offline/use-offline-sync.js.map +1 -1
  1281. package/dist/perf/cache-size.cjs.map +1 -1
  1282. package/dist/perf/cache-size.js.map +1 -1
  1283. package/dist/perf/device.cjs.map +1 -1
  1284. package/dist/perf/device.js.map +1 -1
  1285. package/dist/perf/format.cjs.map +1 -1
  1286. package/dist/perf/format.js.map +1 -1
  1287. package/dist/perf/profiler.cjs.map +1 -1
  1288. package/dist/perf/profiler.js.map +1 -1
  1289. package/dist/push/use-push-subscription.cjs.map +1 -1
  1290. package/dist/push/use-push-subscription.js.map +1 -1
  1291. package/dist/push/utils.cjs.map +1 -1
  1292. package/dist/push/utils.js.map +1 -1
  1293. package/dist/push/web-push-client.cjs.map +1 -1
  1294. package/dist/push/web-push-client.js.map +1 -1
  1295. package/dist/query/QueryProvider.cjs.map +1 -1
  1296. package/dist/query/QueryProvider.js.map +1 -1
  1297. package/dist/query/constants.cjs.map +1 -1
  1298. package/dist/query/constants.js.map +1 -1
  1299. package/dist/query/create-query-keys.cjs.map +1 -1
  1300. package/dist/query/create-query-keys.js.map +1 -1
  1301. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1302. package/dist/query/foreign-client-warning.js.map +1 -1
  1303. package/dist/query/offline-persistence.cjs +1 -1
  1304. package/dist/query/offline-persistence.cjs.map +1 -1
  1305. package/dist/query/offline-persistence.js +2 -10
  1306. package/dist/query/offline-persistence.js.map +1 -1
  1307. package/dist/query/optimistic.cjs.map +1 -1
  1308. package/dist/query/optimistic.js.map +1 -1
  1309. package/dist/query/pagination.cjs.map +1 -1
  1310. package/dist/query/pagination.js.map +1 -1
  1311. package/dist/query/retry-policy.cjs.map +1 -1
  1312. package/dist/query/retry-policy.js.map +1 -1
  1313. package/dist/query/use-cursor-query.cjs.map +1 -1
  1314. package/dist/query/use-cursor-query.js.map +1 -1
  1315. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1316. package/dist/query/use-offline-mutation.js.map +1 -1
  1317. package/dist/query/use-paginated-query.cjs.map +1 -1
  1318. package/dist/query/use-paginated-query.js.map +1 -1
  1319. package/dist/router/AppRouter.cjs.map +1 -1
  1320. package/dist/router/AppRouter.js.map +1 -1
  1321. package/dist/router/RouteGuard.cjs.map +1 -1
  1322. package/dist/router/RouteGuard.js.map +1 -1
  1323. package/dist/router/index.js +2 -2
  1324. package/dist/share/share-or-download.cjs.map +1 -1
  1325. package/dist/share/share-or-download.js.map +1 -1
  1326. package/dist/share/share.cjs.map +1 -1
  1327. package/dist/share/share.js.map +1 -1
  1328. package/dist/sse/create-event-stream.cjs.map +1 -1
  1329. package/dist/sse/create-event-stream.js.map +1 -1
  1330. package/dist/sse/use-event-stream.cjs.map +1 -1
  1331. package/dist/sse/use-event-stream.js.map +1 -1
  1332. package/dist/store/create-selectors.cjs.map +1 -1
  1333. package/dist/store/create-selectors.js.map +1 -1
  1334. package/dist/store/create-store.cjs.map +1 -1
  1335. package/dist/store/create-store.js.map +1 -1
  1336. package/dist/sw/background-sync.cjs.map +1 -1
  1337. package/dist/sw/background-sync.js.map +1 -1
  1338. package/dist/sw/cache-inspect.cjs.map +1 -1
  1339. package/dist/sw/cache-inspect.js.map +1 -1
  1340. package/dist/sw/cache.cjs +1 -1
  1341. package/dist/sw/cache.cjs.map +1 -1
  1342. package/dist/sw/cache.js +2 -6
  1343. package/dist/sw/cache.js.map +1 -1
  1344. package/dist/sw/create-push-handler.cjs.map +1 -1
  1345. package/dist/sw/create-push-handler.js.map +1 -1
  1346. package/dist/sw/credential-headers.cjs.map +1 -1
  1347. package/dist/sw/credential-headers.js.map +1 -1
  1348. package/dist/sw/periodic-sync.cjs.map +1 -1
  1349. package/dist/sw/periodic-sync.js.map +1 -1
  1350. package/dist/sw/register-service-worker.cjs.map +1 -1
  1351. package/dist/sw/register-service-worker.js.map +1 -1
  1352. package/dist/sw/session-data.cjs.map +1 -1
  1353. package/dist/sw/session-data.js.map +1 -1
  1354. package/dist/tabular/assets.cjs.map +1 -1
  1355. package/dist/tabular/assets.js.map +1 -1
  1356. package/dist/tabular/cache.cjs.map +1 -1
  1357. package/dist/tabular/cache.js.map +1 -1
  1358. package/dist/tabular/compact.cjs.map +1 -1
  1359. package/dist/tabular/compact.js.map +1 -1
  1360. package/dist/tabular/exceptions.cjs.map +1 -1
  1361. package/dist/tabular/exceptions.js.map +1 -1
  1362. package/dist/tabular/manifest.cjs.map +1 -1
  1363. package/dist/tabular/manifest.js.map +1 -1
  1364. package/dist/tabular/predictor.cjs.map +1 -1
  1365. package/dist/tabular/predictor.js.map +1 -1
  1366. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1367. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1368. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1369. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1370. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1371. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1372. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1373. package/dist/telemetry/app-error-queue.js.map +1 -1
  1374. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1375. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1376. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1377. package/dist/telemetry/app-error-schema.js.map +1 -1
  1378. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1379. package/dist/telemetry/app-error-transport.js.map +1 -1
  1380. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1381. package/dist/telemetry/console-adapter.js.map +1 -1
  1382. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1383. package/dist/telemetry/describe-app-error.js.map +1 -1
  1384. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1385. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1386. package/dist/telemetry/posthog-adapter.js +1 -5
  1387. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1388. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1389. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1390. package/dist/tempest-react-sdk.cjs +1 -1
  1391. package/dist/tempest-react-sdk.d.ts +234 -3
  1392. package/dist/tempest-react-sdk.js +85 -85
  1393. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1394. package/dist/testing/create-mock-handlers.js.map +1 -1
  1395. package/dist/testing.js +1 -2
  1396. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1397. package/dist/theme/ThemeProvider.js.map +1 -1
  1398. package/dist/theme/apply-theme.cjs.map +1 -1
  1399. package/dist/theme/apply-theme.js.map +1 -1
  1400. package/dist/theme/color.cjs.map +1 -1
  1401. package/dist/theme/color.js.map +1 -1
  1402. package/dist/theme/create-theme.cjs.map +1 -1
  1403. package/dist/theme/create-theme.js.map +1 -1
  1404. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1405. package/dist/theme/data-viz-ramps.js.map +1 -1
  1406. package/dist/theme/initial-theme.cjs.map +1 -1
  1407. package/dist/theme/initial-theme.js.map +1 -1
  1408. package/dist/theme/inverse-render.cjs.map +1 -1
  1409. package/dist/theme/inverse-render.js.map +1 -1
  1410. package/dist/theme/inverse-restore.cjs.map +1 -1
  1411. package/dist/theme/inverse-restore.js.map +1 -1
  1412. package/dist/theme/inverse-surface.cjs.map +1 -1
  1413. package/dist/theme/inverse-surface.js.map +1 -1
  1414. package/dist/theme/status-tokens.cjs.map +1 -1
  1415. package/dist/theme/status-tokens.js.map +1 -1
  1416. package/dist/theme/theme-presets.cjs.map +1 -1
  1417. package/dist/theme/theme-presets.js.map +1 -1
  1418. package/dist/utils/absent.cjs.map +1 -1
  1419. package/dist/utils/absent.js.map +1 -1
  1420. package/dist/utils/arrays.cjs.map +1 -1
  1421. package/dist/utils/arrays.js.map +1 -1
  1422. package/dist/utils/base64.cjs.map +1 -1
  1423. package/dist/utils/base64.js.map +1 -1
  1424. package/dist/utils/cn.cjs.map +1 -1
  1425. package/dist/utils/cn.js.map +1 -1
  1426. package/dist/utils/compare-values.cjs.map +1 -1
  1427. package/dist/utils/compare-values.js.map +1 -1
  1428. package/dist/utils/compressed-storage.cjs.map +1 -1
  1429. package/dist/utils/compressed-storage.js.map +1 -1
  1430. package/dist/utils/csv.cjs.map +1 -1
  1431. package/dist/utils/csv.js.map +1 -1
  1432. package/dist/utils/dev-mode.cjs.map +1 -1
  1433. package/dist/utils/dev-mode.js.map +1 -1
  1434. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1435. package/dist/utils/duplicate-instance.js.map +1 -1
  1436. package/dist/utils/format.cjs.map +1 -1
  1437. package/dist/utils/format.js.map +1 -1
  1438. package/dist/utils/functions.cjs +1 -1
  1439. package/dist/utils/functions.cjs.map +1 -1
  1440. package/dist/utils/functions.js +1 -1
  1441. package/dist/utils/functions.js.map +1 -1
  1442. package/dist/utils/guards.cjs.map +1 -1
  1443. package/dist/utils/guards.js.map +1 -1
  1444. package/dist/utils/ids.cjs.map +1 -1
  1445. package/dist/utils/ids.js.map +1 -1
  1446. package/dist/utils/intl-cache.cjs.map +1 -1
  1447. package/dist/utils/intl-cache.js.map +1 -1
  1448. package/dist/utils/json-frame.cjs.map +1 -1
  1449. package/dist/utils/json-frame.js.map +1 -1
  1450. package/dist/utils/numbers.cjs.map +1 -1
  1451. package/dist/utils/numbers.js.map +1 -1
  1452. package/dist/utils/objects.cjs.map +1 -1
  1453. package/dist/utils/objects.js.map +1 -1
  1454. package/dist/utils/owner-fingerprint.cjs.map +1 -1
  1455. package/dist/utils/owner-fingerprint.js.map +1 -1
  1456. package/dist/utils/promises.cjs.map +1 -1
  1457. package/dist/utils/promises.js.map +1 -1
  1458. package/dist/utils/relative-time.cjs.map +1 -1
  1459. package/dist/utils/relative-time.js.map +1 -1
  1460. package/dist/utils/safe-url.cjs.map +1 -1
  1461. package/dist/utils/safe-url.js.map +1 -1
  1462. package/dist/utils/schema-like.cjs.map +1 -1
  1463. package/dist/utils/schema-like.js.map +1 -1
  1464. package/dist/utils/storage.cjs +1 -1
  1465. package/dist/utils/storage.cjs.map +1 -1
  1466. package/dist/utils/storage.js +2 -2
  1467. package/dist/utils/storage.js.map +1 -1
  1468. package/dist/utils/strings.cjs.map +1 -1
  1469. package/dist/utils/strings.js.map +1 -1
  1470. package/dist/utils/xlsx.cjs.map +1 -1
  1471. package/dist/utils/xlsx.js.map +1 -1
  1472. package/dist/vision/core/canvas.cjs.map +1 -1
  1473. package/dist/vision/core/canvas.js.map +1 -1
  1474. package/dist/vision/core/dtypes.cjs.map +1 -1
  1475. package/dist/vision/core/dtypes.js.map +1 -1
  1476. package/dist/vision/core/exceptions.cjs.map +1 -1
  1477. package/dist/vision/core/exceptions.js.map +1 -1
  1478. package/dist/vision/core/graph.cjs.map +1 -1
  1479. package/dist/vision/core/graph.js.map +1 -1
  1480. package/dist/vision/core/metadata.cjs +1 -1
  1481. package/dist/vision/core/metadata.cjs.map +1 -1
  1482. package/dist/vision/core/metadata.js +9 -26
  1483. package/dist/vision/core/metadata.js.map +1 -1
  1484. package/dist/vision/core/providers.cjs.map +1 -1
  1485. package/dist/vision/core/providers.js.map +1 -1
  1486. package/dist/vision/core/session.cjs.map +1 -1
  1487. package/dist/vision/core/session.js.map +1 -1
  1488. package/dist/vision/core/timing.cjs.map +1 -1
  1489. package/dist/vision/core/timing.js.map +1 -1
  1490. package/dist/vision/fusion.cjs.map +1 -1
  1491. package/dist/vision/fusion.js.map +1 -1
  1492. package/dist/vision/index.cjs.map +1 -1
  1493. package/dist/vision/index.js.map +1 -1
  1494. package/dist/vision/io/image.cjs.map +1 -1
  1495. package/dist/vision/io/image.js.map +1 -1
  1496. package/dist/vision/labels.cjs.map +1 -1
  1497. package/dist/vision/labels.js.map +1 -1
  1498. package/dist/vision/luminance.cjs.map +1 -1
  1499. package/dist/vision/luminance.js.map +1 -1
  1500. package/dist/vision/normalization.cjs.map +1 -1
  1501. package/dist/vision/normalization.js.map +1 -1
  1502. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1503. package/dist/vision/postprocess/classification.js.map +1 -1
  1504. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1505. package/dist/vision/postprocess/detection.js.map +1 -1
  1506. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1507. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1508. package/dist/vision/preprocess/image.cjs.map +1 -1
  1509. package/dist/vision/preprocess/image.js.map +1 -1
  1510. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1511. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1512. package/dist/vision/results.cjs.map +1 -1
  1513. package/dist/vision/results.js.map +1 -1
  1514. package/dist/vision/tasks/base.cjs.map +1 -1
  1515. package/dist/vision/tasks/base.js.map +1 -1
  1516. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1517. package/dist/vision/tasks/classifier.js.map +1 -1
  1518. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1519. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1520. package/dist/vision/tasks/detector.cjs.map +1 -1
  1521. package/dist/vision/tasks/detector.js.map +1 -1
  1522. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1523. package/dist/vision/tasks/segmenter.js.map +1 -1
  1524. package/dist/vision/types.cjs.map +1 -1
  1525. package/dist/vision/types.js.map +1 -1
  1526. package/dist/vision/use-camera-stream.cjs +1 -1
  1527. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1528. package/dist/vision/use-camera-stream.js +3 -9
  1529. package/dist/vision/use-camera-stream.js.map +1 -1
  1530. package/dist/vision/use-live-luminance.cjs +1 -1
  1531. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1532. package/dist/vision/use-live-luminance.js +1 -5
  1533. package/dist/vision/use-live-luminance.js.map +1 -1
  1534. package/dist/vite/base-url.cjs.map +1 -1
  1535. package/dist/vite/base-url.js.map +1 -1
  1536. package/dist/vite/create-vite-config.cjs.map +1 -1
  1537. package/dist/vite/create-vite-config.js.map +1 -1
  1538. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1539. package/dist/vite/narrow-tokens.js.map +1 -1
  1540. package/dist/vite/tempest-csp.cjs +1 -1
  1541. package/dist/vite/tempest-csp.cjs.map +1 -1
  1542. package/dist/vite/tempest-csp.js +2 -10
  1543. package/dist/vite/tempest-csp.js.map +1 -1
  1544. package/dist/vite/tempest-icons.cjs.map +1 -1
  1545. package/dist/vite/tempest-icons.js.map +1 -1
  1546. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1547. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1548. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1549. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1550. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1551. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1552. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1553. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1554. package/dist/vite/tempest-styles.cjs.map +1 -1
  1555. package/dist/vite/tempest-styles.js.map +1 -1
  1556. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1557. package/dist/vite/tempest-vitest.js.map +1 -1
  1558. package/dist/webrtc/link-stats.cjs.map +1 -1
  1559. package/dist/webrtc/link-stats.js.map +1 -1
  1560. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1561. package/dist/webrtc/mesh-quality.js.map +1 -1
  1562. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1563. package/dist/webrtc/opus-sdp.js.map +1 -1
  1564. package/dist/webrtc/peer-link.cjs +1 -1
  1565. package/dist/webrtc/peer-link.cjs.map +1 -1
  1566. package/dist/webrtc/peer-link.js +2 -5
  1567. package/dist/webrtc/peer-link.js.map +1 -1
  1568. package/dist/webrtc/peer-mesh.cjs +1 -1
  1569. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1570. package/dist/webrtc/peer-mesh.js +8 -24
  1571. package/dist/webrtc/peer-mesh.js.map +1 -1
  1572. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1573. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1574. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1575. package/dist/webrtc/use-link-stats.js.map +1 -1
  1576. package/dist/ws/create-web-socket.cjs +1 -1
  1577. package/dist/ws/create-web-socket.cjs.map +1 -1
  1578. package/dist/ws/create-web-socket.js +4 -22
  1579. package/dist/ws/create-web-socket.js.map +1 -1
  1580. package/dist/ws/resilience.cjs.map +1 -1
  1581. package/dist/ws/resilience.js.map +1 -1
  1582. package/dist/ws/use-web-socket.cjs.map +1 -1
  1583. package/dist/ws/use-web-socket.js.map +1 -1
  1584. package/package.json +9 -6
  1585. package/template/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bar-list-model.cjs","names":[],"sources":["../../../src/components/BarList/bar-list-model.ts"],"sourcesContent":["// The arithmetic behind BarList, kept out of the component so the decisions that\n// are easy to get wrong — an empty total, a negative value, what \"100% wide\"\n// means — are testable without rendering anything.\n\nimport { percentOf } from \"@/utils/numbers\";\n\n/** One entry of a {@link BarList}. */\nexport interface BarListItem {\n /** What the row is called. */\n label: string;\n /** The measured amount. */\n value: number;\n /** Override the bar colour. Defaults to the chart series token for its position. */\n color?: string;\n}\n\n/** How the list orders itself before drawing. */\nexport type BarListSort = \"desc\" | \"asc\" | \"none\";\n\n/** One row, with everything the component needs to draw it. */\nexport interface BarListRow extends BarListItem {\n /** Share of the total, 0–100. */\n percentage: number;\n /** Bar width relative to the largest row, 0–100. */\n width: number;\n /** Position in the original palette cycle. */\n index: number;\n}\n\n/** What {@link buildBarListRows} needs to reduce a list into rows. */\nexport interface BuildBarListRowsOptions {\n /** The rows as given. */\n items: readonly BarListItem[];\n /** Ordering to apply. `\"none\"` keeps the caller's order. Default `\"desc\"`. */\n sort?: BarListSort;\n /** Keep at most this many rows. */\n max?: number;\n /** Aggregate what `max` cut into one row with this label. */\n otherLabel?: string;\n}\n\n/**\n * Order, truncate and measure the rows.\n *\n * Two different numbers come out of this, and conflating them is the classic bug\n * in a hand-written bar list:\n *\n * - `percentage` is the row's share of the **total**, which is what the label\n * claims when it reads \"32%\".\n * - `width` is relative to the **largest** row, so the biggest bar fills the\n * track. Scaling width by the total instead leaves every bar short in a list of\n * many small values, and the chart stops being readable exactly when it has the\n * most rows.\n *\n * The total counts positive values only. A negative amount draws no bar (a bar of\n * negative width does not exist) and reports 0%, but its number is still shown —\n * hiding the row would be worse than showing an odd one.\n *\n * @param options - The rows and how to reduce them.\n * @returns The rows to draw, in order.\n */\nexport function buildBarListRows(options: BuildBarListRowsOptions): BarListRow[] {\n const { items, sort = \"desc\", max, otherLabel } = options;\n const usable = items.filter((item) => Number.isFinite(item.value));\n const total = usable.reduce((sum, item) => sum + Math.max(item.value, 0), 0);\n\n const ordered =\n sort === \"none\"\n ? [...usable]\n : [...usable].sort((a, b) => (sort === \"asc\" ? a.value - b.value : b.value - a.value));\n\n const limit = max !== undefined && max > 0 ? max : ordered.length;\n const kept = ordered.slice(0, limit);\n const cut = otherLabel === undefined ? [] : ordered.slice(limit);\n\n const shown: BarListItem[] =\n otherLabel !== undefined && cut.length > 1\n ? [\n ...kept,\n { label: otherLabel, value: cut.reduce((sum, item) => sum + item.value, 0) },\n ]\n : [...kept, ...cut];\n\n const largest = shown.reduce((high, item) => Math.max(high, item.value), 0);\n\n return shown.map((item, index) => ({\n ...item,\n index,\n percentage: percentOf(Math.max(item.value, 0), total),\n width: percentOf(Math.max(item.value, 0), largest),\n }));\n}\n"],"mappings":"2CA6DA,SAAgB,EAAiB,EAAgD,CAC7E,GAAM,CAAE,QAAO,OAAO,OAAQ,MAAK,cAAe,EAC5C,EAAS,EAAM,OAAQ,GAAS,OAAO,SAAS,EAAK,KAAK,CAAC,EAC3D,EAAQ,EAAO,QAAQ,EAAK,IAAS,EAAM,KAAK,IAAI,EAAK,MAAO,CAAC,EAAG,CAAC,EAErE,EACF,IAAS,OACH,CAAC,GAAG,CAAM,EACV,CAAC,GAAG,CAAM,CAAC,CAAC,MAAM,EAAG,IAAO,IAAS,MAAQ,EAAE,MAAQ,EAAE,MAAQ,EAAE,MAAQ,EAAE,KAAM,EAEvF,EAAQ,IAAQ,IAAA,IAAa,EAAM,EAAI,EAAM,EAAQ,OACrD,EAAO,EAAQ,MAAM,EAAG,CAAK,EAC7B,EAAM,IAAe,IAAA,GAAY,CAAC,EAAI,EAAQ,MAAM,CAAK,EAEzD,EACF,IAAe,IAAA,IAAa,EAAI,OAAS,EACnC,CACI,GAAG,EACH,CAAE,MAAO,EAAY,MAAO,EAAI,QAAQ,EAAK,IAAS,EAAM,EAAK,MAAO,CAAC,CAAE,CAC/E,EACA,CAAC,GAAG,EAAM,GAAG,CAAG,EAEpB,EAAU,EAAM,QAAQ,EAAM,IAAS,KAAK,IAAI,EAAM,EAAK,KAAK,EAAG,CAAC,EAE1E,OAAO,EAAM,KAAK,EAAM,KAAW,CAC/B,GAAG,EACH,QACA,WAAY,EAAA,UAAU,KAAK,IAAI,EAAK,MAAO,CAAC,EAAG,CAAK,EACpD,MAAO,EAAA,UAAU,KAAK,IAAI,EAAK,MAAO,CAAC,EAAG,CAAO,CACrD,EAAE,CACN"}
1
+ {"version":3,"file":"bar-list-model.cjs","names":["percentOf","require_numbers","buildBarListRows","options","usable","items","item","total","sum","ordered","sort","a","b","limit","max","kept","cut","otherLabel","shown","largest","high"],"sources":["../../../src/components/BarList/bar-list-model.ts"],"sourcesContent":["// The arithmetic behind BarList, kept out of the component so the decisions that\n// are easy to get wrong — an empty total, a negative value, what \"100% wide\"\n// means — are testable without rendering anything.\n\nimport { percentOf } from \"@/utils/numbers\";\n\n/** One entry of a {@link BarList}. */\nexport interface BarListItem {\n /** What the row is called. */\n label: string;\n /** The measured amount. */\n value: number;\n /** Override the bar colour. Defaults to the chart series token for its position. */\n color?: string;\n}\n\n/** How the list orders itself before drawing. */\nexport type BarListSort = \"desc\" | \"asc\" | \"none\";\n\n/** One row, with everything the component needs to draw it. */\nexport interface BarListRow extends BarListItem {\n /** Share of the total, 0–100. */\n percentage: number;\n /** Bar width relative to the largest row, 0–100. */\n width: number;\n /** Position in the original palette cycle. */\n index: number;\n}\n\n/** What {@link buildBarListRows} needs to reduce a list into rows. */\nexport interface BuildBarListRowsOptions {\n /** The rows as given. */\n items: readonly BarListItem[];\n /** Ordering to apply. `\"none\"` keeps the caller's order. Default `\"desc\"`. */\n sort?: BarListSort;\n /** Keep at most this many rows. */\n max?: number;\n /** Aggregate what `max` cut into one row with this label. */\n otherLabel?: string;\n}\n\n/**\n * Order, truncate and measure the rows.\n *\n * Two different numbers come out of this, and conflating them is the classic bug\n * in a hand-written bar list:\n *\n * - `percentage` is the row's share of the **total**, which is what the label\n * claims when it reads \"32%\".\n * - `width` is relative to the **largest** row, so the biggest bar fills the\n * track. Scaling width by the total instead leaves every bar short in a list of\n * many small values, and the chart stops being readable exactly when it has the\n * most rows.\n *\n * The total counts positive values only. A negative amount draws no bar (a bar of\n * negative width does not exist) and reports 0%, but its number is still shown —\n * hiding the row would be worse than showing an odd one.\n *\n * @param options - The rows and how to reduce them.\n * @returns The rows to draw, in order.\n */\nexport function buildBarListRows(options: BuildBarListRowsOptions): BarListRow[] {\n const { items, sort = \"desc\", max, otherLabel } = options;\n const usable = items.filter((item) => Number.isFinite(item.value));\n const total = usable.reduce((sum, item) => sum + Math.max(item.value, 0), 0);\n\n const ordered =\n sort === \"none\"\n ? [...usable]\n : [...usable].sort((a, b) => (sort === \"asc\" ? a.value - b.value : b.value - a.value));\n\n const limit = max !== undefined && max > 0 ? max : ordered.length;\n const kept = ordered.slice(0, limit);\n const cut = otherLabel === undefined ? [] : ordered.slice(limit);\n\n const shown: BarListItem[] =\n otherLabel !== undefined && cut.length > 1\n ? [\n ...kept,\n { label: otherLabel, value: cut.reduce((sum, item) => sum + item.value, 0) },\n ]\n : [...kept, ...cut];\n\n const largest = shown.reduce((high, item) => Math.max(high, item.value), 0);\n\n return shown.map((item, index) => ({\n ...item,\n index,\n percentage: percentOf(Math.max(item.value, 0), total),\n width: percentOf(Math.max(item.value, 0), largest),\n }));\n}\n"],"mappings":"A,2CA6DA,SAAgBE,EAAiB,EAAgD,CAC7E,GAAM,CAAE,QAAO,OAAO,OAAQ,MAAK,cAAeC,EAC5CC,EAASC,EAAM,OAAQ,GAAS,OAAO,SAASC,EAAK,KAAK,CAAC,EAC3DC,EAAQH,EAAO,QAAQ,EAAK,IAASI,EAAM,KAAK,IAAIF,EAAK,MAAO,CAAC,EAAG,CAAC,EAErEG,EACFC,IAAS,OACH,CAAC,GAAGN,CAAM,EACV,CAAC,GAAGA,CAAM,CAAC,CAAC,MAAM,EAAG,IAAOM,IAAS,MAAQC,EAAE,MAAQC,EAAE,MAAQA,EAAE,MAAQD,EAAE,KAAM,EAEvFE,EAAQC,IAAQ,IAAA,IAAaA,EAAM,EAAIA,EAAML,EAAQ,OACrDM,EAAON,EAAQ,MAAM,EAAGI,CAAK,EAC7BG,EAAMC,IAAe,IAAA,GAAY,CAAC,EAAIR,EAAQ,MAAMI,CAAK,EAEzDK,EACFD,IAAe,IAAA,IAAaD,EAAI,OAAS,EACnC,CACI,GAAGD,EACH,CAAE,MAAOE,EAAY,MAAOD,EAAI,QAAQ,EAAK,IAASR,EAAMF,EAAK,MAAO,CAAC,CAAE,CAC/E,EACA,CAAC,GAAGS,EAAM,GAAGC,CAAG,EAEpBG,EAAUD,EAAM,QAAQ,EAAM,IAAS,KAAK,IAAIE,EAAMd,EAAK,KAAK,EAAG,CAAC,EAE1E,OAAOY,EAAM,KAAK,EAAM,KAAW,CAC/B,GAAGZ,EACH,QACA,WAAYN,EAAAA,UAAU,KAAK,IAAIM,EAAK,MAAO,CAAC,EAAGC,CAAK,EACpD,MAAOP,EAAAA,UAAU,KAAK,IAAIM,EAAK,MAAO,CAAC,EAAGa,CAAO,CACrD,EAAE,CACN,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"bar-list-model.js","names":[],"sources":["../../../src/components/BarList/bar-list-model.ts"],"sourcesContent":["// The arithmetic behind BarList, kept out of the component so the decisions that\n// are easy to get wrong — an empty total, a negative value, what \"100% wide\"\n// means — are testable without rendering anything.\n\nimport { percentOf } from \"@/utils/numbers\";\n\n/** One entry of a {@link BarList}. */\nexport interface BarListItem {\n /** What the row is called. */\n label: string;\n /** The measured amount. */\n value: number;\n /** Override the bar colour. Defaults to the chart series token for its position. */\n color?: string;\n}\n\n/** How the list orders itself before drawing. */\nexport type BarListSort = \"desc\" | \"asc\" | \"none\";\n\n/** One row, with everything the component needs to draw it. */\nexport interface BarListRow extends BarListItem {\n /** Share of the total, 0–100. */\n percentage: number;\n /** Bar width relative to the largest row, 0–100. */\n width: number;\n /** Position in the original palette cycle. */\n index: number;\n}\n\n/** What {@link buildBarListRows} needs to reduce a list into rows. */\nexport interface BuildBarListRowsOptions {\n /** The rows as given. */\n items: readonly BarListItem[];\n /** Ordering to apply. `\"none\"` keeps the caller's order. Default `\"desc\"`. */\n sort?: BarListSort;\n /** Keep at most this many rows. */\n max?: number;\n /** Aggregate what `max` cut into one row with this label. */\n otherLabel?: string;\n}\n\n/**\n * Order, truncate and measure the rows.\n *\n * Two different numbers come out of this, and conflating them is the classic bug\n * in a hand-written bar list:\n *\n * - `percentage` is the row's share of the **total**, which is what the label\n * claims when it reads \"32%\".\n * - `width` is relative to the **largest** row, so the biggest bar fills the\n * track. Scaling width by the total instead leaves every bar short in a list of\n * many small values, and the chart stops being readable exactly when it has the\n * most rows.\n *\n * The total counts positive values only. A negative amount draws no bar (a bar of\n * negative width does not exist) and reports 0%, but its number is still shown —\n * hiding the row would be worse than showing an odd one.\n *\n * @param options - The rows and how to reduce them.\n * @returns The rows to draw, in order.\n */\nexport function buildBarListRows(options: BuildBarListRowsOptions): BarListRow[] {\n const { items, sort = \"desc\", max, otherLabel } = options;\n const usable = items.filter((item) => Number.isFinite(item.value));\n const total = usable.reduce((sum, item) => sum + Math.max(item.value, 0), 0);\n\n const ordered =\n sort === \"none\"\n ? [...usable]\n : [...usable].sort((a, b) => (sort === \"asc\" ? a.value - b.value : b.value - a.value));\n\n const limit = max !== undefined && max > 0 ? max : ordered.length;\n const kept = ordered.slice(0, limit);\n const cut = otherLabel === undefined ? [] : ordered.slice(limit);\n\n const shown: BarListItem[] =\n otherLabel !== undefined && cut.length > 1\n ? [\n ...kept,\n { label: otherLabel, value: cut.reduce((sum, item) => sum + item.value, 0) },\n ]\n : [...kept, ...cut];\n\n const largest = shown.reduce((high, item) => Math.max(high, item.value), 0);\n\n return shown.map((item, index) => ({\n ...item,\n index,\n percentage: percentOf(Math.max(item.value, 0), total),\n width: percentOf(Math.max(item.value, 0), largest),\n }));\n}\n"],"mappings":";;AA6DA,SAAgB,EAAiB,GAAgD;CAC7E,IAAM,EAAE,UAAO,UAAO,QAAQ,QAAK,kBAAe,GAC5C,IAAS,EAAM,QAAQ,MAAS,OAAO,SAAS,EAAK,KAAK,CAAC,GAC3D,IAAQ,EAAO,QAAQ,GAAK,MAAS,IAAM,KAAK,IAAI,EAAK,OAAO,CAAC,GAAG,CAAC,GAErE,IACF,MAAS,SACH,CAAC,GAAG,CAAM,IACV,CAAC,GAAG,CAAM,CAAC,CAAC,MAAM,GAAG,MAAO,MAAS,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAM,GAEvF,IAAQ,MAAQ,KAAA,KAAa,IAAM,IAAI,IAAM,EAAQ,QACrD,IAAO,EAAQ,MAAM,GAAG,CAAK,GAC7B,IAAM,MAAe,KAAA,IAAY,CAAC,IAAI,EAAQ,MAAM,CAAK,GAEzD,IACF,MAAe,KAAA,KAAa,EAAI,SAAS,IACnC,CACI,GAAG,GACH;EAAE,OAAO;EAAY,OAAO,EAAI,QAAQ,GAAK,MAAS,IAAM,EAAK,OAAO,CAAC;CAAE,CAC/E,IACA,CAAC,GAAG,GAAM,GAAG,CAAG,GAEpB,IAAU,EAAM,QAAQ,GAAM,MAAS,KAAK,IAAI,GAAM,EAAK,KAAK,GAAG,CAAC;CAE1E,OAAO,EAAM,KAAK,GAAM,OAAW;EAC/B,GAAG;EACH;EACA,YAAY,EAAU,KAAK,IAAI,EAAK,OAAO,CAAC,GAAG,CAAK;EACpD,OAAO,EAAU,KAAK,IAAI,EAAK,OAAO,CAAC,GAAG,CAAO;CACrD,EAAE;AACN"}
1
+ {"version":3,"file":"bar-list-model.js","names":["buildBarListRows","options","usable","items","item","total","sum","ordered","sort","a","b","limit","max","kept","cut","otherLabel","shown","largest","high","percentOf"],"sources":["../../../src/components/BarList/bar-list-model.ts"],"sourcesContent":["// The arithmetic behind BarList, kept out of the component so the decisions that\n// are easy to get wrong — an empty total, a negative value, what \"100% wide\"\n// means — are testable without rendering anything.\n\nimport { percentOf } from \"@/utils/numbers\";\n\n/** One entry of a {@link BarList}. */\nexport interface BarListItem {\n /** What the row is called. */\n label: string;\n /** The measured amount. */\n value: number;\n /** Override the bar colour. Defaults to the chart series token for its position. */\n color?: string;\n}\n\n/** How the list orders itself before drawing. */\nexport type BarListSort = \"desc\" | \"asc\" | \"none\";\n\n/** One row, with everything the component needs to draw it. */\nexport interface BarListRow extends BarListItem {\n /** Share of the total, 0–100. */\n percentage: number;\n /** Bar width relative to the largest row, 0–100. */\n width: number;\n /** Position in the original palette cycle. */\n index: number;\n}\n\n/** What {@link buildBarListRows} needs to reduce a list into rows. */\nexport interface BuildBarListRowsOptions {\n /** The rows as given. */\n items: readonly BarListItem[];\n /** Ordering to apply. `\"none\"` keeps the caller's order. Default `\"desc\"`. */\n sort?: BarListSort;\n /** Keep at most this many rows. */\n max?: number;\n /** Aggregate what `max` cut into one row with this label. */\n otherLabel?: string;\n}\n\n/**\n * Order, truncate and measure the rows.\n *\n * Two different numbers come out of this, and conflating them is the classic bug\n * in a hand-written bar list:\n *\n * - `percentage` is the row's share of the **total**, which is what the label\n * claims when it reads \"32%\".\n * - `width` is relative to the **largest** row, so the biggest bar fills the\n * track. Scaling width by the total instead leaves every bar short in a list of\n * many small values, and the chart stops being readable exactly when it has the\n * most rows.\n *\n * The total counts positive values only. A negative amount draws no bar (a bar of\n * negative width does not exist) and reports 0%, but its number is still shown —\n * hiding the row would be worse than showing an odd one.\n *\n * @param options - The rows and how to reduce them.\n * @returns The rows to draw, in order.\n */\nexport function buildBarListRows(options: BuildBarListRowsOptions): BarListRow[] {\n const { items, sort = \"desc\", max, otherLabel } = options;\n const usable = items.filter((item) => Number.isFinite(item.value));\n const total = usable.reduce((sum, item) => sum + Math.max(item.value, 0), 0);\n\n const ordered =\n sort === \"none\"\n ? [...usable]\n : [...usable].sort((a, b) => (sort === \"asc\" ? a.value - b.value : b.value - a.value));\n\n const limit = max !== undefined && max > 0 ? max : ordered.length;\n const kept = ordered.slice(0, limit);\n const cut = otherLabel === undefined ? [] : ordered.slice(limit);\n\n const shown: BarListItem[] =\n otherLabel !== undefined && cut.length > 1\n ? [\n ...kept,\n { label: otherLabel, value: cut.reduce((sum, item) => sum + item.value, 0) },\n ]\n : [...kept, ...cut];\n\n const largest = shown.reduce((high, item) => Math.max(high, item.value), 0);\n\n return shown.map((item, index) => ({\n ...item,\n index,\n percentage: percentOf(Math.max(item.value, 0), total),\n width: percentOf(Math.max(item.value, 0), largest),\n }));\n}\n"],"mappings":";;AA6DA,SAAgBA,EAAiB,GAAgD;CAC7E,IAAM,EAAE,UAAO,UAAO,QAAQ,QAAK,kBAAeC,GAC5CC,IAASC,EAAM,QAAQ,MAAS,OAAO,SAASC,EAAK,KAAK,CAAC,GAC3DC,IAAQH,EAAO,QAAQ,GAAK,MAASI,IAAM,KAAK,IAAIF,EAAK,OAAO,CAAC,GAAG,CAAC,GAErEG,IACFC,MAAS,SACH,CAAC,GAAGN,CAAM,IACV,CAAC,GAAGA,CAAM,CAAC,CAAC,MAAM,GAAG,MAAOM,MAAS,QAAQC,EAAE,QAAQC,EAAE,QAAQA,EAAE,QAAQD,EAAE,KAAM,GAEvFE,IAAQC,MAAQ,KAAA,KAAaA,IAAM,IAAIA,IAAML,EAAQ,QACrDM,IAAON,EAAQ,MAAM,GAAGI,CAAK,GAC7BG,IAAMC,MAAe,KAAA,IAAY,CAAC,IAAIR,EAAQ,MAAMI,CAAK,GAEzDK,IACFD,MAAe,KAAA,KAAaD,EAAI,SAAS,IACnC,CACI,GAAGD,GACH;EAAE,OAAOE;EAAY,OAAOD,EAAI,QAAQ,GAAK,MAASR,IAAMF,EAAK,OAAO,CAAC;CAAE,CAC/E,IACA,CAAC,GAAGS,GAAM,GAAGC,CAAG,GAEpBG,IAAUD,EAAM,QAAQ,GAAM,MAAS,KAAK,IAAIE,GAAMd,EAAK,KAAK,GAAG,CAAC;CAE1E,OAAOY,EAAM,KAAK,GAAM,OAAW;EAC/B,GAAGZ;EACH;EACA,YAAYe,EAAU,KAAK,IAAIf,EAAK,OAAO,CAAC,GAAGC,CAAK;EACpD,OAAOc,EAAU,KAAK,IAAIf,EAAK,OAAO,CAAC,GAAGa,CAAO;CACrD,EAAE;AACN"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScanner.cjs","names":[],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the scan loop is tuned\n * by the caller because the right values depend on the symbology and the device:\n * formats, intervalMs, repeatDelayMs, detector, paused, torch, aspectRatio. The rest\n * are the surfaces to fill when the API is missing (unsupported, footer, locale) and\n * the two outputs (onScan, onError).\n */\nimport { Flashlight, FlashlightOff, ScanLine } from \"lucide-react\";\nimport { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { useBarcodeScanner } from \"@/capture/use-barcode-scanner\";\nimport type { BarcodeDetectorLike, BarcodeFormat, BarcodeScanResult } from \"@/capture/barcode\";\nimport { cn } from \"@/utils/cn\";\n\nimport styles from \"./BarcodeScanner.module.css\";\n\n/** DOM attributes this component redefines. */\ntype OverriddenDomProps = \"children\" | \"onError\";\n\nexport interface BarcodeScannerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n OverriddenDomProps\n> {\n /** Called for every accepted read — repeats of the same value are suppressed. */\n onScan: (result: BarcodeScanResult) => void;\n /** Symbologies to look for. Defaults to QR + EAN-13 + Code 128. */\n formats?: readonly BarcodeFormat[];\n /** Stop looking without releasing the camera — set it while a confirmation is open. */\n paused?: boolean;\n /** A decoder to use instead of the native one, for Safari and Firefox. */\n detector?: BarcodeDetectorLike;\n /** How often a frame is examined, in ms. Default 200. */\n intervalMs?: number;\n /** Ignore the same value again for this long, in ms. Default 2500. */\n repeatDelayMs?: number;\n /** Offer the torch toggle when the camera has a lamp. Default `true`. */\n torch?: boolean;\n /** Viewport aspect ratio, `width / height`. Default `4 / 3`. */\n aspectRatio?: number;\n /** Locale for the labels. Default `\"pt-BR\"`. */\n locale?: \"pt-BR\" | \"en\";\n /** Under the viewport — an instruction, the code just read, a manual-entry link. */\n footer?: ReactNode;\n /**\n * Rendered instead of the camera when there is no decoder.\n *\n * Worth filling in: on iOS and Firefox this is the **only** thing the user sees, so\n * the fallback is usually a plain text field for typing the code.\n */\n unsupported?: ReactNode;\n /** A frame the engine refused to decode. Routine and usually transient. */\n onError?: (error: unknown) => void;\n}\n\nconst STRINGS = {\n \"pt-BR\": {\n viewport: \"Visor da câmera\",\n scanning: \"Procurando código…\",\n paused: \"Leitura pausada\",\n opening: \"Abrindo a câmera…\",\n hint: \"Aponte a câmera para o código.\",\n found: (value: string) => `Código lido: ${value}`,\n torchOn: \"Desligar lanterna\",\n torchOff: \"Ligar lanterna\",\n unsupported: \"Este navegador não decodifica códigos de barras.\",\n retry: \"Tentar de novo\",\n },\n en: {\n viewport: \"Camera viewport\",\n scanning: \"Looking for a code…\",\n paused: \"Scanning paused\",\n opening: \"Opening the camera…\",\n hint: \"Point the camera at the code.\",\n found: (value: string) => `Code read: ${value}`,\n torchOn: \"Turn torch off\",\n torchOff: \"Turn torch on\",\n unsupported: \"This browser cannot decode barcodes.\",\n retry: \"Try again\",\n },\n} as const;\n\n/**\n * Point the camera at a barcode and get its value.\n *\n * The counterpart to {@link QRCode}, which only encodes. Under it are\n * `useBarcodeScanner` (the detect loop and repeat suppression), `useCameraStream` (the\n * stream and its classified errors) and `useTorch`.\n *\n * **Mounting this opens the camera**, so mount it when the user asks to scan rather\n * than on a page that happens to contain a scanner: a permission prompt nobody\n * provoked is the surest way to earn a permanent block, and after that `getUserMedia`\n * rejects without ever prompting again. The usual shape is a button that reveals it.\n *\n * The `unsupported` slot is not a nicety. `BarcodeDetector` is Chromium-only — absent\n * on Firefox, on every browser on iOS, and on Chromium for Windows and Linux — so on a\n * large share of real devices the fallback *is* the feature. Give it a text field, or\n * inject a polyfill through `detector`.\n *\n * The preview itself is `aria-hidden`: a live camera frame has nothing to announce and\n * no audio to caption, so what a screen reader gets is the `role=\"status\"` line, which\n * says whether scanning is running and reads out each accepted code.\n *\n * @example\n * <BarcodeScanner\n * formats={[\"ean_13\"]}\n * onScan={({ rawValue }) => addToCart(rawValue)}\n * footer={<small>Aponte para o código de barras da embalagem.</small>}\n * unsupported={<ManualCodeInput onSubmit={addToCart} />}\n * />\n */\nexport function BarcodeScanner({\n onScan,\n formats,\n paused = false,\n detector,\n intervalMs,\n repeatDelayMs,\n torch = true,\n aspectRatio = 4 / 3,\n locale = \"pt-BR\",\n footer,\n unsupported,\n onError,\n className,\n ...rest\n}: BarcodeScannerProps) {\n const strings = STRINGS[locale];\n const {\n videoRef,\n status,\n error,\n supported,\n scanning,\n result,\n torch: lamp,\n retry,\n } = useBarcodeScanner({\n formats,\n paused,\n detector,\n intervalMs,\n repeatDelayMs,\n onScan,\n onError,\n });\n\n if (!supported) {\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <p className={styles.notice}>{strings.unsupported}</p>\n {unsupported}\n </div>\n );\n }\n\n const message = result\n ? strings.found(result.rawValue)\n : paused\n ? strings.paused\n : scanning\n ? strings.scanning\n : strings.opening;\n\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <div\n className={styles.viewport}\n style={{ aspectRatio: String(aspectRatio) }}\n aria-label={strings.viewport}\n role=\"group\"\n >\n <video\n ref={videoRef}\n className={styles.video}\n muted\n playsInline\n aria-hidden=\"true\"\n />\n\n {status === \"ready\" && (\n <div className={styles.frame} aria-hidden=\"true\">\n <span className={cn(styles.laser, scanning && styles.laserActive)} />\n </div>\n )}\n\n {torch && lamp.supported && (\n <button\n type=\"button\"\n className={styles.torch}\n onClick={() => void lamp.toggle()}\n aria-pressed={lamp.on}\n aria-label={lamp.on ? strings.torchOn : strings.torchOff}\n >\n {lamp.on ? (\n <FlashlightOff size={18} aria-hidden />\n ) : (\n <Flashlight size={18} aria-hidden />\n )}\n </button>\n )}\n\n {error && (\n <div className={styles.overlay} role=\"alert\">\n <p className={styles.overlayText}>{error.message}</p>\n <button type=\"button\" className={styles.retry} onClick={retry}>\n {strings.retry}\n </button>\n </div>\n )}\n </div>\n\n {!error && (\n <p className={styles.status} role=\"status\">\n <ScanLine size={14} aria-hidden className={styles.statusIcon} />\n {message}\n </p>\n )}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n"],"mappings":"gNAsDA,IAAM,EAAU,CACZ,QAAS,CACL,SAAU,kBACV,SAAU,qBACV,OAAQ,kBACR,QAAS,oBACT,KAAM,iCACN,MAAQ,GAAkB,gBAAgB,IAC1C,QAAS,oBACT,SAAU,iBACV,YAAa,mDACb,MAAO,gBACX,EACA,GAAI,CACA,SAAU,kBACV,SAAU,sBACV,OAAQ,kBACR,QAAS,sBACT,KAAM,gCACN,MAAQ,GAAkB,cAAc,IACxC,QAAS,iBACT,SAAU,gBACV,YAAa,uCACb,MAAO,WACX,CACJ,EA+BA,SAAgB,EAAe,CAC3B,SACA,UACA,SAAS,GACT,WACA,aACA,gBACA,QAAQ,GACR,cAAc,EAAI,EAClB,SAAS,QACT,SACA,cACA,UACA,YACA,GAAG,GACiB,CACpB,IAAM,EAAU,EAAQ,GAClB,CACF,WACA,SACA,QACA,YACA,WACA,SACA,MAAO,EACP,SACA,EAAA,kBAAkB,CAClB,UACA,SACA,WACA,aACA,gBACA,SACA,SACJ,CAAC,EAED,GAAI,CAAC,EACD,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,CAAS,EAAG,GAAI,EAAnD,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,OAAS,SAAA,EAAQ,WAAe,CAAA,EACpD,CACA,IAIb,IAAM,EAAU,EACV,EAAQ,MAAM,EAAO,QAAQ,EAC7B,EACE,EAAQ,OACR,EACE,EAAQ,SACR,EAAQ,QAElB,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,CAAS,EAAG,GAAI,EAAnD,SAAA,EACI,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,UAAW,EAAA,QAAO,SAClB,MAAO,CAAE,YAAa,OAAO,CAAW,CAAE,EAC1C,aAAY,EAAQ,SACpB,KAAK,QAJT,SAAA,EAMI,EAAA,EAAA,IAAA,CAAC,QAAD,CACI,IAAK,EACL,UAAW,EAAA,QAAO,MAClB,MAAA,GACA,YAAA,GACA,cAAY,MACf,CAAA,EAEA,IAAW,UACR,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAO,cAAY,OACtC,UAAA,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,GAAY,EAAA,QAAO,WAAW,CAAI,CAAA,CACnE,CAAA,EAGR,GAAS,EAAK,YACX,EAAA,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAW,EAAA,QAAO,MAClB,YAAe,KAAK,EAAK,OAAO,EAChC,eAAc,EAAK,GACnB,aAAY,EAAK,GAAK,EAAQ,QAAU,EAAQ,SAE/C,SAAA,EAAK,IACF,EAAA,EAAA,IAAA,CAAC,EAAA,cAAD,CAAe,KAAM,GAAI,cAAA,EAAa,CAAA,GAEtC,EAAA,EAAA,IAAA,CAAC,EAAA,WAAD,CAAY,KAAM,GAAI,cAAA,EAAa,CAAA,CAEnC,CAAA,EAGX,IACG,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAS,KAAK,QAArC,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,YAAc,SAAA,EAAM,OAAW,CAAA,GACpD,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,UAAW,EAAA,QAAO,MAAO,QAAS,EACnD,SAAA,EAAQ,KACL,CAAA,CACP,GAER,IAEJ,CAAC,IACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,OAAQ,KAAK,SAAlC,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,EAAA,SAAD,CAAU,KAAM,GAAI,cAAA,GAAY,UAAW,EAAA,QAAO,UAAa,CAAA,EAC9D,CACF,IAGN,GAAS,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAS,SAAA,CAAY,CAAA,EAAI,IACzD,GAEb"}
1
+ {"version":3,"file":"BarcodeScanner.cjs","names":["useBarcodeScanner","cn","styles","FlashlightOff","Flashlight","ScanLine","require_cn","require_use_barcode_scanner","require_BarcodeScanner_module","react_jsx_runtime","lucide_react","STRINGS","value","BarcodeScanner","rest","strings","locale","lamp","supported","className","unsupported","message","result","paused","scanning","aspectRatio","videoRef","status","torch","error","retry","footer"],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the scan loop is tuned\n * by the caller because the right values depend on the symbology and the device:\n * formats, intervalMs, repeatDelayMs, detector, paused, torch, aspectRatio. The rest\n * are the surfaces to fill when the API is missing (unsupported, footer, locale) and\n * the two outputs (onScan, onError).\n */\nimport { Flashlight, FlashlightOff, ScanLine } from \"lucide-react\";\nimport { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { useBarcodeScanner } from \"@/capture/use-barcode-scanner\";\nimport type { BarcodeDetectorLike, BarcodeFormat, BarcodeScanResult } from \"@/capture/barcode\";\nimport { cn } from \"@/utils/cn\";\n\nimport styles from \"./BarcodeScanner.module.css\";\n\n/** DOM attributes this component redefines. */\ntype OverriddenDomProps = \"children\" | \"onError\";\n\nexport interface BarcodeScannerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n OverriddenDomProps\n> {\n /** Called for every accepted read — repeats of the same value are suppressed. */\n onScan: (result: BarcodeScanResult) => void;\n /** Symbologies to look for. Defaults to QR + EAN-13 + Code 128. */\n formats?: readonly BarcodeFormat[];\n /** Stop looking without releasing the camera — set it while a confirmation is open. */\n paused?: boolean;\n /** A decoder to use instead of the native one, for Safari and Firefox. */\n detector?: BarcodeDetectorLike;\n /** How often a frame is examined, in ms. Default 200. */\n intervalMs?: number;\n /** Ignore the same value again for this long, in ms. Default 2500. */\n repeatDelayMs?: number;\n /** Offer the torch toggle when the camera has a lamp. Default `true`. */\n torch?: boolean;\n /** Viewport aspect ratio, `width / height`. Default `4 / 3`. */\n aspectRatio?: number;\n /** Locale for the labels. Default `\"pt-BR\"`. */\n locale?: \"pt-BR\" | \"en\";\n /** Under the viewport — an instruction, the code just read, a manual-entry link. */\n footer?: ReactNode;\n /**\n * Rendered instead of the camera when there is no decoder.\n *\n * Worth filling in: on iOS and Firefox this is the **only** thing the user sees, so\n * the fallback is usually a plain text field for typing the code.\n */\n unsupported?: ReactNode;\n /** A frame the engine refused to decode. Routine and usually transient. */\n onError?: (error: unknown) => void;\n}\n\nconst STRINGS = {\n \"pt-BR\": {\n viewport: \"Visor da câmera\",\n scanning: \"Procurando código…\",\n paused: \"Leitura pausada\",\n opening: \"Abrindo a câmera…\",\n hint: \"Aponte a câmera para o código.\",\n found: (value: string) => `Código lido: ${value}`,\n torchOn: \"Desligar lanterna\",\n torchOff: \"Ligar lanterna\",\n unsupported: \"Este navegador não decodifica códigos de barras.\",\n retry: \"Tentar de novo\",\n },\n en: {\n viewport: \"Camera viewport\",\n scanning: \"Looking for a code…\",\n paused: \"Scanning paused\",\n opening: \"Opening the camera…\",\n hint: \"Point the camera at the code.\",\n found: (value: string) => `Code read: ${value}`,\n torchOn: \"Turn torch off\",\n torchOff: \"Turn torch on\",\n unsupported: \"This browser cannot decode barcodes.\",\n retry: \"Try again\",\n },\n} as const;\n\n/**\n * Point the camera at a barcode and get its value.\n *\n * The counterpart to {@link QRCode}, which only encodes. Under it are\n * `useBarcodeScanner` (the detect loop and repeat suppression), `useCameraStream` (the\n * stream and its classified errors) and `useTorch`.\n *\n * **Mounting this opens the camera**, so mount it when the user asks to scan rather\n * than on a page that happens to contain a scanner: a permission prompt nobody\n * provoked is the surest way to earn a permanent block, and after that `getUserMedia`\n * rejects without ever prompting again. The usual shape is a button that reveals it.\n *\n * The `unsupported` slot is not a nicety. `BarcodeDetector` is Chromium-only — absent\n * on Firefox, on every browser on iOS, and on Chromium for Windows and Linux — so on a\n * large share of real devices the fallback *is* the feature. Give it a text field, or\n * inject a polyfill through `detector`.\n *\n * The preview itself is `aria-hidden`: a live camera frame has nothing to announce and\n * no audio to caption, so what a screen reader gets is the `role=\"status\"` line, which\n * says whether scanning is running and reads out each accepted code.\n *\n * @example\n * <BarcodeScanner\n * formats={[\"ean_13\"]}\n * onScan={({ rawValue }) => addToCart(rawValue)}\n * footer={<small>Aponte para o código de barras da embalagem.</small>}\n * unsupported={<ManualCodeInput onSubmit={addToCart} />}\n * />\n */\nexport function BarcodeScanner({\n onScan,\n formats,\n paused = false,\n detector,\n intervalMs,\n repeatDelayMs,\n torch = true,\n aspectRatio = 4 / 3,\n locale = \"pt-BR\",\n footer,\n unsupported,\n onError,\n className,\n ...rest\n}: BarcodeScannerProps) {\n const strings = STRINGS[locale];\n const {\n videoRef,\n status,\n error,\n supported,\n scanning,\n result,\n torch: lamp,\n retry,\n } = useBarcodeScanner({\n formats,\n paused,\n detector,\n intervalMs,\n repeatDelayMs,\n onScan,\n onError,\n });\n\n if (!supported) {\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <p className={styles.notice}>{strings.unsupported}</p>\n {unsupported}\n </div>\n );\n }\n\n const message = result\n ? strings.found(result.rawValue)\n : paused\n ? strings.paused\n : scanning\n ? strings.scanning\n : strings.opening;\n\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <div\n className={styles.viewport}\n style={{ aspectRatio: String(aspectRatio) }}\n aria-label={strings.viewport}\n role=\"group\"\n >\n <video\n ref={videoRef}\n className={styles.video}\n muted\n playsInline\n aria-hidden=\"true\"\n />\n\n {status === \"ready\" && (\n <div className={styles.frame} aria-hidden=\"true\">\n <span className={cn(styles.laser, scanning && styles.laserActive)} />\n </div>\n )}\n\n {torch && lamp.supported && (\n <button\n type=\"button\"\n className={styles.torch}\n onClick={() => void lamp.toggle()}\n aria-pressed={lamp.on}\n aria-label={lamp.on ? strings.torchOn : strings.torchOff}\n >\n {lamp.on ? (\n <FlashlightOff size={18} aria-hidden />\n ) : (\n <Flashlight size={18} aria-hidden />\n )}\n </button>\n )}\n\n {error && (\n <div className={styles.overlay} role=\"alert\">\n <p className={styles.overlayText}>{error.message}</p>\n <button type=\"button\" className={styles.retry} onClick={retry}>\n {strings.retry}\n </button>\n </div>\n )}\n </div>\n\n {!error && (\n <p className={styles.status} role=\"status\">\n <ScanLine size={14} aria-hidden className={styles.statusIcon} />\n {message}\n </p>\n )}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n"],"mappings":"A,gNAsDA,IAAMW,EAAU,CACZ,QAAS,CACL,SAAU,kBACV,SAAU,qBACV,OAAQ,kBACR,QAAS,oBACT,KAAM,iCACN,MAAQ,GAAkB,gBAAgBC,IAC1C,QAAS,oBACT,SAAU,iBACV,YAAa,mDACb,MAAO,gBACX,EACA,GAAI,CACA,SAAU,kBACV,SAAU,sBACV,OAAQ,kBACR,QAAS,sBACT,KAAM,gCACN,MAAQ,GAAkB,cAAcA,IACxC,QAAS,iBACT,SAAU,gBACV,YAAa,uCACb,MAAO,WACX,CACJ,EA+BA,SAAgBC,EAAe,CAC3B,SACA,UACA,SAAS,GACT,WACA,aACA,gBACA,QAAQ,GACR,cAAc,EAAI,EAClB,SAAS,QACT,SACA,cACA,UACA,YACA,GAAGC,GACiB,CACpB,IAAMC,EAAUJ,EAAQK,GAClB,CACF,WACA,SACA,QACA,YACA,WACA,SACA,MAAOC,EACP,SACAjB,EAAAA,kBAAkB,CAClB,UACA,SACA,WACA,aACA,gBACA,SACA,SACJ,CAAC,EAED,GAAI,CAACkB,EACD,OACI,EAAAT,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,QAASiB,CAAS,EAAG,GAAIL,EAAnD,SAAA,EACI,EAAAL,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWP,EAAAA,QAAO,OAAS,SAAAa,EAAQ,WAAe,CAAA,EACpDK,CACA,C,GAIb,IAAMC,EAAUC,EACVP,EAAQ,MAAMO,EAAO,QAAQ,EAC7BC,EACER,EAAQ,OACRS,EACET,EAAQ,SACRA,EAAQ,QAElB,OACI,EAAAN,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,QAASiB,CAAS,EAAG,GAAIL,EAAnD,SAAA,EACI,EAAAL,EAAA,KAAA,CAAC,MAAD,CACI,UAAWP,EAAAA,QAAO,SAClB,MAAO,CAAE,YAAa,OAAOuB,CAAW,CAAE,EAC1C,aAAYV,EAAQ,SACpB,KAAK,QAJT,SAAA,EAMI,EAAAN,EAAA,IAAA,CAAC,QAAD,CACI,IAAKiB,EACL,UAAWxB,EAAAA,QAAO,MAClB,MAAA,GACA,YAAA,GACA,cAAY,MACf,CAAA,EAEAyB,IAAW,UACR,EAAAlB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,MAAO,cAAY,OACtC,UAAA,EAAAO,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,MAAOsB,GAAYtB,EAAAA,QAAO,WAAW,CAAI,CAAA,CACnE,CAAA,EAGR0B,GAASX,EAAK,YACX,EAAAR,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAWP,EAAAA,QAAO,MAClB,YAAe,KAAKe,EAAK,OAAO,EAChC,eAAcA,EAAK,GACnB,aAAYA,EAAK,GAAKF,EAAQ,QAAUA,EAAQ,SAE/C,SAAAE,EAAK,IACF,EAAAR,EAAA,IAAA,CAACN,EAAAA,cAAD,CAAe,KAAM,GAAI,cAAA,EAAa,CAAA,GAEtC,EAAAM,EAAA,IAAA,CAACL,EAAAA,WAAD,CAAY,KAAM,GAAI,cAAA,EAAa,CAAA,CAEnC,CAAA,EAGXyB,IACG,EAAApB,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,QAAS,KAAK,QAArC,SAAA,EACI,EAAAO,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWP,EAAAA,QAAO,YAAc,SAAA2B,EAAM,OAAW,CAAA,GACpD,EAAApB,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,UAAWP,EAAAA,QAAO,MAAO,QAAS4B,EACnD,SAAAf,EAAQ,KACL,CAAA,CACP,C,EAER,C,GAEJ,CAACc,IACE,EAAApB,EAAA,KAAA,CAAC,IAAD,CAAG,UAAWP,EAAAA,QAAO,OAAQ,KAAK,SAAlC,SAAA,EACI,EAAAO,EAAA,IAAA,CAACJ,EAAAA,SAAD,CAAU,KAAM,GAAI,cAAA,GAAY,UAAWH,EAAAA,QAAO,UAAa,CAAA,EAC9DmB,CACF,C,GAGNU,GAAS,EAAAtB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,OAAS,SAAA6B,CAAY,CAAA,EAAI,IACzD,C,EAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScanner.js","names":[],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the scan loop is tuned\n * by the caller because the right values depend on the symbology and the device:\n * formats, intervalMs, repeatDelayMs, detector, paused, torch, aspectRatio. The rest\n * are the surfaces to fill when the API is missing (unsupported, footer, locale) and\n * the two outputs (onScan, onError).\n */\nimport { Flashlight, FlashlightOff, ScanLine } from \"lucide-react\";\nimport { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { useBarcodeScanner } from \"@/capture/use-barcode-scanner\";\nimport type { BarcodeDetectorLike, BarcodeFormat, BarcodeScanResult } from \"@/capture/barcode\";\nimport { cn } from \"@/utils/cn\";\n\nimport styles from \"./BarcodeScanner.module.css\";\n\n/** DOM attributes this component redefines. */\ntype OverriddenDomProps = \"children\" | \"onError\";\n\nexport interface BarcodeScannerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n OverriddenDomProps\n> {\n /** Called for every accepted read — repeats of the same value are suppressed. */\n onScan: (result: BarcodeScanResult) => void;\n /** Symbologies to look for. Defaults to QR + EAN-13 + Code 128. */\n formats?: readonly BarcodeFormat[];\n /** Stop looking without releasing the camera — set it while a confirmation is open. */\n paused?: boolean;\n /** A decoder to use instead of the native one, for Safari and Firefox. */\n detector?: BarcodeDetectorLike;\n /** How often a frame is examined, in ms. Default 200. */\n intervalMs?: number;\n /** Ignore the same value again for this long, in ms. Default 2500. */\n repeatDelayMs?: number;\n /** Offer the torch toggle when the camera has a lamp. Default `true`. */\n torch?: boolean;\n /** Viewport aspect ratio, `width / height`. Default `4 / 3`. */\n aspectRatio?: number;\n /** Locale for the labels. Default `\"pt-BR\"`. */\n locale?: \"pt-BR\" | \"en\";\n /** Under the viewport — an instruction, the code just read, a manual-entry link. */\n footer?: ReactNode;\n /**\n * Rendered instead of the camera when there is no decoder.\n *\n * Worth filling in: on iOS and Firefox this is the **only** thing the user sees, so\n * the fallback is usually a plain text field for typing the code.\n */\n unsupported?: ReactNode;\n /** A frame the engine refused to decode. Routine and usually transient. */\n onError?: (error: unknown) => void;\n}\n\nconst STRINGS = {\n \"pt-BR\": {\n viewport: \"Visor da câmera\",\n scanning: \"Procurando código…\",\n paused: \"Leitura pausada\",\n opening: \"Abrindo a câmera…\",\n hint: \"Aponte a câmera para o código.\",\n found: (value: string) => `Código lido: ${value}`,\n torchOn: \"Desligar lanterna\",\n torchOff: \"Ligar lanterna\",\n unsupported: \"Este navegador não decodifica códigos de barras.\",\n retry: \"Tentar de novo\",\n },\n en: {\n viewport: \"Camera viewport\",\n scanning: \"Looking for a code…\",\n paused: \"Scanning paused\",\n opening: \"Opening the camera…\",\n hint: \"Point the camera at the code.\",\n found: (value: string) => `Code read: ${value}`,\n torchOn: \"Turn torch off\",\n torchOff: \"Turn torch on\",\n unsupported: \"This browser cannot decode barcodes.\",\n retry: \"Try again\",\n },\n} as const;\n\n/**\n * Point the camera at a barcode and get its value.\n *\n * The counterpart to {@link QRCode}, which only encodes. Under it are\n * `useBarcodeScanner` (the detect loop and repeat suppression), `useCameraStream` (the\n * stream and its classified errors) and `useTorch`.\n *\n * **Mounting this opens the camera**, so mount it when the user asks to scan rather\n * than on a page that happens to contain a scanner: a permission prompt nobody\n * provoked is the surest way to earn a permanent block, and after that `getUserMedia`\n * rejects without ever prompting again. The usual shape is a button that reveals it.\n *\n * The `unsupported` slot is not a nicety. `BarcodeDetector` is Chromium-only — absent\n * on Firefox, on every browser on iOS, and on Chromium for Windows and Linux — so on a\n * large share of real devices the fallback *is* the feature. Give it a text field, or\n * inject a polyfill through `detector`.\n *\n * The preview itself is `aria-hidden`: a live camera frame has nothing to announce and\n * no audio to caption, so what a screen reader gets is the `role=\"status\"` line, which\n * says whether scanning is running and reads out each accepted code.\n *\n * @example\n * <BarcodeScanner\n * formats={[\"ean_13\"]}\n * onScan={({ rawValue }) => addToCart(rawValue)}\n * footer={<small>Aponte para o código de barras da embalagem.</small>}\n * unsupported={<ManualCodeInput onSubmit={addToCart} />}\n * />\n */\nexport function BarcodeScanner({\n onScan,\n formats,\n paused = false,\n detector,\n intervalMs,\n repeatDelayMs,\n torch = true,\n aspectRatio = 4 / 3,\n locale = \"pt-BR\",\n footer,\n unsupported,\n onError,\n className,\n ...rest\n}: BarcodeScannerProps) {\n const strings = STRINGS[locale];\n const {\n videoRef,\n status,\n error,\n supported,\n scanning,\n result,\n torch: lamp,\n retry,\n } = useBarcodeScanner({\n formats,\n paused,\n detector,\n intervalMs,\n repeatDelayMs,\n onScan,\n onError,\n });\n\n if (!supported) {\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <p className={styles.notice}>{strings.unsupported}</p>\n {unsupported}\n </div>\n );\n }\n\n const message = result\n ? strings.found(result.rawValue)\n : paused\n ? strings.paused\n : scanning\n ? strings.scanning\n : strings.opening;\n\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <div\n className={styles.viewport}\n style={{ aspectRatio: String(aspectRatio) }}\n aria-label={strings.viewport}\n role=\"group\"\n >\n <video\n ref={videoRef}\n className={styles.video}\n muted\n playsInline\n aria-hidden=\"true\"\n />\n\n {status === \"ready\" && (\n <div className={styles.frame} aria-hidden=\"true\">\n <span className={cn(styles.laser, scanning && styles.laserActive)} />\n </div>\n )}\n\n {torch && lamp.supported && (\n <button\n type=\"button\"\n className={styles.torch}\n onClick={() => void lamp.toggle()}\n aria-pressed={lamp.on}\n aria-label={lamp.on ? strings.torchOn : strings.torchOff}\n >\n {lamp.on ? (\n <FlashlightOff size={18} aria-hidden />\n ) : (\n <Flashlight size={18} aria-hidden />\n )}\n </button>\n )}\n\n {error && (\n <div className={styles.overlay} role=\"alert\">\n <p className={styles.overlayText}>{error.message}</p>\n <button type=\"button\" className={styles.retry} onClick={retry}>\n {strings.retry}\n </button>\n </div>\n )}\n </div>\n\n {!error && (\n <p className={styles.status} role=\"status\">\n <ScanLine size={14} aria-hidden className={styles.statusIcon} />\n {message}\n </p>\n )}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAsDA,IAAM,IAAU;CACZ,SAAS;EACL,UAAU;EACV,UAAU;EACV,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ,MAAkB,gBAAgB;EAC1C,SAAS;EACT,UAAU;EACV,aAAa;EACb,OAAO;CACX;CACA,IAAI;EACA,UAAU;EACV,UAAU;EACV,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ,MAAkB,cAAc;EACxC,SAAS;EACT,UAAU;EACV,aAAa;EACb,OAAO;CACX;AACJ;AA+BA,SAAgB,EAAe,EAC3B,WACA,YACA,YAAS,IACT,aACA,eACA,kBACA,WAAQ,IACR,iBAAc,IAAI,GAClB,YAAS,SACT,WACA,gBACA,YACA,cACA,GAAG,KACiB;CACpB,IAAM,IAAU,EAAQ,IAClB,EACF,aACA,WACA,UACA,cACA,aACA,WACA,OAAO,GACP,aACA,EAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,CAAC;CAED,IAAI,CAAC,GACD,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,SAAS,CAAS;EAAG,GAAI;EAAnD,UAAA,CACI,kBAAC,KAAD;GAAG,WAAW,EAAO;GAAS,UAAA,EAAQ;EAAe,CAAA,GACpD,CACA;;CAIb,IAAM,IAAU,IACV,EAAQ,MAAM,EAAO,QAAQ,IAC7B,IACE,EAAQ,SACR,IACE,EAAQ,WACR,EAAQ;CAElB,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,SAAS,CAAS;EAAG,GAAI;EAAnD,UAAA;GACI,kBAAC,OAAD;IACI,WAAW,EAAO;IAClB,OAAO,EAAE,aAAa,OAAO,CAAW,EAAE;IAC1C,cAAY,EAAQ;IACpB,MAAK;IAJT,UAAA;KAMI,kBAAC,SAAD;MACI,KAAK;MACL,WAAW,EAAO;MAClB,OAAA;MACA,aAAA;MACA,eAAY;KACf,CAAA;KAEA,MAAW,WACR,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAO,eAAY;MACtC,UAAA,kBAAC,QAAD,EAAM,WAAW,EAAG,EAAO,OAAO,KAAY,EAAO,WAAW,EAAI,CAAA;KACnE,CAAA;KAGR,KAAS,EAAK,aACX,kBAAC,UAAD;MACI,MAAK;MACL,WAAW,EAAO;MAClB,eAAe,KAAK,EAAK,OAAO;MAChC,gBAAc,EAAK;MACnB,cAAY,EAAK,KAAK,EAAQ,UAAU,EAAQ;MAE/C,UAAA,EAAK,KACF,kBAAC,GAAD;OAAe,MAAM;OAAI,eAAA;MAAa,CAAA,IAEtC,kBAAC,GAAD;OAAY,MAAM;OAAI,eAAA;MAAa,CAAA;KAEnC,CAAA;KAGX,KACG,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAS,MAAK;MAArC,UAAA,CACI,kBAAC,KAAD;OAAG,WAAW,EAAO;OAAc,UAAA,EAAM;MAAW,CAAA,GACpD,kBAAC,UAAD;OAAQ,MAAK;OAAS,WAAW,EAAO;OAAO,SAAS;OACnD,UAAA,EAAQ;MACL,CAAA,CACP;;IAER;;GAEJ,CAAC,KACE,kBAAC,KAAD;IAAG,WAAW,EAAO;IAAQ,MAAK;IAAlC,UAAA,CACI,kBAAC,GAAD;KAAU,MAAM;KAAI,eAAA;KAAY,WAAW,EAAO;IAAa,CAAA,GAC9D,CACF;;GAGN,IAAS,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAS,UAAA;GAAY,CAAA,IAAI;EACzD;;AAEb"}
1
+ {"version":3,"file":"BarcodeScanner.js","names":["styles","BarcodeScanner_module_default","STRINGS","value","BarcodeScanner","rest","strings","locale","lamp","useBarcodeScanner","supported","cn","className","unsupported","message","result","paused","scanning","aspectRatio","videoRef","status","torch","FlashlightOff","Flashlight","error","retry","ScanLine","footer"],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the scan loop is tuned\n * by the caller because the right values depend on the symbology and the device:\n * formats, intervalMs, repeatDelayMs, detector, paused, torch, aspectRatio. The rest\n * are the surfaces to fill when the API is missing (unsupported, footer, locale) and\n * the two outputs (onScan, onError).\n */\nimport { Flashlight, FlashlightOff, ScanLine } from \"lucide-react\";\nimport { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { useBarcodeScanner } from \"@/capture/use-barcode-scanner\";\nimport type { BarcodeDetectorLike, BarcodeFormat, BarcodeScanResult } from \"@/capture/barcode\";\nimport { cn } from \"@/utils/cn\";\n\nimport styles from \"./BarcodeScanner.module.css\";\n\n/** DOM attributes this component redefines. */\ntype OverriddenDomProps = \"children\" | \"onError\";\n\nexport interface BarcodeScannerProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n OverriddenDomProps\n> {\n /** Called for every accepted read — repeats of the same value are suppressed. */\n onScan: (result: BarcodeScanResult) => void;\n /** Symbologies to look for. Defaults to QR + EAN-13 + Code 128. */\n formats?: readonly BarcodeFormat[];\n /** Stop looking without releasing the camera — set it while a confirmation is open. */\n paused?: boolean;\n /** A decoder to use instead of the native one, for Safari and Firefox. */\n detector?: BarcodeDetectorLike;\n /** How often a frame is examined, in ms. Default 200. */\n intervalMs?: number;\n /** Ignore the same value again for this long, in ms. Default 2500. */\n repeatDelayMs?: number;\n /** Offer the torch toggle when the camera has a lamp. Default `true`. */\n torch?: boolean;\n /** Viewport aspect ratio, `width / height`. Default `4 / 3`. */\n aspectRatio?: number;\n /** Locale for the labels. Default `\"pt-BR\"`. */\n locale?: \"pt-BR\" | \"en\";\n /** Under the viewport — an instruction, the code just read, a manual-entry link. */\n footer?: ReactNode;\n /**\n * Rendered instead of the camera when there is no decoder.\n *\n * Worth filling in: on iOS and Firefox this is the **only** thing the user sees, so\n * the fallback is usually a plain text field for typing the code.\n */\n unsupported?: ReactNode;\n /** A frame the engine refused to decode. Routine and usually transient. */\n onError?: (error: unknown) => void;\n}\n\nconst STRINGS = {\n \"pt-BR\": {\n viewport: \"Visor da câmera\",\n scanning: \"Procurando código…\",\n paused: \"Leitura pausada\",\n opening: \"Abrindo a câmera…\",\n hint: \"Aponte a câmera para o código.\",\n found: (value: string) => `Código lido: ${value}`,\n torchOn: \"Desligar lanterna\",\n torchOff: \"Ligar lanterna\",\n unsupported: \"Este navegador não decodifica códigos de barras.\",\n retry: \"Tentar de novo\",\n },\n en: {\n viewport: \"Camera viewport\",\n scanning: \"Looking for a code…\",\n paused: \"Scanning paused\",\n opening: \"Opening the camera…\",\n hint: \"Point the camera at the code.\",\n found: (value: string) => `Code read: ${value}`,\n torchOn: \"Turn torch off\",\n torchOff: \"Turn torch on\",\n unsupported: \"This browser cannot decode barcodes.\",\n retry: \"Try again\",\n },\n} as const;\n\n/**\n * Point the camera at a barcode and get its value.\n *\n * The counterpart to {@link QRCode}, which only encodes. Under it are\n * `useBarcodeScanner` (the detect loop and repeat suppression), `useCameraStream` (the\n * stream and its classified errors) and `useTorch`.\n *\n * **Mounting this opens the camera**, so mount it when the user asks to scan rather\n * than on a page that happens to contain a scanner: a permission prompt nobody\n * provoked is the surest way to earn a permanent block, and after that `getUserMedia`\n * rejects without ever prompting again. The usual shape is a button that reveals it.\n *\n * The `unsupported` slot is not a nicety. `BarcodeDetector` is Chromium-only — absent\n * on Firefox, on every browser on iOS, and on Chromium for Windows and Linux — so on a\n * large share of real devices the fallback *is* the feature. Give it a text field, or\n * inject a polyfill through `detector`.\n *\n * The preview itself is `aria-hidden`: a live camera frame has nothing to announce and\n * no audio to caption, so what a screen reader gets is the `role=\"status\"` line, which\n * says whether scanning is running and reads out each accepted code.\n *\n * @example\n * <BarcodeScanner\n * formats={[\"ean_13\"]}\n * onScan={({ rawValue }) => addToCart(rawValue)}\n * footer={<small>Aponte para o código de barras da embalagem.</small>}\n * unsupported={<ManualCodeInput onSubmit={addToCart} />}\n * />\n */\nexport function BarcodeScanner({\n onScan,\n formats,\n paused = false,\n detector,\n intervalMs,\n repeatDelayMs,\n torch = true,\n aspectRatio = 4 / 3,\n locale = \"pt-BR\",\n footer,\n unsupported,\n onError,\n className,\n ...rest\n}: BarcodeScannerProps) {\n const strings = STRINGS[locale];\n const {\n videoRef,\n status,\n error,\n supported,\n scanning,\n result,\n torch: lamp,\n retry,\n } = useBarcodeScanner({\n formats,\n paused,\n detector,\n intervalMs,\n repeatDelayMs,\n onScan,\n onError,\n });\n\n if (!supported) {\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <p className={styles.notice}>{strings.unsupported}</p>\n {unsupported}\n </div>\n );\n }\n\n const message = result\n ? strings.found(result.rawValue)\n : paused\n ? strings.paused\n : scanning\n ? strings.scanning\n : strings.opening;\n\n return (\n <div className={cn(styles.scanner, className)} {...rest}>\n <div\n className={styles.viewport}\n style={{ aspectRatio: String(aspectRatio) }}\n aria-label={strings.viewport}\n role=\"group\"\n >\n <video\n ref={videoRef}\n className={styles.video}\n muted\n playsInline\n aria-hidden=\"true\"\n />\n\n {status === \"ready\" && (\n <div className={styles.frame} aria-hidden=\"true\">\n <span className={cn(styles.laser, scanning && styles.laserActive)} />\n </div>\n )}\n\n {torch && lamp.supported && (\n <button\n type=\"button\"\n className={styles.torch}\n onClick={() => void lamp.toggle()}\n aria-pressed={lamp.on}\n aria-label={lamp.on ? strings.torchOn : strings.torchOff}\n >\n {lamp.on ? (\n <FlashlightOff size={18} aria-hidden />\n ) : (\n <Flashlight size={18} aria-hidden />\n )}\n </button>\n )}\n\n {error && (\n <div className={styles.overlay} role=\"alert\">\n <p className={styles.overlayText}>{error.message}</p>\n <button type=\"button\" className={styles.retry} onClick={retry}>\n {strings.retry}\n </button>\n </div>\n )}\n </div>\n\n {!error && (\n <p className={styles.status} role=\"status\">\n <ScanLine size={14} aria-hidden className={styles.statusIcon} />\n {message}\n </p>\n )}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAsDA,IAAME,IAAU;CACZ,SAAS;EACL,UAAU;EACV,UAAU;EACV,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ,MAAkB,gBAAgBC;EAC1C,SAAS;EACT,UAAU;EACV,aAAa;EACb,OAAO;CACX;CACA,IAAI;EACA,UAAU;EACV,UAAU;EACV,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ,MAAkB,cAAcA;EACxC,SAAS;EACT,UAAU;EACV,aAAa;EACb,OAAO;CACX;AACJ;AA+BA,SAAgBC,EAAe,EAC3B,WACA,YACA,YAAS,IACT,aACA,eACA,kBACA,WAAQ,IACR,iBAAc,IAAI,GAClB,YAAS,SACT,WACA,gBACA,YACA,cACA,GAAGC,KACiB;CACpB,IAAMC,IAAUJ,EAAQK,IAClB,EACF,aACA,WACA,UACA,cACA,aACA,WACA,OAAOC,GACP,aACAC,EAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,CAAC;CAED,IAAI,CAACC,GACD,OACI,kBAAC,OAAD;EAAK,WAAWC,EAAGX,EAAO,SAASY,CAAS;EAAG,GAAIP;EAAnD,UAAA,CACI,kBAAC,KAAD;GAAG,WAAWL,EAAO;GAAS,UAAAM,EAAQ;EAAe,CAAA,GACpDO,CACA;;CAIb,IAAMC,IAAUC,IACVT,EAAQ,MAAMS,EAAO,QAAQ,IAC7BC,IACEV,EAAQ,SACRW,IACEX,EAAQ,WACRA,EAAQ;CAElB,OACI,kBAAC,OAAD;EAAK,WAAWK,EAAGX,EAAO,SAASY,CAAS;EAAG,GAAIP;EAAnD,UAAA;GACI,kBAAC,OAAD;IACI,WAAWL,EAAO;IAClB,OAAO,EAAE,aAAa,OAAOkB,CAAW,EAAE;IAC1C,cAAYZ,EAAQ;IACpB,MAAK;IAJT,UAAA;KAMI,kBAAC,SAAD;MACI,KAAKa;MACL,WAAWnB,EAAO;MAClB,OAAA;MACA,aAAA;MACA,eAAY;KACf,CAAA;KAEAoB,MAAW,WACR,kBAAC,OAAD;MAAK,WAAWpB,EAAO;MAAO,eAAY;MACtC,UAAA,kBAAC,QAAD,EAAM,WAAWW,EAAGX,EAAO,OAAOiB,KAAYjB,EAAO,WAAW,EAAI,CAAA;KACnE,CAAA;KAGRqB,KAASb,EAAK,aACX,kBAAC,UAAD;MACI,MAAK;MACL,WAAWR,EAAO;MAClB,eAAe,KAAKQ,EAAK,OAAO;MAChC,gBAAcA,EAAK;MACnB,cAAYA,EAAK,KAAKF,EAAQ,UAAUA,EAAQ;MAE/C,UAAAE,EAAK,KACF,kBAACc,GAAD;OAAe,MAAM;OAAI,eAAA;MAAa,CAAA,IAEtC,kBAACC,GAAD;OAAY,MAAM;OAAI,eAAA;MAAa,CAAA;KAEnC,CAAA;KAGXC,KACG,kBAAC,OAAD;MAAK,WAAWxB,EAAO;MAAS,MAAK;MAArC,UAAA,CACI,kBAAC,KAAD;OAAG,WAAWA,EAAO;OAAc,UAAAwB,EAAM;MAAW,CAAA,GACpD,kBAAC,UAAD;OAAQ,MAAK;OAAS,WAAWxB,EAAO;OAAO,SAASyB;OACnD,UAAAnB,EAAQ;MACL,CAAA,CACP;;IAER;;GAEJ,CAACkB,KACE,kBAAC,KAAD;IAAG,WAAWxB,EAAO;IAAQ,MAAK;IAAlC,UAAA,CACI,kBAAC0B,GAAD;KAAU,MAAM;KAAI,eAAA;KAAY,WAAW1B,EAAO;IAAa,CAAA,GAC9Dc,CACF;;GAGNa,IAAS,kBAAC,OAAD;IAAK,WAAW3B,EAAO;IAAS,UAAA2B;GAAY,CAAA,IAAI;EACzD;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScanner.module.cjs","names":[],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.module.css"],"sourcesContent":[".scanner {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n min-width: 0;\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n}\n\n/*\n * The viewport is a fixed-ratio box and the video fills it with `object-fit: cover`,\n * because a camera hands back whatever aspect ratio the device felt like: letting the\n * element size itself makes the layout jump the moment the stream arrives, which on a\n * phone pushes the button the user was aiming at off the screen.\n */\n.viewport {\n position: relative;\n overflow: hidden;\n width: 100%;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface-3);\n}\n\n.video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/*\n * Corner brackets: they tell the user where to aim without hiding the frame, which a\n * full border or a dimming mask would. Eight background layers — a horizontal and a\n * vertical bar per corner — because a `linear-gradient` cannot draw an L.\n */\n.frame {\n position: absolute;\n inset: 12%;\n background-image:\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0);\n background-repeat: no-repeat;\n background-size:\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%;\n background-position:\n left top,\n left top,\n right top,\n right top,\n left bottom,\n left bottom,\n right bottom,\n right bottom;\n pointer-events: none;\n}\n\n.laser {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n height: 2px;\n background-color: var(--tempest-primary);\n opacity: 0.35;\n}\n\n.laserActive {\n opacity: 0.9;\n animation: tempest-barcode-sweep 1.6s ease-in-out infinite alternate;\n}\n\n@keyframes tempest-barcode-sweep {\n from {\n top: 0;\n }\n to {\n top: calc(100% - 2px);\n }\n}\n\n/*\n * A sweeping line is the one animation here, and it is the first thing to drop: the\n * indicator that matters is the `role=\"status\"` text, so with reduced motion the line\n * simply sits still at the top of the frame.\n */\n@media (prefers-reduced-motion: reduce) {\n .laserActive {\n animation: none;\n }\n}\n\n.torch {\n position: absolute;\n top: var(--tempest-space-2);\n right: var(--tempest-space-2);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n.torch[aria-pressed=\"true\"] {\n border-color: var(--tempest-warning);\n background-color: var(--tempest-warning-bg);\n color: var(--tempest-warning-fg);\n}\n\n.torch:focus-visible,\n.retry:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .torch {\n transition: none;\n }\n}\n\n/* Touch hit-slop — 44×44 without changing the visual footprint, as `Button` does. */\n@media (pointer: coarse) {\n .torch::after {\n content: \"\";\n position: absolute;\n inset: -8px;\n }\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n background-color: var(--tempest-surface);\n text-align: center;\n}\n\n.overlayText {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n\n.retry {\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font: inherit;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n cursor: pointer;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n margin: 0;\n min-height: 1.25em;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n\n.statusIcon {\n flex: 0 0 auto;\n}\n\n.notice {\n margin: 0;\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n}\n\n.footer {\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BarcodeScanner.module.cjs","names":["scanner","viewport","video","frame","laser","laserActive","tempestBarcodeSweep","torch","retry","overlay","overlayText","status","statusIcon","notice","footer","BarcodeScanner_module_default"],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.module.css"],"sourcesContent":[".scanner {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n min-width: 0;\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n}\n\n/*\n * The viewport is a fixed-ratio box and the video fills it with `object-fit: cover`,\n * because a camera hands back whatever aspect ratio the device felt like: letting the\n * element size itself makes the layout jump the moment the stream arrives, which on a\n * phone pushes the button the user was aiming at off the screen.\n */\n.viewport {\n position: relative;\n overflow: hidden;\n width: 100%;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface-3);\n}\n\n.video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/*\n * Corner brackets: they tell the user where to aim without hiding the frame, which a\n * full border or a dimming mask would. Eight background layers — a horizontal and a\n * vertical bar per corner — because a `linear-gradient` cannot draw an L.\n */\n.frame {\n position: absolute;\n inset: 12%;\n background-image:\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0);\n background-repeat: no-repeat;\n background-size:\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%;\n background-position:\n left top,\n left top,\n right top,\n right top,\n left bottom,\n left bottom,\n right bottom,\n right bottom;\n pointer-events: none;\n}\n\n.laser {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n height: 2px;\n background-color: var(--tempest-primary);\n opacity: 0.35;\n}\n\n.laserActive {\n opacity: 0.9;\n animation: tempest-barcode-sweep 1.6s ease-in-out infinite alternate;\n}\n\n@keyframes tempest-barcode-sweep {\n from {\n top: 0;\n }\n to {\n top: calc(100% - 2px);\n }\n}\n\n/*\n * A sweeping line is the one animation here, and it is the first thing to drop: the\n * indicator that matters is the `role=\"status\"` text, so with reduced motion the line\n * simply sits still at the top of the frame.\n */\n@media (prefers-reduced-motion: reduce) {\n .laserActive {\n animation: none;\n }\n}\n\n.torch {\n position: absolute;\n top: var(--tempest-space-2);\n right: var(--tempest-space-2);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n.torch[aria-pressed=\"true\"] {\n border-color: var(--tempest-warning);\n background-color: var(--tempest-warning-bg);\n color: var(--tempest-warning-fg);\n}\n\n.torch:focus-visible,\n.retry:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .torch {\n transition: none;\n }\n}\n\n/* Touch hit-slop — 44×44 without changing the visual footprint, as `Button` does. */\n@media (pointer: coarse) {\n .torch::after {\n content: \"\";\n position: absolute;\n inset: -8px;\n }\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n background-color: var(--tempest-surface);\n text-align: center;\n}\n\n.overlayText {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n\n.retry {\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font: inherit;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n cursor: pointer;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n margin: 0;\n min-height: 1.25em;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n\n.statusIcon {\n flex: 0 0 auto;\n}\n\n.notice {\n margin: 0;\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n}\n\n.footer {\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScanner.module.js","names":[],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.module.css"],"sourcesContent":[".scanner {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n min-width: 0;\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n}\n\n/*\n * The viewport is a fixed-ratio box and the video fills it with `object-fit: cover`,\n * because a camera hands back whatever aspect ratio the device felt like: letting the\n * element size itself makes the layout jump the moment the stream arrives, which on a\n * phone pushes the button the user was aiming at off the screen.\n */\n.viewport {\n position: relative;\n overflow: hidden;\n width: 100%;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface-3);\n}\n\n.video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/*\n * Corner brackets: they tell the user where to aim without hiding the frame, which a\n * full border or a dimming mask would. Eight background layers — a horizontal and a\n * vertical bar per corner — because a `linear-gradient` cannot draw an L.\n */\n.frame {\n position: absolute;\n inset: 12%;\n background-image:\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0);\n background-repeat: no-repeat;\n background-size:\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%;\n background-position:\n left top,\n left top,\n right top,\n right top,\n left bottom,\n left bottom,\n right bottom,\n right bottom;\n pointer-events: none;\n}\n\n.laser {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n height: 2px;\n background-color: var(--tempest-primary);\n opacity: 0.35;\n}\n\n.laserActive {\n opacity: 0.9;\n animation: tempest-barcode-sweep 1.6s ease-in-out infinite alternate;\n}\n\n@keyframes tempest-barcode-sweep {\n from {\n top: 0;\n }\n to {\n top: calc(100% - 2px);\n }\n}\n\n/*\n * A sweeping line is the one animation here, and it is the first thing to drop: the\n * indicator that matters is the `role=\"status\"` text, so with reduced motion the line\n * simply sits still at the top of the frame.\n */\n@media (prefers-reduced-motion: reduce) {\n .laserActive {\n animation: none;\n }\n}\n\n.torch {\n position: absolute;\n top: var(--tempest-space-2);\n right: var(--tempest-space-2);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n.torch[aria-pressed=\"true\"] {\n border-color: var(--tempest-warning);\n background-color: var(--tempest-warning-bg);\n color: var(--tempest-warning-fg);\n}\n\n.torch:focus-visible,\n.retry:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .torch {\n transition: none;\n }\n}\n\n/* Touch hit-slop — 44×44 without changing the visual footprint, as `Button` does. */\n@media (pointer: coarse) {\n .torch::after {\n content: \"\";\n position: absolute;\n inset: -8px;\n }\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n background-color: var(--tempest-surface);\n text-align: center;\n}\n\n.overlayText {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n\n.retry {\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font: inherit;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n cursor: pointer;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n margin: 0;\n min-height: 1.25em;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n\n.statusIcon {\n flex: 0 0 auto;\n}\n\n.notice {\n margin: 0;\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n}\n\n.footer {\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BarcodeScanner.module.js","names":["scanner","viewport","video","frame","laser","laserActive","tempestBarcodeSweep","torch","retry","overlay","overlayText","status","statusIcon","notice","footer","BarcodeScanner_module_default"],"sources":["../../../src/components/BarcodeScanner/BarcodeScanner.module.css"],"sourcesContent":[".scanner {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n min-width: 0;\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n}\n\n/*\n * The viewport is a fixed-ratio box and the video fills it with `object-fit: cover`,\n * because a camera hands back whatever aspect ratio the device felt like: letting the\n * element size itself makes the layout jump the moment the stream arrives, which on a\n * phone pushes the button the user was aiming at off the screen.\n */\n.viewport {\n position: relative;\n overflow: hidden;\n width: 100%;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface-3);\n}\n\n.video {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/*\n * Corner brackets: they tell the user where to aim without hiding the frame, which a\n * full border or a dimming mask would. Eight background layers — a horizontal and a\n * vertical bar per corner — because a `linear-gradient` cannot draw an L.\n */\n.frame {\n position: absolute;\n inset: 12%;\n background-image:\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0),\n linear-gradient(var(--tempest-primary) 0 0), linear-gradient(var(--tempest-primary) 0 0);\n background-repeat: no-repeat;\n background-size:\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%,\n 22% 3px,\n 3px 22%;\n background-position:\n left top,\n left top,\n right top,\n right top,\n left bottom,\n left bottom,\n right bottom,\n right bottom;\n pointer-events: none;\n}\n\n.laser {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n height: 2px;\n background-color: var(--tempest-primary);\n opacity: 0.35;\n}\n\n.laserActive {\n opacity: 0.9;\n animation: tempest-barcode-sweep 1.6s ease-in-out infinite alternate;\n}\n\n@keyframes tempest-barcode-sweep {\n from {\n top: 0;\n }\n to {\n top: calc(100% - 2px);\n }\n}\n\n/*\n * A sweeping line is the one animation here, and it is the first thing to drop: the\n * indicator that matters is the `role=\"status\"` text, so with reduced motion the line\n * simply sits still at the top of the frame.\n */\n@media (prefers-reduced-motion: reduce) {\n .laserActive {\n animation: none;\n }\n}\n\n.torch {\n position: absolute;\n top: var(--tempest-space-2);\n right: var(--tempest-space-2);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n.torch[aria-pressed=\"true\"] {\n border-color: var(--tempest-warning);\n background-color: var(--tempest-warning-bg);\n color: var(--tempest-warning-fg);\n}\n\n.torch:focus-visible,\n.retry:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .torch {\n transition: none;\n }\n}\n\n/* Touch hit-slop — 44×44 without changing the visual footprint, as `Button` does. */\n@media (pointer: coarse) {\n .torch::after {\n content: \"\";\n position: absolute;\n inset: -8px;\n }\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n background-color: var(--tempest-surface);\n text-align: center;\n}\n\n.overlayText {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n\n.retry {\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font: inherit;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n cursor: pointer;\n}\n\n.status {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n margin: 0;\n min-height: 1.25em;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n\n.statusIcon {\n flex: 0 0 auto;\n}\n\n.notice {\n margin: 0;\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n}\n\n.footer {\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-xs);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomNavigation.cjs","names":[],"sources":["../../../src/components/BottomNavigation/BottomNavigation.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomNavigation.module.css\";\n\nexport interface BottomNavigationItem {\n /** Unique identifier — used as React key and for value matching. */\n key: string;\n /** Visible label. */\n label: ReactNode;\n /** Icon rendered above the label. */\n icon?: ReactNode;\n /** Optional badge content rendered above the icon. */\n badge?: ReactNode;\n /** When true, the item is not selectable. */\n disabled?: boolean;\n}\n\nexport interface BottomNavigationProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n items: BottomNavigationItem[];\n /** Selected key. */\n value: string;\n /** Called with the new selected key on click. */\n onChange: (key: string) => void;\n /** Show label below each icon. Default `true`. */\n showLabels?: boolean;\n}\n\n/**\n * Fixed-bottom mobile tab bar. 3–5 items recommended. Pair with\n * `<Show below=\"md\">` to render only on mobile.\n *\n * @example\n * <Show below=\"md\">\n * <BottomNavigation\n * items={[\n * { key: \"home\", label: \"Início\", icon: <Home /> },\n * { key: \"search\", label: \"Buscar\", icon: <Search /> },\n * { key: \"profile\", label: \"Perfil\", icon: <User /> },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n */\nexport function BottomNavigation({\n items,\n value,\n onChange,\n showLabels = true,\n className,\n ...props\n}: BottomNavigationProps) {\n return (\n <nav className={cn(styles.bar, className)} aria-label=\"Navegação principal\" {...props}>\n {items.map((item) => {\n const active = item.key === value;\n return (\n <button\n key={item.key}\n type=\"button\"\n className={cn(styles.item, active && styles.active)}\n aria-current={active ? \"page\" : undefined}\n disabled={item.disabled}\n onClick={() => onChange(item.key)}\n >\n <span className={styles.iconWrap}>\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n {item.badge !== undefined && (\n <span className={styles.badge}>{item.badge}</span>\n )}\n </span>\n {showLabels && <span className={styles.label}>{item.label}</span>}\n </button>\n );\n })}\n </nav>\n );\n}\n"],"mappings":"oHA4CA,SAAgB,EAAiB,CAC7B,QACA,QACA,WACA,aAAa,GACb,YACA,GAAG,GACmB,CACtB,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,IAAK,CAAS,EAAG,aAAW,sBAAsB,GAAI,EAC3E,SAAA,EAAM,IAAK,GAAS,CACjB,IAAM,EAAS,EAAK,MAAQ,EAC5B,OACI,EAAA,EAAA,KAAA,CAAC,SAAD,CAEI,KAAK,SACL,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,GAAU,EAAA,QAAO,MAAM,EAClD,eAAc,EAAS,OAAS,IAAA,GAChC,SAAU,EAAK,SACf,YAAe,EAAS,EAAK,GAAG,EANpC,SAAA,EAQI,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,SAAxB,SAAA,CACK,EAAK,OAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,SAAA,EAAK,IAAW,CAAA,EAC5D,EAAK,QAAU,IAAA,KACZ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,EAAK,KAAY,CAAA,CAEnD,CACL,CAAA,EAAA,IAAc,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,EAAK,KAAY,CAAA,CAC5D,CAdC,EAAA,EAAK,GAcN,CAEhB,CAAC,CACA,CAAA,CAEb"}
1
+ {"version":3,"file":"BottomNavigation.cjs","names":["cn","styles","require_cn","require_BottomNavigation_module","react_jsx_runtime","BottomNavigation","props","className","items","active","item","value","onChange","showLabels"],"sources":["../../../src/components/BottomNavigation/BottomNavigation.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomNavigation.module.css\";\n\nexport interface BottomNavigationItem {\n /** Unique identifier — used as React key and for value matching. */\n key: string;\n /** Visible label. */\n label: ReactNode;\n /** Icon rendered above the label. */\n icon?: ReactNode;\n /** Optional badge content rendered above the icon. */\n badge?: ReactNode;\n /** When true, the item is not selectable. */\n disabled?: boolean;\n}\n\nexport interface BottomNavigationProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n items: BottomNavigationItem[];\n /** Selected key. */\n value: string;\n /** Called with the new selected key on click. */\n onChange: (key: string) => void;\n /** Show label below each icon. Default `true`. */\n showLabels?: boolean;\n}\n\n/**\n * Fixed-bottom mobile tab bar. 3–5 items recommended. Pair with\n * `<Show below=\"md\">` to render only on mobile.\n *\n * @example\n * <Show below=\"md\">\n * <BottomNavigation\n * items={[\n * { key: \"home\", label: \"Início\", icon: <Home /> },\n * { key: \"search\", label: \"Buscar\", icon: <Search /> },\n * { key: \"profile\", label: \"Perfil\", icon: <User /> },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n */\nexport function BottomNavigation({\n items,\n value,\n onChange,\n showLabels = true,\n className,\n ...props\n}: BottomNavigationProps) {\n return (\n <nav className={cn(styles.bar, className)} aria-label=\"Navegação principal\" {...props}>\n {items.map((item) => {\n const active = item.key === value;\n return (\n <button\n key={item.key}\n type=\"button\"\n className={cn(styles.item, active && styles.active)}\n aria-current={active ? \"page\" : undefined}\n disabled={item.disabled}\n onClick={() => onChange(item.key)}\n >\n <span className={styles.iconWrap}>\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n {item.badge !== undefined && (\n <span className={styles.badge}>{item.badge}</span>\n )}\n </span>\n {showLabels && <span className={styles.label}>{item.label}</span>}\n </button>\n );\n })}\n </nav>\n );\n}\n"],"mappings":"A,oHA4CA,SAAgBK,EAAiB,CAC7B,QACA,QACA,WACA,aAAa,GACb,YACA,GAAGC,GACmB,CACtB,OACI,EAAAF,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,IAAKM,CAAS,EAAG,aAAW,sBAAsB,GAAID,EAC3E,SAAAE,EAAM,IAAK,GAAS,CACjB,IAAMC,EAASC,EAAK,MAAQC,EAC5B,OACI,EAAAP,EAAA,KAAA,CAAC,SAAD,CAEI,KAAK,SACL,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,KAAMQ,GAAUR,EAAAA,QAAO,MAAM,EAClD,eAAcQ,EAAS,OAAS,IAAA,GAChC,SAAUC,EAAK,SACf,YAAeE,EAASF,EAAK,GAAG,EANpC,SAAA,EAQI,EAAAN,EAAA,KAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,SAAxB,SAAA,CACKS,EAAK,OAAQ,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,KAAO,SAAAS,EAAK,IAAW,CAAA,EAC5DA,EAAK,QAAU,IAAA,KACZ,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAS,EAAK,KAAY,CAAA,CAEnD,CACL,CAAA,EAAAG,IAAc,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAS,EAAK,KAAY,CAAA,CAC5D,CAdC,EAAAA,EAAK,GAcN,CAEhB,CAAC,CACA,CAAA,CAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomNavigation.js","names":[],"sources":["../../../src/components/BottomNavigation/BottomNavigation.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomNavigation.module.css\";\n\nexport interface BottomNavigationItem {\n /** Unique identifier — used as React key and for value matching. */\n key: string;\n /** Visible label. */\n label: ReactNode;\n /** Icon rendered above the label. */\n icon?: ReactNode;\n /** Optional badge content rendered above the icon. */\n badge?: ReactNode;\n /** When true, the item is not selectable. */\n disabled?: boolean;\n}\n\nexport interface BottomNavigationProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n items: BottomNavigationItem[];\n /** Selected key. */\n value: string;\n /** Called with the new selected key on click. */\n onChange: (key: string) => void;\n /** Show label below each icon. Default `true`. */\n showLabels?: boolean;\n}\n\n/**\n * Fixed-bottom mobile tab bar. 3–5 items recommended. Pair with\n * `<Show below=\"md\">` to render only on mobile.\n *\n * @example\n * <Show below=\"md\">\n * <BottomNavigation\n * items={[\n * { key: \"home\", label: \"Início\", icon: <Home /> },\n * { key: \"search\", label: \"Buscar\", icon: <Search /> },\n * { key: \"profile\", label: \"Perfil\", icon: <User /> },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n */\nexport function BottomNavigation({\n items,\n value,\n onChange,\n showLabels = true,\n className,\n ...props\n}: BottomNavigationProps) {\n return (\n <nav className={cn(styles.bar, className)} aria-label=\"Navegação principal\" {...props}>\n {items.map((item) => {\n const active = item.key === value;\n return (\n <button\n key={item.key}\n type=\"button\"\n className={cn(styles.item, active && styles.active)}\n aria-current={active ? \"page\" : undefined}\n disabled={item.disabled}\n onClick={() => onChange(item.key)}\n >\n <span className={styles.iconWrap}>\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n {item.badge !== undefined && (\n <span className={styles.badge}>{item.badge}</span>\n )}\n </span>\n {showLabels && <span className={styles.label}>{item.label}</span>}\n </button>\n );\n })}\n </nav>\n );\n}\n"],"mappings":";;;;AA4CA,SAAgB,EAAiB,EAC7B,UACA,UACA,aACA,gBAAa,IACb,cACA,GAAG,KACmB;CACtB,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,KAAK,CAAS;EAAG,cAAW;EAAsB,GAAI;EAC3E,UAAA,EAAM,KAAK,MAAS;GACjB,IAAM,IAAS,EAAK,QAAQ;GAC5B,OACI,kBAAC,UAAD;IAEI,MAAK;IACL,WAAW,EAAG,EAAO,MAAM,KAAU,EAAO,MAAM;IAClD,gBAAc,IAAS,SAAS,KAAA;IAChC,UAAU,EAAK;IACf,eAAe,EAAS,EAAK,GAAG;IANpC,UAAA,CAQI,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAxB,UAAA,CACK,EAAK,QAAQ,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAO,UAAA,EAAK;KAAW,CAAA,GAC5D,EAAK,UAAU,KAAA,KACZ,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAQ,UAAA,EAAK;KAAY,CAAA,CAEnD;IACL,CAAA,GAAA,KAAc,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAQ,UAAA,EAAK;IAAY,CAAA,CAC5D;GAdC,GAAA,EAAK,GAcN;EAEhB,CAAC;CACA,CAAA;AAEb"}
1
+ {"version":3,"file":"BottomNavigation.js","names":["styles","BottomNavigation_module_default","BottomNavigation","props","cn","className","items","active","item","value","onChange","showLabels"],"sources":["../../../src/components/BottomNavigation/BottomNavigation.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomNavigation.module.css\";\n\nexport interface BottomNavigationItem {\n /** Unique identifier — used as React key and for value matching. */\n key: string;\n /** Visible label. */\n label: ReactNode;\n /** Icon rendered above the label. */\n icon?: ReactNode;\n /** Optional badge content rendered above the icon. */\n badge?: ReactNode;\n /** When true, the item is not selectable. */\n disabled?: boolean;\n}\n\nexport interface BottomNavigationProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n items: BottomNavigationItem[];\n /** Selected key. */\n value: string;\n /** Called with the new selected key on click. */\n onChange: (key: string) => void;\n /** Show label below each icon. Default `true`. */\n showLabels?: boolean;\n}\n\n/**\n * Fixed-bottom mobile tab bar. 3–5 items recommended. Pair with\n * `<Show below=\"md\">` to render only on mobile.\n *\n * @example\n * <Show below=\"md\">\n * <BottomNavigation\n * items={[\n * { key: \"home\", label: \"Início\", icon: <Home /> },\n * { key: \"search\", label: \"Buscar\", icon: <Search /> },\n * { key: \"profile\", label: \"Perfil\", icon: <User /> },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n */\nexport function BottomNavigation({\n items,\n value,\n onChange,\n showLabels = true,\n className,\n ...props\n}: BottomNavigationProps) {\n return (\n <nav className={cn(styles.bar, className)} aria-label=\"Navegação principal\" {...props}>\n {items.map((item) => {\n const active = item.key === value;\n return (\n <button\n key={item.key}\n type=\"button\"\n className={cn(styles.item, active && styles.active)}\n aria-current={active ? \"page\" : undefined}\n disabled={item.disabled}\n onClick={() => onChange(item.key)}\n >\n <span className={styles.iconWrap}>\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n {item.badge !== undefined && (\n <span className={styles.badge}>{item.badge}</span>\n )}\n </span>\n {showLabels && <span className={styles.label}>{item.label}</span>}\n </button>\n );\n })}\n </nav>\n );\n}\n"],"mappings":";;;;AA4CA,SAAgBE,EAAiB,EAC7B,UACA,UACA,aACA,gBAAa,IACb,cACA,GAAGC,KACmB;CACtB,OACI,kBAAC,OAAD;EAAK,WAAWC,EAAGJ,EAAO,KAAKK,CAAS;EAAG,cAAW;EAAsB,GAAIF;EAC3E,UAAAG,EAAM,KAAK,MAAS;GACjB,IAAMC,IAASC,EAAK,QAAQC;GAC5B,OACI,kBAAC,UAAD;IAEI,MAAK;IACL,WAAWL,EAAGJ,EAAO,MAAMO,KAAUP,EAAO,MAAM;IAClD,gBAAcO,IAAS,SAAS,KAAA;IAChC,UAAUC,EAAK;IACf,eAAeE,EAASF,EAAK,GAAG;IANpC,UAAA,CAQI,kBAAC,QAAD;KAAM,WAAWR,EAAO;KAAxB,UAAA,CACKQ,EAAK,QAAQ,kBAAC,QAAD;MAAM,WAAWR,EAAO;MAAO,UAAAQ,EAAK;KAAW,CAAA,GAC5DA,EAAK,UAAU,KAAA,KACZ,kBAAC,QAAD;MAAM,WAAWR,EAAO;MAAQ,UAAAQ,EAAK;KAAY,CAAA,CAEnD;IACL,CAAA,GAAAG,KAAc,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAQ,UAAAQ,EAAK;IAAY,CAAA,CAC5D;GAdC,GAAAA,EAAK,GAcN;EAEhB,CAAC;CACA,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomNavigation.module.cjs","names":[],"sources":["../../../src/components/BottomNavigation/BottomNavigation.module.css"],"sourcesContent":[".bar {\n display: flex;\n width: 100%;\n background: var(--tempest-surface);\n border-top: 1px solid var(--tempest-border);\n padding-bottom: env(safe-area-inset-bottom, 0);\n font-family: var(--tempest-font-sans);\n}\n\n.item {\n flex: 1 1 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2px;\n padding: 8px 4px;\n background: none;\n border: 0;\n cursor: pointer;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-2xs);\n transition: color var(--tempest-duration-fast, 120ms) var(--tempest-ease-out, ease-out);\n min-height: 56px;\n}\n\n.item:hover {\n color: var(--tempest-text);\n}\n\n.item.active {\n color: var(--tempest-primary);\n}\n\n.item:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.iconWrap {\n position: relative;\n display: inline-flex;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n font-size: 20px;\n}\n\n.badge {\n position: absolute;\n top: -4px;\n right: -8px;\n min-width: 14px;\n height: 14px;\n padding: 0 4px;\n border-radius: var(--tempest-radius-full);\n background: var(--tempest-danger-solid);\n color: var(--tempest-danger-on-solid);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n font-weight: var(--tempest-weight-semibold);\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BottomNavigation.module.cjs","names":["bar","item","active","iconWrap","icon","badge","label","BottomNavigation_module_default"],"sources":["../../../src/components/BottomNavigation/BottomNavigation.module.css"],"sourcesContent":[".bar {\n display: flex;\n width: 100%;\n background: var(--tempest-surface);\n border-top: 1px solid var(--tempest-border);\n padding-bottom: env(safe-area-inset-bottom, 0);\n font-family: var(--tempest-font-sans);\n}\n\n.item {\n flex: 1 1 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2px;\n padding: 8px 4px;\n background: none;\n border: 0;\n cursor: pointer;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-2xs);\n transition: color var(--tempest-duration-fast, 120ms) var(--tempest-ease-out, ease-out);\n min-height: 56px;\n}\n\n.item:hover {\n color: var(--tempest-text);\n}\n\n.item.active {\n color: var(--tempest-primary);\n}\n\n.item:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.iconWrap {\n position: relative;\n display: inline-flex;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n font-size: 20px;\n}\n\n.badge {\n position: absolute;\n top: -4px;\n right: -8px;\n min-width: 14px;\n height: 14px;\n padding: 0 4px;\n border-radius: var(--tempest-radius-full);\n background: var(--tempest-danger-solid);\n color: var(--tempest-danger-on-solid);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n font-weight: var(--tempest-weight-semibold);\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomNavigation.module.js","names":[],"sources":["../../../src/components/BottomNavigation/BottomNavigation.module.css"],"sourcesContent":[".bar {\n display: flex;\n width: 100%;\n background: var(--tempest-surface);\n border-top: 1px solid var(--tempest-border);\n padding-bottom: env(safe-area-inset-bottom, 0);\n font-family: var(--tempest-font-sans);\n}\n\n.item {\n flex: 1 1 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2px;\n padding: 8px 4px;\n background: none;\n border: 0;\n cursor: pointer;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-2xs);\n transition: color var(--tempest-duration-fast, 120ms) var(--tempest-ease-out, ease-out);\n min-height: 56px;\n}\n\n.item:hover {\n color: var(--tempest-text);\n}\n\n.item.active {\n color: var(--tempest-primary);\n}\n\n.item:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.iconWrap {\n position: relative;\n display: inline-flex;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n font-size: 20px;\n}\n\n.badge {\n position: absolute;\n top: -4px;\n right: -8px;\n min-width: 14px;\n height: 14px;\n padding: 0 4px;\n border-radius: var(--tempest-radius-full);\n background: var(--tempest-danger-solid);\n color: var(--tempest-danger-on-solid);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n font-weight: var(--tempest-weight-semibold);\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BottomNavigation.module.js","names":["bar","item","active","iconWrap","icon","badge","label","BottomNavigation_module_default"],"sources":["../../../src/components/BottomNavigation/BottomNavigation.module.css"],"sourcesContent":[".bar {\n display: flex;\n width: 100%;\n background: var(--tempest-surface);\n border-top: 1px solid var(--tempest-border);\n padding-bottom: env(safe-area-inset-bottom, 0);\n font-family: var(--tempest-font-sans);\n}\n\n.item {\n flex: 1 1 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2px;\n padding: 8px 4px;\n background: none;\n border: 0;\n cursor: pointer;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-2xs);\n transition: color var(--tempest-duration-fast, 120ms) var(--tempest-ease-out, ease-out);\n min-height: 56px;\n}\n\n.item:hover {\n color: var(--tempest-text);\n}\n\n.item.active {\n color: var(--tempest-primary);\n}\n\n.item:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.iconWrap {\n position: relative;\n display: inline-flex;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n font-size: 20px;\n}\n\n.badge {\n position: absolute;\n top: -4px;\n right: -8px;\n min-width: 14px;\n height: 14px;\n padding: 0 4px;\n border-radius: var(--tempest-radius-full);\n background: var(--tempest-danger-solid);\n color: var(--tempest-danger-on-solid);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n font-weight: var(--tempest-weight-semibold);\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.cjs","names":[],"sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomSheet.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport interface BottomSheetProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Controlled open state. */\n open: boolean;\n /** Fires when user dismisses (backdrop click, Esc, swipe). */\n onClose: () => void;\n /** Optional title rendered at the top of the sheet. */\n title?: ReactNode;\n /** Show a drag handle indicator at the top. Default `true`. */\n showHandle?: boolean;\n /** When `true`, clicking the backdrop closes the sheet. Default `true`. */\n dismissOnBackdrop?: boolean;\n /** When `true`, pressing Esc closes the sheet. Default `true`. */\n dismissOnEsc?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Slide-up modal panel — mobile-style sheet anchored to the bottom edge.\n * Uses portal + safe-area padding + scroll lock, and traps keyboard focus in the\n * sheet like `Modal`: focus enters on open, `Tab` cycles inside and returns to\n * the opener on close.\n *\n * @example\n * <BottomSheet open={open} onClose={() => setOpen(false)} title=\"Filters\">\n * <FilterForm />\n * </BottomSheet>\n */\nexport function BottomSheet({\n open,\n onClose,\n title,\n showHandle = true,\n dismissOnBackdrop = true,\n dismissOnEsc = true,\n className,\n children,\n ...props\n}: BottomSheetProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n useFocusTrap(rootRef, open);\n useEscapeLayer(open, dismissOnEsc ? onClose : null);\n\n useEffect(() => {\n if (!open) return;\n const previous = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previous;\n };\n }, [open]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <div ref={rootRef} className={styles.root} role=\"dialog\" aria-modal=\"true\" tabIndex={-1}>\n <div\n className={styles.backdrop}\n onClick={() => dismissOnBackdrop && onClose()}\n aria-hidden=\"true\"\n />\n <div className={cn(styles.sheet, className)} {...props}>\n {showHandle && (\n <button\n type=\"button\"\n className={styles.handle}\n aria-label=\"Arrastar para fechar\"\n onClick={onClose}\n >\n <span className={styles.handleBar} />\n </button>\n )}\n {title && <div className={styles.title}>{title}</div>}\n <div className={styles.body}>{children}</div>\n </div>\n </div>,\n portalHost,\n );\n}\n"],"mappings":"oRAoCA,SAAgB,EAAY,CACxB,OACA,UACA,QACA,aAAa,GACb,oBAAoB,GACpB,eAAe,GACf,YACA,WACA,GAAG,GACc,CACjB,IAAM,GAAA,EAAU,EAAA,OAAA,CAAuB,IAAI,EAC3C,EAAA,aAAa,EAAS,CAAI,EAC1B,EAAA,eAAe,EAAM,EAAe,EAAU,IAAI,GAElD,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,CAAC,EAAM,OACX,IAAM,EAAW,SAAS,KAAK,MAAM,SAErC,MADA,UAAS,KAAK,MAAM,SAAW,aAClB,CACT,SAAS,KAAK,MAAM,SAAW,CACnC,CACJ,EAAG,CAAC,CAAI,CAAC,EAET,IAAM,EAAa,EAAA,cAAc,EAIjC,MAFI,CAAC,GAAQ,CAAC,EAAmB,MAEjC,EAAO,EAAA,aAAA,EACH,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,IAAK,EAAS,UAAW,EAAA,QAAO,KAAM,KAAK,SAAS,aAAW,OAAO,SAAU,GAArF,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,MAAD,CACI,UAAW,EAAA,QAAO,SAClB,YAAe,GAAqB,EAAQ,EAC5C,cAAY,MACf,CAAA,GACD,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,CAAS,EAAG,GAAI,EAAjD,SAAA,CACK,IACG,EAAA,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAW,EAAA,QAAO,OAClB,aAAW,uBACX,QAAS,EAET,UAAA,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,SAAY,CAAA,CAChC,CAAA,EAEX,IAAS,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAW,CAAA,GACpD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAO,UAAc,CAAA,CAC3C,CACJ,CAAA,CAAA,CACL,CAAA,EAAA,CACJ,CACJ"}
1
+ {"version":3,"file":"BottomSheet.cjs","names":["useRef","usePortalHost","createPortal","styles","cn","require_cn","require_escape_layer","require_use_focus_trap","require_BottomSheet_module","require_portal_host","react","react_jsx_runtime","react_dom","BottomSheet","props","rootRef","open","dismissOnEsc","onClose","previous","portalHost","dismissOnBackdrop","className","showHandle","title"],"sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomSheet.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport interface BottomSheetProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Controlled open state. */\n open: boolean;\n /** Fires when user dismisses (backdrop click, Esc, swipe). */\n onClose: () => void;\n /** Optional title rendered at the top of the sheet. */\n title?: ReactNode;\n /** Show a drag handle indicator at the top. Default `true`. */\n showHandle?: boolean;\n /** When `true`, clicking the backdrop closes the sheet. Default `true`. */\n dismissOnBackdrop?: boolean;\n /** When `true`, pressing Esc closes the sheet. Default `true`. */\n dismissOnEsc?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Slide-up modal panel — mobile-style sheet anchored to the bottom edge.\n * Uses portal + safe-area padding + scroll lock, and traps keyboard focus in the\n * sheet like `Modal`: focus enters on open, `Tab` cycles inside and returns to\n * the opener on close.\n *\n * @example\n * <BottomSheet open={open} onClose={() => setOpen(false)} title=\"Filters\">\n * <FilterForm />\n * </BottomSheet>\n */\nexport function BottomSheet({\n open,\n onClose,\n title,\n showHandle = true,\n dismissOnBackdrop = true,\n dismissOnEsc = true,\n className,\n children,\n ...props\n}: BottomSheetProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n useFocusTrap(rootRef, open);\n useEscapeLayer(open, dismissOnEsc ? onClose : null);\n\n useEffect(() => {\n if (!open) return;\n const previous = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previous;\n };\n }, [open]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <div ref={rootRef} className={styles.root} role=\"dialog\" aria-modal=\"true\" tabIndex={-1}>\n <div\n className={styles.backdrop}\n onClick={() => dismissOnBackdrop && onClose()}\n aria-hidden=\"true\"\n />\n <div className={cn(styles.sheet, className)} {...props}>\n {showHandle && (\n <button\n type=\"button\"\n className={styles.handle}\n aria-label=\"Arrastar para fechar\"\n onClick={onClose}\n >\n <span className={styles.handleBar} />\n </button>\n )}\n {title && <div className={styles.title}>{title}</div>}\n <div className={styles.body}>{children}</div>\n </div>\n </div>,\n portalHost,\n );\n}\n"],"mappings":"A,oRAoCA,SAAgBa,EAAY,CACxB,OACA,UACA,QACA,aAAa,GACb,oBAAoB,GACpB,eAAe,GACf,YACA,WACA,GAAGC,GACc,CACjB,IAAMC,GAAA,EAAUf,EAAAA,OAAAA,CAAuB,IAAI,EAC3CO,EAAA,aAAaQ,EAASC,CAAI,EAC1BV,EAAA,eAAeU,EAAMC,EAAeC,EAAU,IAAI,GAElD,EAAAR,EAAA,UAAA,KAAgB,CACZ,GAAI,CAACM,EAAM,OACX,IAAMG,EAAW,SAAS,KAAK,MAAM,SAErC,MADA,UAAS,KAAK,MAAM,SAAW,aAClB,CACT,SAAS,KAAK,MAAM,SAAWA,CACnC,CACJ,EAAG,CAACH,CAAI,CAAC,EAET,IAAMI,EAAanB,EAAAA,cAAc,EAIjC,MAFI,CAACe,GAAQ,CAACI,EAAmB,MAEjC,EAAOlB,EAAAA,aAAAA,EACH,EAAAS,EAAA,KAAA,CAAC,MAAD,CAAK,IAAKI,EAAS,UAAWZ,EAAAA,QAAO,KAAM,KAAK,SAAS,aAAW,OAAO,SAAU,GAArF,SAAA,EACI,EAAAQ,EAAA,IAAA,CAAC,MAAD,CACI,UAAWR,EAAAA,QAAO,SAClB,YAAekB,GAAqBH,EAAQ,EAC5C,cAAY,MACf,CAAA,GACD,EAAAP,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,GAAGD,EAAAA,QAAO,MAAOmB,CAAS,EAAG,GAAIR,EAAjD,SAAA,CACKS,IACG,EAAAZ,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,UAAWR,EAAAA,QAAO,OAClB,aAAW,uBACX,QAASe,EAET,UAAA,EAAAP,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWR,EAAAA,QAAO,SAAY,CAAA,CAChC,CAAA,EAEXqB,IAAS,EAAAb,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWR,EAAAA,QAAO,MAAQ,SAAAqB,CAAW,CAAA,GACpD,EAAAb,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWR,EAAAA,QAAO,KAAO,UAAc,CAAA,CAC3C,CACJ,CAAA,CAAA,CACL,CAAA,EAAAiB,CACJ,CACJ,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomSheet.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport interface BottomSheetProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Controlled open state. */\n open: boolean;\n /** Fires when user dismisses (backdrop click, Esc, swipe). */\n onClose: () => void;\n /** Optional title rendered at the top of the sheet. */\n title?: ReactNode;\n /** Show a drag handle indicator at the top. Default `true`. */\n showHandle?: boolean;\n /** When `true`, clicking the backdrop closes the sheet. Default `true`. */\n dismissOnBackdrop?: boolean;\n /** When `true`, pressing Esc closes the sheet. Default `true`. */\n dismissOnEsc?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Slide-up modal panel — mobile-style sheet anchored to the bottom edge.\n * Uses portal + safe-area padding + scroll lock, and traps keyboard focus in the\n * sheet like `Modal`: focus enters on open, `Tab` cycles inside and returns to\n * the opener on close.\n *\n * @example\n * <BottomSheet open={open} onClose={() => setOpen(false)} title=\"Filters\">\n * <FilterForm />\n * </BottomSheet>\n */\nexport function BottomSheet({\n open,\n onClose,\n title,\n showHandle = true,\n dismissOnBackdrop = true,\n dismissOnEsc = true,\n className,\n children,\n ...props\n}: BottomSheetProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n useFocusTrap(rootRef, open);\n useEscapeLayer(open, dismissOnEsc ? onClose : null);\n\n useEffect(() => {\n if (!open) return;\n const previous = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previous;\n };\n }, [open]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <div ref={rootRef} className={styles.root} role=\"dialog\" aria-modal=\"true\" tabIndex={-1}>\n <div\n className={styles.backdrop}\n onClick={() => dismissOnBackdrop && onClose()}\n aria-hidden=\"true\"\n />\n <div className={cn(styles.sheet, className)} {...props}>\n {showHandle && (\n <button\n type=\"button\"\n className={styles.handle}\n aria-label=\"Arrastar para fechar\"\n onClick={onClose}\n >\n <span className={styles.handleBar} />\n </button>\n )}\n {title && <div className={styles.title}>{title}</div>}\n <div className={styles.body}>{children}</div>\n </div>\n </div>,\n portalHost,\n );\n}\n"],"mappings":";;;;;;;;;AAoCA,SAAgB,EAAY,EACxB,SACA,YACA,UACA,gBAAa,IACb,uBAAoB,IACpB,kBAAe,IACf,cACA,aACA,GAAG,KACc;CACjB,IAAM,IAAU,EAAuB,IAAI;CAI3C,AAHA,EAAa,GAAS,CAAI,GAC1B,EAAe,GAAM,IAAe,IAAU,IAAI,GAElD,QAAgB;EACZ,IAAI,CAAC,GAAM;EACX,IAAM,IAAW,SAAS,KAAK,MAAM;EAErC,OADA,SAAS,KAAK,MAAM,WAAW,gBAClB;GACT,SAAS,KAAK,MAAM,WAAW;EACnC;CACJ,GAAG,CAAC,CAAI,CAAC;CAET,IAAM,IAAa,EAAc;CAIjC,OAFI,CAAC,KAAQ,CAAC,IAAmB,OAE1B,EACH,kBAAC,OAAD;EAAK,KAAK;EAAS,WAAW,EAAO;EAAM,MAAK;EAAS,cAAW;EAAO,UAAU;EAArF,UAAA,CACI,kBAAC,OAAD;GACI,WAAW,EAAO;GAClB,eAAe,KAAqB,EAAQ;GAC5C,eAAY;EACf,CAAA,GACD,kBAAC,OAAD;GAAK,WAAW,EAAG,EAAO,OAAO,CAAS;GAAG,GAAI;GAAjD,UAAA;IACK,KACG,kBAAC,UAAD;KACI,MAAK;KACL,WAAW,EAAO;KAClB,cAAW;KACX,SAAS;KAET,UAAA,kBAAC,QAAD,EAAM,WAAW,EAAO,UAAY,CAAA;IAChC,CAAA;IAEX,KAAS,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAQ,UAAA;IAAW,CAAA;IACpD,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAO;IAAc,CAAA;GAC3C;EACJ,CAAA,CAAA;CACL,CAAA,GAAA,CACJ;AACJ"}
1
+ {"version":3,"file":"BottomSheet.js","names":["styles","BottomSheet_module_default","BottomSheet","props","rootRef","useRef","useFocusTrap","open","useEscapeLayer","dismissOnEsc","onClose","useEffect","previous","portalHost","usePortalHost","createPortal","dismissOnBackdrop","cn","className","showHandle","title"],"sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useEscapeLayer } from \"@/components/Portal/escape-layer\";\nimport { useFocusTrap } from \"@/hooks/use-focus-trap\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./BottomSheet.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport interface BottomSheetProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Controlled open state. */\n open: boolean;\n /** Fires when user dismisses (backdrop click, Esc, swipe). */\n onClose: () => void;\n /** Optional title rendered at the top of the sheet. */\n title?: ReactNode;\n /** Show a drag handle indicator at the top. Default `true`. */\n showHandle?: boolean;\n /** When `true`, clicking the backdrop closes the sheet. Default `true`. */\n dismissOnBackdrop?: boolean;\n /** When `true`, pressing Esc closes the sheet. Default `true`. */\n dismissOnEsc?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Slide-up modal panel — mobile-style sheet anchored to the bottom edge.\n * Uses portal + safe-area padding + scroll lock, and traps keyboard focus in the\n * sheet like `Modal`: focus enters on open, `Tab` cycles inside and returns to\n * the opener on close.\n *\n * @example\n * <BottomSheet open={open} onClose={() => setOpen(false)} title=\"Filters\">\n * <FilterForm />\n * </BottomSheet>\n */\nexport function BottomSheet({\n open,\n onClose,\n title,\n showHandle = true,\n dismissOnBackdrop = true,\n dismissOnEsc = true,\n className,\n children,\n ...props\n}: BottomSheetProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n useFocusTrap(rootRef, open);\n useEscapeLayer(open, dismissOnEsc ? onClose : null);\n\n useEffect(() => {\n if (!open) return;\n const previous = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previous;\n };\n }, [open]);\n\n const portalHost = usePortalHost();\n\n if (!open || !portalHost) return null;\n\n return createPortal(\n <div ref={rootRef} className={styles.root} role=\"dialog\" aria-modal=\"true\" tabIndex={-1}>\n <div\n className={styles.backdrop}\n onClick={() => dismissOnBackdrop && onClose()}\n aria-hidden=\"true\"\n />\n <div className={cn(styles.sheet, className)} {...props}>\n {showHandle && (\n <button\n type=\"button\"\n className={styles.handle}\n aria-label=\"Arrastar para fechar\"\n onClick={onClose}\n >\n <span className={styles.handleBar} />\n </button>\n )}\n {title && <div className={styles.title}>{title}</div>}\n <div className={styles.body}>{children}</div>\n </div>\n </div>,\n portalHost,\n );\n}\n"],"mappings":";;;;;;;;;AAoCA,SAAgBE,EAAY,EACxB,SACA,YACA,UACA,gBAAa,IACb,uBAAoB,IACpB,kBAAe,IACf,cACA,aACA,GAAGC,KACc;CACjB,IAAMC,IAAUC,EAAuB,IAAI;CAI3C,AAHAC,EAAaF,GAASG,CAAI,GAC1BC,EAAeD,GAAME,IAAeC,IAAU,IAAI,GAElDC,QAAgB;EACZ,IAAI,CAACJ,GAAM;EACX,IAAMK,IAAW,SAAS,KAAK,MAAM;EAErC,OADA,SAAS,KAAK,MAAM,WAAW,gBAClB;GACT,SAAS,KAAK,MAAM,WAAWA;EACnC;CACJ,GAAG,CAACL,CAAI,CAAC;CAET,IAAMM,IAAaC,EAAc;CAIjC,OAFI,CAACP,KAAQ,CAACM,IAAmB,OAE1BE,EACH,kBAAC,OAAD;EAAK,KAAKX;EAAS,WAAWJ,EAAO;EAAM,MAAK;EAAS,cAAW;EAAO,UAAU;EAArF,UAAA,CACI,kBAAC,OAAD;GACI,WAAWA,EAAO;GAClB,eAAegB,KAAqBN,EAAQ;GAC5C,eAAY;EACf,CAAA,GACD,kBAAC,OAAD;GAAK,WAAWO,EAAGjB,EAAO,OAAOkB,CAAS;GAAG,GAAIf;GAAjD,UAAA;IACKgB,KACG,kBAAC,UAAD;KACI,MAAK;KACL,WAAWnB,EAAO;KAClB,cAAW;KACX,SAASU;KAET,UAAA,kBAAC,QAAD,EAAM,WAAWV,EAAO,UAAY,CAAA;IAChC,CAAA;IAEXoB,KAAS,kBAAC,OAAD;KAAK,WAAWpB,EAAO;KAAQ,UAAAoB;IAAW,CAAA;IACpD,kBAAC,OAAD;KAAK,WAAWpB,EAAO;KAAO;IAAc,CAAA;GAC3C;EACJ,CAAA,CAAA;CACL,CAAA,GAAAa,CACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.module.cjs","names":[],"sources":["../../../src/components/BottomSheet/BottomSheet.module.css"],"sourcesContent":[".root {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 0.45);\n animation: fadeIn var(--tempest-duration-base, 200ms) var(--tempest-ease-out, ease-out);\n}\n\n.sheet {\n position: relative;\n width: 100%;\n max-width: 720px;\n max-height: 90dvh;\n background: var(--tempest-surface);\n border-top-left-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n border-top-right-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n box-shadow: var(--tempest-shadow-xl, 0 -10px 30px rgb(0 0 0 / 0.25));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding-bottom: env(safe-area-inset-bottom, 0);\n animation: slideUp var(--tempest-duration-base, 240ms) var(--tempest-ease-out, ease-out);\n font-family: var(--tempest-font-sans);\n}\n\n.handle {\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 0;\n padding: var(--tempest-space-2) 0;\n cursor: grab;\n flex: 0 0 auto;\n}\n\n.handleBar {\n display: block;\n width: 36px;\n height: 4px;\n background: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-full);\n}\n\n.title {\n flex: 0 0 auto;\n padding: var(--tempest-space-2) var(--tempest-space-4) var(--tempest-space-3);\n font-size: var(--tempest-text-lg);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n border-bottom: 1px solid var(--tempest-border);\n}\n\n.body {\n flex: 1 1 auto;\n overflow-y: auto;\n padding: var(--tempest-space-4);\n color: var(--tempest-text);\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .sheet {\n animation: none;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BottomSheet.module.cjs","names":["root","backdrop","fadeIn","sheet","slideUp","handle","handleBar","title","body","BottomSheet_module_default"],"sources":["../../../src/components/BottomSheet/BottomSheet.module.css"],"sourcesContent":[".root {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 0.45);\n animation: fadeIn var(--tempest-duration-base, 200ms) var(--tempest-ease-out, ease-out);\n}\n\n.sheet {\n position: relative;\n width: 100%;\n max-width: 720px;\n max-height: 90dvh;\n background: var(--tempest-surface);\n border-top-left-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n border-top-right-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n box-shadow: var(--tempest-shadow-xl, 0 -10px 30px rgb(0 0 0 / 0.25));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding-bottom: env(safe-area-inset-bottom, 0);\n animation: slideUp var(--tempest-duration-base, 240ms) var(--tempest-ease-out, ease-out);\n font-family: var(--tempest-font-sans);\n}\n\n.handle {\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 0;\n padding: var(--tempest-space-2) 0;\n cursor: grab;\n flex: 0 0 auto;\n}\n\n.handleBar {\n display: block;\n width: 36px;\n height: 4px;\n background: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-full);\n}\n\n.title {\n flex: 0 0 auto;\n padding: var(--tempest-space-2) var(--tempest-space-4) var(--tempest-space-3);\n font-size: var(--tempest-text-lg);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n border-bottom: 1px solid var(--tempest-border);\n}\n\n.body {\n flex: 1 1 auto;\n overflow-y: auto;\n padding: var(--tempest-space-4);\n color: var(--tempest-text);\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .sheet {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.module.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheet.module.css"],"sourcesContent":[".root {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 0.45);\n animation: fadeIn var(--tempest-duration-base, 200ms) var(--tempest-ease-out, ease-out);\n}\n\n.sheet {\n position: relative;\n width: 100%;\n max-width: 720px;\n max-height: 90dvh;\n background: var(--tempest-surface);\n border-top-left-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n border-top-right-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n box-shadow: var(--tempest-shadow-xl, 0 -10px 30px rgb(0 0 0 / 0.25));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding-bottom: env(safe-area-inset-bottom, 0);\n animation: slideUp var(--tempest-duration-base, 240ms) var(--tempest-ease-out, ease-out);\n font-family: var(--tempest-font-sans);\n}\n\n.handle {\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 0;\n padding: var(--tempest-space-2) 0;\n cursor: grab;\n flex: 0 0 auto;\n}\n\n.handleBar {\n display: block;\n width: 36px;\n height: 4px;\n background: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-full);\n}\n\n.title {\n flex: 0 0 auto;\n padding: var(--tempest-space-2) var(--tempest-space-4) var(--tempest-space-3);\n font-size: var(--tempest-text-lg);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n border-bottom: 1px solid var(--tempest-border);\n}\n\n.body {\n flex: 1 1 auto;\n overflow-y: auto;\n padding: var(--tempest-space-4);\n color: var(--tempest-text);\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .sheet {\n animation: none;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"BottomSheet.module.js","names":["root","backdrop","fadeIn","sheet","slideUp","handle","handleBar","title","body","BottomSheet_module_default"],"sources":["../../../src/components/BottomSheet/BottomSheet.module.css"],"sourcesContent":[".root {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n background: rgb(0 0 0 / 0.45);\n animation: fadeIn var(--tempest-duration-base, 200ms) var(--tempest-ease-out, ease-out);\n}\n\n.sheet {\n position: relative;\n width: 100%;\n max-width: 720px;\n max-height: 90dvh;\n background: var(--tempest-surface);\n border-top-left-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n border-top-right-radius: var(--tempest-radius-2xl, var(--tempest-radius-lg));\n box-shadow: var(--tempest-shadow-xl, 0 -10px 30px rgb(0 0 0 / 0.25));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding-bottom: env(safe-area-inset-bottom, 0);\n animation: slideUp var(--tempest-duration-base, 240ms) var(--tempest-ease-out, ease-out);\n font-family: var(--tempest-font-sans);\n}\n\n.handle {\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 0;\n padding: var(--tempest-space-2) 0;\n cursor: grab;\n flex: 0 0 auto;\n}\n\n.handleBar {\n display: block;\n width: 36px;\n height: 4px;\n background: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-full);\n}\n\n.title {\n flex: 0 0 auto;\n padding: var(--tempest-space-2) var(--tempest-space-4) var(--tempest-space-3);\n font-size: var(--tempest-text-lg);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n border-bottom: 1px solid var(--tempest-border);\n}\n\n.body {\n flex: 1 1 auto;\n overflow-y: auto;\n padding: var(--tempest-space-4);\n color: var(--tempest-text);\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .sheet {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.cjs","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Breadcrumbs.module.css\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n}\n\n/**\n * Hierarchical navigation breadcrumbs. The last item is rendered as plain\n * text with `aria-current=\"page\"`. Items with neither `href` nor `onClick`\n * also render as text (intermediate but non-clickable).\n */\nexport function Breadcrumbs({ items, separator = \"/\", className }: BreadcrumbsProps) {\n return (\n <nav aria-label=\"breadcrumb\" className={cn(styles.nav, className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const interactive = !isLast && (item.href || item.onClick);\n return (\n <Fragment key={index}>\n <span className={styles.item}>\n {interactive ? (\n <a\n href={item.href}\n onClick={(event) => {\n if (item.onClick) {\n event.preventDefault();\n item.onClick();\n }\n }}\n className={styles.link}\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n className={isLast ? styles.current : undefined}\n >\n {item.label}\n </span>\n )}\n </span>\n {!isLast && (\n <span className={styles.separator} aria-hidden>\n {separator}\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n"],"mappings":"kIAsBA,SAAgB,EAAY,CAAE,QAAO,YAAY,IAAK,aAA+B,CACjF,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,aAAW,aAAa,UAAW,EAAA,GAAG,EAAA,QAAO,IAAK,CAAS,EAC3D,SAAA,EAAM,KAAK,EAAM,IAAU,CACxB,IAAM,EAAS,IAAU,EAAM,OAAS,EAClC,EAAc,CAAC,IAAW,EAAK,MAAQ,EAAK,SAClD,OACI,EAAA,EAAA,KAAA,CAAC,EAAA,SAAD,CAAA,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KACnB,SAAA,GACG,EAAA,EAAA,IAAA,CAAC,IAAD,CACI,KAAM,EAAK,KACX,QAAU,GAAU,CACZ,EAAK,UACL,EAAM,eAAe,EACrB,EAAK,QAAQ,EAErB,EACA,UAAW,EAAA,QAAO,KAEjB,SAAA,EAAK,KACP,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,eAAc,EAAS,OAAS,IAAA,GAChC,UAAW,EAAS,EAAA,QAAO,QAAU,IAAA,GAEpC,SAAA,EAAK,KACJ,CAAA,CAER,CAAA,EACL,CAAC,IACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAW,cAAA,GAC9B,SAAA,CACC,CAAA,CAEJ,CAAA,EA7BK,CA6BL,CAElB,CAAC,CACA,CAAA,CAEb"}
1
+ {"version":3,"file":"Breadcrumbs.cjs","names":["cn","styles","Fragment","require_cn","require_Breadcrumbs_module","react","react_jsx_runtime","Breadcrumbs","className","items","isLast","index","interactive","item","event","separator"],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Breadcrumbs.module.css\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n}\n\n/**\n * Hierarchical navigation breadcrumbs. The last item is rendered as plain\n * text with `aria-current=\"page\"`. Items with neither `href` nor `onClick`\n * also render as text (intermediate but non-clickable).\n */\nexport function Breadcrumbs({ items, separator = \"/\", className }: BreadcrumbsProps) {\n return (\n <nav aria-label=\"breadcrumb\" className={cn(styles.nav, className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const interactive = !isLast && (item.href || item.onClick);\n return (\n <Fragment key={index}>\n <span className={styles.item}>\n {interactive ? (\n <a\n href={item.href}\n onClick={(event) => {\n if (item.onClick) {\n event.preventDefault();\n item.onClick();\n }\n }}\n className={styles.link}\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n className={isLast ? styles.current : undefined}\n >\n {item.label}\n </span>\n )}\n </span>\n {!isLast && (\n <span className={styles.separator} aria-hidden>\n {separator}\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n"],"mappings":"A,kIAsBA,SAAgBO,EAAY,CAAE,QAAO,YAAY,IAAK,aAA+B,CACjF,OACI,EAAAD,EAAA,IAAA,CAAC,MAAD,CAAK,aAAW,aAAa,UAAWN,EAAAA,GAAGC,EAAAA,QAAO,IAAKO,CAAS,EAC3D,SAAAC,EAAM,KAAK,EAAM,IAAU,CACxB,IAAMC,EAASC,IAAUF,EAAM,OAAS,EAClCG,EAAc,CAACF,IAAWG,EAAK,MAAQA,EAAK,SAClD,OACI,EAAAP,EAAA,KAAA,CAACJ,EAAAA,SAAD,CAAA,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWL,EAAAA,QAAO,KACnB,SAAAW,GACG,EAAAN,EAAA,IAAA,CAAC,IAAD,CACI,KAAMO,EAAK,KACX,QAAU,GAAU,CACZA,EAAK,UACLC,EAAM,eAAe,EACrBD,EAAK,QAAQ,EAErB,EACA,UAAWZ,EAAAA,QAAO,KAEjB,SAAAY,EAAK,KACP,CAAA,GAEH,EAAAP,EAAA,IAAA,CAAC,OAAD,CACI,eAAcI,EAAS,OAAS,IAAA,GAChC,UAAWA,EAAST,EAAAA,QAAO,QAAU,IAAA,GAEpC,SAAAY,EAAK,KACJ,CAAA,CAER,CAAA,EACL,CAACH,IACE,EAAAJ,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWL,EAAAA,QAAO,UAAW,cAAA,GAC9B,SAAAc,CACC,CAAA,CAEJ,CAAA,EA7BKJ,CA6BL,CAElB,CAAC,CACA,CAAA,CAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Breadcrumbs.module.css\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n}\n\n/**\n * Hierarchical navigation breadcrumbs. The last item is rendered as plain\n * text with `aria-current=\"page\"`. Items with neither `href` nor `onClick`\n * also render as text (intermediate but non-clickable).\n */\nexport function Breadcrumbs({ items, separator = \"/\", className }: BreadcrumbsProps) {\n return (\n <nav aria-label=\"breadcrumb\" className={cn(styles.nav, className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const interactive = !isLast && (item.href || item.onClick);\n return (\n <Fragment key={index}>\n <span className={styles.item}>\n {interactive ? (\n <a\n href={item.href}\n onClick={(event) => {\n if (item.onClick) {\n event.preventDefault();\n item.onClick();\n }\n }}\n className={styles.link}\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n className={isLast ? styles.current : undefined}\n >\n {item.label}\n </span>\n )}\n </span>\n {!isLast && (\n <span className={styles.separator} aria-hidden>\n {separator}\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n"],"mappings":";;;;;AAsBA,SAAgB,EAAY,EAAE,UAAO,eAAY,KAAK,gBAA+B;CACjF,OACI,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,EAAO,KAAK,CAAS;EAC3D,UAAA,EAAM,KAAK,GAAM,MAAU;GACxB,IAAM,IAAS,MAAU,EAAM,SAAS,GAClC,IAAc,CAAC,MAAW,EAAK,QAAQ,EAAK;GAClD,OACI,kBAAC,GAAD,EAAA,UAAA,CACI,kBAAC,QAAD;IAAM,WAAW,EAAO;IACnB,UAAA,IACG,kBAAC,KAAD;KACI,MAAM,EAAK;KACX,UAAU,MAAU;MAChB,AAAI,EAAK,YACL,EAAM,eAAe,GACrB,EAAK,QAAQ;KAErB;KACA,WAAW,EAAO;KAEjB,UAAA,EAAK;IACP,CAAA,IAEH,kBAAC,QAAD;KACI,gBAAc,IAAS,SAAS,KAAA;KAChC,WAAW,IAAS,EAAO,UAAU,KAAA;KAEpC,UAAA,EAAK;IACJ,CAAA;GAER,CAAA,GACL,CAAC,KACE,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAW,eAAA;IAC9B,UAAA;GACC,CAAA,CAEJ,EAAA,GA7BK,CA6BL;EAElB,CAAC;CACA,CAAA;AAEb"}
1
+ {"version":3,"file":"Breadcrumbs.js","names":["styles","Breadcrumbs_module_default","Breadcrumbs","cn","className","items","isLast","index","interactive","item","Fragment","event","separator"],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Breadcrumbs.module.css\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n}\n\n/**\n * Hierarchical navigation breadcrumbs. The last item is rendered as plain\n * text with `aria-current=\"page\"`. Items with neither `href` nor `onClick`\n * also render as text (intermediate but non-clickable).\n */\nexport function Breadcrumbs({ items, separator = \"/\", className }: BreadcrumbsProps) {\n return (\n <nav aria-label=\"breadcrumb\" className={cn(styles.nav, className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const interactive = !isLast && (item.href || item.onClick);\n return (\n <Fragment key={index}>\n <span className={styles.item}>\n {interactive ? (\n <a\n href={item.href}\n onClick={(event) => {\n if (item.onClick) {\n event.preventDefault();\n item.onClick();\n }\n }}\n className={styles.link}\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n className={isLast ? styles.current : undefined}\n >\n {item.label}\n </span>\n )}\n </span>\n {!isLast && (\n <span className={styles.separator} aria-hidden>\n {separator}\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n"],"mappings":";;;;;AAsBA,SAAgBE,EAAY,EAAE,UAAO,eAAY,KAAK,gBAA+B;CACjF,OACI,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAWC,EAAGH,EAAO,KAAKI,CAAS;EAC3D,UAAAC,EAAM,KAAK,GAAM,MAAU;GACxB,IAAMC,IAASC,MAAUF,EAAM,SAAS,GAClCG,IAAc,CAACF,MAAWG,EAAK,QAAQA,EAAK;GAClD,OACI,kBAACC,GAAD,EAAA,UAAA,CACI,kBAAC,QAAD;IAAM,WAAWV,EAAO;IACnB,UAAAQ,IACG,kBAAC,KAAD;KACI,MAAMC,EAAK;KACX,UAAU,MAAU;MAChB,AAAIA,EAAK,YACLE,EAAM,eAAe,GACrBF,EAAK,QAAQ;KAErB;KACA,WAAWT,EAAO;KAEjB,UAAAS,EAAK;IACP,CAAA,IAEH,kBAAC,QAAD;KACI,gBAAcH,IAAS,SAAS,KAAA;KAChC,WAAWA,IAASN,EAAO,UAAU,KAAA;KAEpC,UAAAS,EAAK;IACJ,CAAA;GAER,CAAA,GACL,CAACH,KACE,kBAAC,QAAD;IAAM,WAAWN,EAAO;IAAW,eAAA;IAC9B,UAAAY;GACC,CAAA,CAEJ,EAAA,GA7BKL,CA6BL;EAElB,CAAC;CACA,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.module.cjs","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.module.css"],"sourcesContent":[".nav {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n flex-wrap: wrap;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-1);\n}\n\n.link {\n color: var(--tempest-text-muted);\n text-decoration: none;\n padding: 2px 6px;\n border-radius: var(--tempest-radius-sm);\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .link:hover {\n color: var(--tempest-text);\n background-color: var(--tempest-surface);\n }\n}\n\n.link:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.current {\n color: var(--tempest-text);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.separator {\n color: var(--tempest-text-subtle);\n margin: 0 2px;\n user-select: none;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Breadcrumbs.module.cjs","names":["nav","item","link","current","separator","Breadcrumbs_module_default"],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.module.css"],"sourcesContent":[".nav {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n flex-wrap: wrap;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-1);\n}\n\n.link {\n color: var(--tempest-text-muted);\n text-decoration: none;\n padding: 2px 6px;\n border-radius: var(--tempest-radius-sm);\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .link:hover {\n color: var(--tempest-text);\n background-color: var(--tempest-surface);\n }\n}\n\n.link:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.current {\n color: var(--tempest-text);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.separator {\n color: var(--tempest-text-subtle);\n margin: 0 2px;\n user-select: none;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.module.js","names":[],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.module.css"],"sourcesContent":[".nav {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n flex-wrap: wrap;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-1);\n}\n\n.link {\n color: var(--tempest-text-muted);\n text-decoration: none;\n padding: 2px 6px;\n border-radius: var(--tempest-radius-sm);\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .link:hover {\n color: var(--tempest-text);\n background-color: var(--tempest-surface);\n }\n}\n\n.link:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.current {\n color: var(--tempest-text);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.separator {\n color: var(--tempest-text-subtle);\n margin: 0 2px;\n user-select: none;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Breadcrumbs.module.js","names":["nav","item","link","current","separator","Breadcrumbs_module_default"],"sources":["../../../src/components/Breadcrumbs/Breadcrumbs.module.css"],"sourcesContent":[".nav {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n flex-wrap: wrap;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-1);\n}\n\n.link {\n color: var(--tempest-text-muted);\n text-decoration: none;\n padding: 2px 6px;\n border-radius: var(--tempest-radius-sm);\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .link:hover {\n color: var(--tempest-text);\n background-color: var(--tempest-surface);\n }\n}\n\n.link:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.current {\n color: var(--tempest-text);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.separator {\n color: var(--tempest-text-subtle);\n margin: 0 2px;\n user-select: none;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.cjs","names":[],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — this is the design system's button: variant, size,\n * loading, fullWidth, iconOnly, pill, leftIcon and rightIcon are the whole\n * vocabulary every screen composes from, and href only picks which element carries\n * it. Nine orthogonal knobs on the most-used component is the API working — the\n * count rule is looking for two components fused together, and there is only one\n * here.\n */\nimport { forwardRef } from \"react\";\nimport type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ForwardedRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n RefAttributes,\n} from \"react\";\nimport { buttonClassName, preventActivation } from \"./button-class\";\nimport { ButtonContent } from \"./ButtonContent\";\nimport { resolveLinkRel } from \"./link-rel\";\nimport type { ButtonBaseProps } from \"./types\";\n\nexport type { ButtonBaseProps, ButtonSize, ButtonVariant } from \"./types\";\n\n/** `Button` rendering a native `<button>` — the default, when `href` is not set. */\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps, ButtonHTMLAttributes<HTMLButtonElement> {\n href?: undefined;\n}\n\n/**\n * `Button` rendering an `<a href>` — a call to action that navigates.\n *\n * `type` is a `<button>` attribute and is rejected here; `target` and `rel` are\n * forwarded, and `target=\"_blank\"` always gets `noopener noreferrer` added.\n */\nexport interface ButtonAsLinkProps\n extends ButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\" | \"type\"> {\n /** Destination. Its presence is what makes the button an `<a>`. */\n href: string;\n type?: never;\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps;\n\n/**\n * Each mode's props with the ref type of the element it renders, so a `ref` to an\n * `HTMLButtonElement` on a link is a type error.\n */\ntype ButtonPropsWithRef =\n | (ButtonAsButtonProps & RefAttributes<HTMLButtonElement>)\n | (ButtonAsLinkProps & RefAttributes<HTMLAnchorElement>);\n\n/** `Button`'s call signature: one props union, each member with its own ref type. */\ntype ButtonComponent = ((props: ButtonPropsWithRef) => ReactElement) & { displayName?: string };\n\n/** The flattened view the render function works on after the call site was type-checked. */\ntype ButtonRenderProps = ButtonBaseProps &\n HTMLAttributes<HTMLElement> & {\n href?: string;\n target?: string;\n rel?: string;\n };\n\n/**\n * Primary action button with variants, sizes and a loading state that\n * preserves layout via an absolutely-positioned spinner.\n *\n * Variants: `primary` (solid), `secondary` (neutral), `danger`, `success`,\n * `ghost` (transparent), `soft` (tinted), `outline` (bordered), `link`.\n *\n * Sizes are density-aware — they read from `--tempest-control-height-*`\n * tokens which respond to the `data-tempest-density` attribute.\n *\n * With `href` it renders an `<a>` with the same look: a call to action that\n * navigates keeps the middle click, Ctrl+click, \"open in new tab\" and the URL\n * preview, which a `<button>` calling `location.assign` loses. `target=\"_blank\"`\n * gets `noopener noreferrer`. An `<a>` has no `disabled`, so a disabled or loading\n * link gets `aria-disabled=\"true\"`, `role=\"link\"`, `tabIndex={-1}`, no `href`, and\n * its click and middle-click cancelled.\n *\n * To style another element — a react-router `Link` — use {@link ButtonSlot}. It is\n * a separate component, not an `asChild` prop, so an app that never uses it does\n * not ship the prop merge and ref composition it needs.\n *\n * The ref is typed per mode: `HTMLButtonElement`, or `HTMLAnchorElement` with\n * `href`. `forwardRef` takes one ref type for all props, so its result is re-typed\n * to the per-mode union — the runtime is plain `forwardRef`.\n *\n * @example\n * <Button onClick={save}>Salvar</Button>\n *\n * @example\n * <Button href=\"https://wa.me/5586999999999\" target=\"_blank\" rightIcon={<ExternalLink />}>\n * Fale conosco\n * </Button>\n */\nexport const Button = forwardRef<HTMLElement, ButtonProps>(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n variant,\n size,\n loading = false,\n disabled = false,\n fullWidth,\n iconOnly,\n pill,\n leftIcon,\n rightIcon,\n className,\n children,\n href,\n target,\n rel,\n ...rest\n } = props as ButtonRenderProps;\n const inactive = disabled || loading;\n const classes = buttonClassName(\n { variant, size, loading, fullWidth, iconOnly, pill },\n className,\n );\n const content: ReactNode = (\n <ButtonContent loading={loading} leftIcon={leftIcon} rightIcon={rightIcon}>\n {children}\n </ButtonContent>\n );\n\n if (href !== undefined) {\n return (\n <a\n {...rest}\n ref={ref as Ref<HTMLAnchorElement>}\n className={classes}\n href={inactive ? undefined : href}\n target={target}\n rel={resolveLinkRel(target, rel)}\n role={inactive ? \"link\" : rest.role}\n aria-disabled={inactive || undefined}\n aria-busy={loading || undefined}\n tabIndex={inactive ? -1 : rest.tabIndex}\n onClick={inactive ? preventActivation : rest.onClick}\n onAuxClick={inactive ? preventActivation : rest.onAuxClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n {...(rest as ButtonHTMLAttributes<HTMLButtonElement>)}\n ref={ref as Ref<HTMLButtonElement>}\n className={classes}\n disabled={inactive}\n aria-busy={loading || undefined}\n >\n {content}\n </button>\n );\n}) as unknown as ButtonComponent;\n"],"mappings":"yJAmGA,IAAa,GAAA,EAAS,EAAA,WAAA,CAAqC,SACvD,EACA,EACY,CACZ,GAAM,CACF,UACA,OACA,UAAU,GACV,WAAW,GACX,YACA,WACA,OACA,WACA,YACA,YACA,WACA,OACA,SACA,MACA,GAAG,GACH,EACE,EAAW,GAAY,EACvB,EAAU,EAAA,gBACZ,CAAE,UAAS,OAAM,UAAS,YAAW,WAAU,MAAK,EACpD,CACJ,EACM,GACF,EAAA,EAAA,IAAA,CAAC,EAAA,cAAD,CAAwB,UAAmB,WAAqB,YAC3D,UACU,CAAA,EAwBnB,OArBI,IAAS,IAAA,IAsBT,EAAA,EAAA,IAAA,CAAC,SAAD,CACI,GAAK,EACA,MACL,UAAW,EACX,SAAU,EACV,YAAW,GAAW,IAAA,GAErB,SAAA,CACG,CAAA,GA5BJ,EAAA,EAAA,IAAA,CAAC,IAAD,CACI,GAAI,EACC,MACL,UAAW,EACX,KAAM,EAAW,IAAA,GAAY,EACrB,SACR,IAAK,EAAA,eAAe,EAAQ,CAAG,EAC/B,KAAM,EAAW,OAAS,EAAK,KAC/B,gBAAe,GAAY,IAAA,GAC3B,YAAW,GAAW,IAAA,GACtB,SAAU,EAAW,GAAK,EAAK,SAC/B,QAAS,EAAW,EAAA,kBAAoB,EAAK,QAC7C,WAAY,EAAW,EAAA,kBAAoB,EAAK,WAE/C,SAAA,CACF,CAAA,CAef,CAAC"}
1
+ {"version":3,"file":"Button.cjs","names":["forwardRef","buttonClassName","ButtonContent","resolveLinkRel","preventActivation","require_button_class","require_ButtonContent","require_link_rel","react","react_jsx_runtime","Button","rest","props","inactive","disabled","loading","classes","className","content","href","target","rel"],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — this is the design system's button: variant, size,\n * loading, fullWidth, iconOnly, pill, leftIcon and rightIcon are the whole\n * vocabulary every screen composes from, and href only picks which element carries\n * it. Nine orthogonal knobs on the most-used component is the API working — the\n * count rule is looking for two components fused together, and there is only one\n * here.\n */\nimport { forwardRef } from \"react\";\nimport type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ForwardedRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n RefAttributes,\n} from \"react\";\nimport { buttonClassName, preventActivation } from \"./button-class\";\nimport { ButtonContent } from \"./ButtonContent\";\nimport { resolveLinkRel } from \"./link-rel\";\nimport type { ButtonBaseProps } from \"./types\";\n\nexport type { ButtonBaseProps, ButtonSize, ButtonVariant } from \"./types\";\n\n/** `Button` rendering a native `<button>` — the default, when `href` is not set. */\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps, ButtonHTMLAttributes<HTMLButtonElement> {\n href?: undefined;\n}\n\n/**\n * `Button` rendering an `<a href>` — a call to action that navigates.\n *\n * `type` is a `<button>` attribute and is rejected here; `target` and `rel` are\n * forwarded, and `target=\"_blank\"` always gets `noopener noreferrer` added.\n */\nexport interface ButtonAsLinkProps\n extends ButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\" | \"type\"> {\n /** Destination. Its presence is what makes the button an `<a>`. */\n href: string;\n type?: never;\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps;\n\n/**\n * Each mode's props with the ref type of the element it renders, so a `ref` to an\n * `HTMLButtonElement` on a link is a type error.\n */\ntype ButtonPropsWithRef =\n | (ButtonAsButtonProps & RefAttributes<HTMLButtonElement>)\n | (ButtonAsLinkProps & RefAttributes<HTMLAnchorElement>);\n\n/** `Button`'s call signature: one props union, each member with its own ref type. */\ntype ButtonComponent = ((props: ButtonPropsWithRef) => ReactElement) & { displayName?: string };\n\n/** The flattened view the render function works on after the call site was type-checked. */\ntype ButtonRenderProps = ButtonBaseProps &\n HTMLAttributes<HTMLElement> & {\n href?: string;\n target?: string;\n rel?: string;\n };\n\n/**\n * Primary action button with variants, sizes and a loading state that\n * preserves layout via an absolutely-positioned spinner.\n *\n * Variants: `primary` (solid), `secondary` (neutral), `danger`, `success`,\n * `ghost` (transparent), `soft` (tinted), `outline` (bordered), `link`.\n *\n * Sizes are density-aware — they read from `--tempest-control-height-*`\n * tokens which respond to the `data-tempest-density` attribute.\n *\n * With `href` it renders an `<a>` with the same look: a call to action that\n * navigates keeps the middle click, Ctrl+click, \"open in new tab\" and the URL\n * preview, which a `<button>` calling `location.assign` loses. `target=\"_blank\"`\n * gets `noopener noreferrer`. An `<a>` has no `disabled`, so a disabled or loading\n * link gets `aria-disabled=\"true\"`, `role=\"link\"`, `tabIndex={-1}`, no `href`, and\n * its click and middle-click cancelled.\n *\n * To style another element — a react-router `Link` — use {@link ButtonSlot}. It is\n * a separate component, not an `asChild` prop, so an app that never uses it does\n * not ship the prop merge and ref composition it needs.\n *\n * The ref is typed per mode: `HTMLButtonElement`, or `HTMLAnchorElement` with\n * `href`. `forwardRef` takes one ref type for all props, so its result is re-typed\n * to the per-mode union — the runtime is plain `forwardRef`.\n *\n * @example\n * <Button onClick={save}>Salvar</Button>\n *\n * @example\n * <Button href=\"https://wa.me/5586999999999\" target=\"_blank\" rightIcon={<ExternalLink />}>\n * Fale conosco\n * </Button>\n */\nexport const Button = forwardRef<HTMLElement, ButtonProps>(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n variant,\n size,\n loading = false,\n disabled = false,\n fullWidth,\n iconOnly,\n pill,\n leftIcon,\n rightIcon,\n className,\n children,\n href,\n target,\n rel,\n ...rest\n } = props as ButtonRenderProps;\n const inactive = disabled || loading;\n const classes = buttonClassName(\n { variant, size, loading, fullWidth, iconOnly, pill },\n className,\n );\n const content: ReactNode = (\n <ButtonContent loading={loading} leftIcon={leftIcon} rightIcon={rightIcon}>\n {children}\n </ButtonContent>\n );\n\n if (href !== undefined) {\n return (\n <a\n {...rest}\n ref={ref as Ref<HTMLAnchorElement>}\n className={classes}\n href={inactive ? undefined : href}\n target={target}\n rel={resolveLinkRel(target, rel)}\n role={inactive ? \"link\" : rest.role}\n aria-disabled={inactive || undefined}\n aria-busy={loading || undefined}\n tabIndex={inactive ? -1 : rest.tabIndex}\n onClick={inactive ? preventActivation : rest.onClick}\n onAuxClick={inactive ? preventActivation : rest.onAuxClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n {...(rest as ButtonHTMLAttributes<HTMLButtonElement>)}\n ref={ref as Ref<HTMLButtonElement>}\n className={classes}\n disabled={inactive}\n aria-busy={loading || undefined}\n >\n {content}\n </button>\n );\n}) as unknown as ButtonComponent;\n"],"mappings":"A,yJAmGA,IAAaU,GAAA,EAASV,EAAAA,WAAAA,CAAqC,SACvD,EACA,EACY,CACZ,GAAM,CACF,UACA,OACA,UAAU,GACV,WAAW,GACX,YACA,WACA,OACA,WACA,YACA,YACA,WACA,OACA,SACA,MACA,GAAGW,GACHC,EACEC,EAAWC,GAAYC,EACvBC,EAAUf,EAAAA,gBACZ,CAAE,UAAS,OAAM,UAAS,YAAW,WAAU,MAAK,EACpDgB,CACJ,EACMC,GACF,EAAAT,EAAA,IAAA,CAACP,EAAAA,cAAD,CAAwB,UAAmB,WAAqB,YAC3D,UACU,CAAA,EAwBnB,OArBIiB,IAAS,IAAA,IAsBT,EAAAV,EAAA,IAAA,CAAC,SAAD,CACI,GAAKE,EACA,MACL,UAAWK,EACX,SAAUH,EACV,YAAWE,GAAW,IAAA,GAErB,SAAAG,CACG,CAAA,GA5BJ,EAAAT,EAAA,IAAA,CAAC,IAAD,CACI,GAAIE,EACC,MACL,UAAWK,EACX,KAAMH,EAAW,IAAA,GAAYM,EACrB,SACR,IAAKhB,EAAAA,eAAeiB,EAAQC,CAAG,EAC/B,KAAMR,EAAW,OAASF,EAAK,KAC/B,gBAAeE,GAAY,IAAA,GAC3B,YAAWE,GAAW,IAAA,GACtB,SAAUF,EAAW,GAAKF,EAAK,SAC/B,QAASE,EAAWT,EAAAA,kBAAoBO,EAAK,QAC7C,WAAYE,EAAWT,EAAAA,kBAAoBO,EAAK,WAE/C,SAAAO,CACF,CAAA,CAef,CAAC,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — this is the design system's button: variant, size,\n * loading, fullWidth, iconOnly, pill, leftIcon and rightIcon are the whole\n * vocabulary every screen composes from, and href only picks which element carries\n * it. Nine orthogonal knobs on the most-used component is the API working — the\n * count rule is looking for two components fused together, and there is only one\n * here.\n */\nimport { forwardRef } from \"react\";\nimport type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ForwardedRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n RefAttributes,\n} from \"react\";\nimport { buttonClassName, preventActivation } from \"./button-class\";\nimport { ButtonContent } from \"./ButtonContent\";\nimport { resolveLinkRel } from \"./link-rel\";\nimport type { ButtonBaseProps } from \"./types\";\n\nexport type { ButtonBaseProps, ButtonSize, ButtonVariant } from \"./types\";\n\n/** `Button` rendering a native `<button>` — the default, when `href` is not set. */\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps, ButtonHTMLAttributes<HTMLButtonElement> {\n href?: undefined;\n}\n\n/**\n * `Button` rendering an `<a href>` — a call to action that navigates.\n *\n * `type` is a `<button>` attribute and is rejected here; `target` and `rel` are\n * forwarded, and `target=\"_blank\"` always gets `noopener noreferrer` added.\n */\nexport interface ButtonAsLinkProps\n extends ButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\" | \"type\"> {\n /** Destination. Its presence is what makes the button an `<a>`. */\n href: string;\n type?: never;\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps;\n\n/**\n * Each mode's props with the ref type of the element it renders, so a `ref` to an\n * `HTMLButtonElement` on a link is a type error.\n */\ntype ButtonPropsWithRef =\n | (ButtonAsButtonProps & RefAttributes<HTMLButtonElement>)\n | (ButtonAsLinkProps & RefAttributes<HTMLAnchorElement>);\n\n/** `Button`'s call signature: one props union, each member with its own ref type. */\ntype ButtonComponent = ((props: ButtonPropsWithRef) => ReactElement) & { displayName?: string };\n\n/** The flattened view the render function works on after the call site was type-checked. */\ntype ButtonRenderProps = ButtonBaseProps &\n HTMLAttributes<HTMLElement> & {\n href?: string;\n target?: string;\n rel?: string;\n };\n\n/**\n * Primary action button with variants, sizes and a loading state that\n * preserves layout via an absolutely-positioned spinner.\n *\n * Variants: `primary` (solid), `secondary` (neutral), `danger`, `success`,\n * `ghost` (transparent), `soft` (tinted), `outline` (bordered), `link`.\n *\n * Sizes are density-aware — they read from `--tempest-control-height-*`\n * tokens which respond to the `data-tempest-density` attribute.\n *\n * With `href` it renders an `<a>` with the same look: a call to action that\n * navigates keeps the middle click, Ctrl+click, \"open in new tab\" and the URL\n * preview, which a `<button>` calling `location.assign` loses. `target=\"_blank\"`\n * gets `noopener noreferrer`. An `<a>` has no `disabled`, so a disabled or loading\n * link gets `aria-disabled=\"true\"`, `role=\"link\"`, `tabIndex={-1}`, no `href`, and\n * its click and middle-click cancelled.\n *\n * To style another element — a react-router `Link` — use {@link ButtonSlot}. It is\n * a separate component, not an `asChild` prop, so an app that never uses it does\n * not ship the prop merge and ref composition it needs.\n *\n * The ref is typed per mode: `HTMLButtonElement`, or `HTMLAnchorElement` with\n * `href`. `forwardRef` takes one ref type for all props, so its result is re-typed\n * to the per-mode union — the runtime is plain `forwardRef`.\n *\n * @example\n * <Button onClick={save}>Salvar</Button>\n *\n * @example\n * <Button href=\"https://wa.me/5586999999999\" target=\"_blank\" rightIcon={<ExternalLink />}>\n * Fale conosco\n * </Button>\n */\nexport const Button = forwardRef<HTMLElement, ButtonProps>(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n variant,\n size,\n loading = false,\n disabled = false,\n fullWidth,\n iconOnly,\n pill,\n leftIcon,\n rightIcon,\n className,\n children,\n href,\n target,\n rel,\n ...rest\n } = props as ButtonRenderProps;\n const inactive = disabled || loading;\n const classes = buttonClassName(\n { variant, size, loading, fullWidth, iconOnly, pill },\n className,\n );\n const content: ReactNode = (\n <ButtonContent loading={loading} leftIcon={leftIcon} rightIcon={rightIcon}>\n {children}\n </ButtonContent>\n );\n\n if (href !== undefined) {\n return (\n <a\n {...rest}\n ref={ref as Ref<HTMLAnchorElement>}\n className={classes}\n href={inactive ? undefined : href}\n target={target}\n rel={resolveLinkRel(target, rel)}\n role={inactive ? \"link\" : rest.role}\n aria-disabled={inactive || undefined}\n aria-busy={loading || undefined}\n tabIndex={inactive ? -1 : rest.tabIndex}\n onClick={inactive ? preventActivation : rest.onClick}\n onAuxClick={inactive ? preventActivation : rest.onAuxClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n {...(rest as ButtonHTMLAttributes<HTMLButtonElement>)}\n ref={ref as Ref<HTMLButtonElement>}\n className={classes}\n disabled={inactive}\n aria-busy={loading || undefined}\n >\n {content}\n </button>\n );\n}) as unknown as ButtonComponent;\n"],"mappings":";;;;;;AAmGA,IAAa,IAAS,EAAqC,SACvD,GACA,GACY;CACZ,IAAM,EACF,YACA,SACA,aAAU,IACV,cAAW,IACX,cACA,aACA,SACA,aACA,cACA,cACA,aACA,SACA,WACA,QACA,GAAG,MACH,GACE,IAAW,KAAY,GACvB,IAAU,EACZ;EAAE;EAAS;EAAM;EAAS;EAAW;EAAU;CAAK,GACpD,CACJ,GACM,IACF,kBAAC,GAAD;EAAwB;EAAmB;EAAqB;EAC3D;CACU,CAAA;CAwBnB,OArBI,MAAS,KAAA,IAsBT,kBAAC,UAAD;EACI,GAAK;EACA;EACL,WAAW;EACX,UAAU;EACV,aAAW,KAAW,KAAA;EAErB,UAAA;CACG,CAAA,IA5BJ,kBAAC,KAAD;EACI,GAAI;EACC;EACL,WAAW;EACX,MAAM,IAAW,KAAA,IAAY;EACrB;EACR,KAAK,EAAe,GAAQ,CAAG;EAC/B,MAAM,IAAW,SAAS,EAAK;EAC/B,iBAAe,KAAY,KAAA;EAC3B,aAAW,KAAW,KAAA;EACtB,UAAU,IAAW,KAAK,EAAK;EAC/B,SAAS,IAAW,IAAoB,EAAK;EAC7C,YAAY,IAAW,IAAoB,EAAK;EAE/C,UAAA;CACF,CAAA;AAef,CAAC"}
1
+ {"version":3,"file":"Button.js","names":["Button","forwardRef","rest","props","inactive","disabled","loading","classes","buttonClassName","className","content","ButtonContent","href","resolveLinkRel","target","rel","preventActivation"],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — this is the design system's button: variant, size,\n * loading, fullWidth, iconOnly, pill, leftIcon and rightIcon are the whole\n * vocabulary every screen composes from, and href only picks which element carries\n * it. Nine orthogonal knobs on the most-used component is the API working — the\n * count rule is looking for two components fused together, and there is only one\n * here.\n */\nimport { forwardRef } from \"react\";\nimport type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ForwardedRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n RefAttributes,\n} from \"react\";\nimport { buttonClassName, preventActivation } from \"./button-class\";\nimport { ButtonContent } from \"./ButtonContent\";\nimport { resolveLinkRel } from \"./link-rel\";\nimport type { ButtonBaseProps } from \"./types\";\n\nexport type { ButtonBaseProps, ButtonSize, ButtonVariant } from \"./types\";\n\n/** `Button` rendering a native `<button>` — the default, when `href` is not set. */\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps, ButtonHTMLAttributes<HTMLButtonElement> {\n href?: undefined;\n}\n\n/**\n * `Button` rendering an `<a href>` — a call to action that navigates.\n *\n * `type` is a `<button>` attribute and is rejected here; `target` and `rel` are\n * forwarded, and `target=\"_blank\"` always gets `noopener noreferrer` added.\n */\nexport interface ButtonAsLinkProps\n extends ButtonBaseProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\" | \"type\"> {\n /** Destination. Its presence is what makes the button an `<a>`. */\n href: string;\n type?: never;\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps;\n\n/**\n * Each mode's props with the ref type of the element it renders, so a `ref` to an\n * `HTMLButtonElement` on a link is a type error.\n */\ntype ButtonPropsWithRef =\n | (ButtonAsButtonProps & RefAttributes<HTMLButtonElement>)\n | (ButtonAsLinkProps & RefAttributes<HTMLAnchorElement>);\n\n/** `Button`'s call signature: one props union, each member with its own ref type. */\ntype ButtonComponent = ((props: ButtonPropsWithRef) => ReactElement) & { displayName?: string };\n\n/** The flattened view the render function works on after the call site was type-checked. */\ntype ButtonRenderProps = ButtonBaseProps &\n HTMLAttributes<HTMLElement> & {\n href?: string;\n target?: string;\n rel?: string;\n };\n\n/**\n * Primary action button with variants, sizes and a loading state that\n * preserves layout via an absolutely-positioned spinner.\n *\n * Variants: `primary` (solid), `secondary` (neutral), `danger`, `success`,\n * `ghost` (transparent), `soft` (tinted), `outline` (bordered), `link`.\n *\n * Sizes are density-aware — they read from `--tempest-control-height-*`\n * tokens which respond to the `data-tempest-density` attribute.\n *\n * With `href` it renders an `<a>` with the same look: a call to action that\n * navigates keeps the middle click, Ctrl+click, \"open in new tab\" and the URL\n * preview, which a `<button>` calling `location.assign` loses. `target=\"_blank\"`\n * gets `noopener noreferrer`. An `<a>` has no `disabled`, so a disabled or loading\n * link gets `aria-disabled=\"true\"`, `role=\"link\"`, `tabIndex={-1}`, no `href`, and\n * its click and middle-click cancelled.\n *\n * To style another element — a react-router `Link` — use {@link ButtonSlot}. It is\n * a separate component, not an `asChild` prop, so an app that never uses it does\n * not ship the prop merge and ref composition it needs.\n *\n * The ref is typed per mode: `HTMLButtonElement`, or `HTMLAnchorElement` with\n * `href`. `forwardRef` takes one ref type for all props, so its result is re-typed\n * to the per-mode union — the runtime is plain `forwardRef`.\n *\n * @example\n * <Button onClick={save}>Salvar</Button>\n *\n * @example\n * <Button href=\"https://wa.me/5586999999999\" target=\"_blank\" rightIcon={<ExternalLink />}>\n * Fale conosco\n * </Button>\n */\nexport const Button = forwardRef<HTMLElement, ButtonProps>(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n variant,\n size,\n loading = false,\n disabled = false,\n fullWidth,\n iconOnly,\n pill,\n leftIcon,\n rightIcon,\n className,\n children,\n href,\n target,\n rel,\n ...rest\n } = props as ButtonRenderProps;\n const inactive = disabled || loading;\n const classes = buttonClassName(\n { variant, size, loading, fullWidth, iconOnly, pill },\n className,\n );\n const content: ReactNode = (\n <ButtonContent loading={loading} leftIcon={leftIcon} rightIcon={rightIcon}>\n {children}\n </ButtonContent>\n );\n\n if (href !== undefined) {\n return (\n <a\n {...rest}\n ref={ref as Ref<HTMLAnchorElement>}\n className={classes}\n href={inactive ? undefined : href}\n target={target}\n rel={resolveLinkRel(target, rel)}\n role={inactive ? \"link\" : rest.role}\n aria-disabled={inactive || undefined}\n aria-busy={loading || undefined}\n tabIndex={inactive ? -1 : rest.tabIndex}\n onClick={inactive ? preventActivation : rest.onClick}\n onAuxClick={inactive ? preventActivation : rest.onAuxClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n {...(rest as ButtonHTMLAttributes<HTMLButtonElement>)}\n ref={ref as Ref<HTMLButtonElement>}\n className={classes}\n disabled={inactive}\n aria-busy={loading || undefined}\n >\n {content}\n </button>\n );\n}) as unknown as ButtonComponent;\n"],"mappings":";;;;;;AAmGA,IAAaA,IAASC,EAAqC,SACvD,GACA,GACY;CACZ,IAAM,EACF,YACA,SACA,aAAU,IACV,cAAW,IACX,cACA,aACA,SACA,aACA,cACA,cACA,aACA,SACA,WACA,QACA,GAAGC,MACHC,GACEC,IAAWC,KAAYC,GACvBC,IAAUC,EACZ;EAAE;EAAS;EAAM;EAAS;EAAW;EAAU;CAAK,GACpDC,CACJ,GACMC,IACF,kBAACC,GAAD;EAAwB;EAAmB;EAAqB;EAC3D;CACU,CAAA;CAwBnB,OArBIC,MAAS,KAAA,IAsBT,kBAAC,UAAD;EACI,GAAKV;EACA;EACL,WAAWK;EACX,UAAUH;EACV,aAAWE,KAAW,KAAA;EAErB,UAAAI;CACG,CAAA,IA5BJ,kBAAC,KAAD;EACI,GAAIR;EACC;EACL,WAAWK;EACX,MAAMH,IAAW,KAAA,IAAYQ;EACrB;EACR,KAAKC,EAAeC,GAAQC,CAAG;EAC/B,MAAMX,IAAW,SAASF,EAAK;EAC/B,iBAAeE,KAAY,KAAA;EAC3B,aAAWE,KAAW,KAAA;EACtB,UAAUF,IAAW,KAAKF,EAAK;EAC/B,SAASE,IAAWY,IAAoBd,EAAK;EAC7C,YAAYE,IAAWY,IAAoBd,EAAK;EAE/C,UAAAQ;CACF,CAAA;AAef,CAAC"}