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":"SignaturePad.js","names":[],"sources":["../../../src/components/SignaturePad/SignaturePad.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the canvas (width,\n * height, penColor, penWidth), the lifecycle an app needs to enable its save button\n * (onBegin, onEnd, onEmptyChange) and the built-in actions with their copy\n * (showActions, clearLabel, undoLabel, label). The body is the stroke buffer plus\n * undo history, which are the same array.\n */\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport type { PointerEvent as ReactPointerEvent } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Button } from \"../Button\";\nimport styles from \"./SignaturePad.module.css\";\n\n/** A single sampled point of a stroke, in CSS pixels relative to the canvas. */\ninterface Point {\n x: number;\n y: number;\n}\n\n/** Imperative handle exposed through `ref`. */\nexport interface SignaturePadHandle {\n /** Drop every stroke. */\n clear: () => void;\n /** Drop the last stroke. */\n undo: () => void;\n /** `true` while nothing has been drawn. */\n isEmpty: () => boolean;\n /** Export as a data URL. Returns `\"\"` when the canvas is unavailable. */\n toDataURL: (type?: string, quality?: number) => string;\n /** Export as a `Blob` — what you actually upload. `null` when unavailable. */\n toBlob: (type?: string, quality?: number) => Promise<Blob | null>;\n}\n\nexport interface SignaturePadProps {\n /** Drawing surface width in CSS pixels. Default `400`. */\n width?: number;\n /** Drawing surface height in CSS pixels. Default `160`. */\n height?: number;\n /**\n * Stroke color. Defaults to the canvas' computed `color`, which the\n * stylesheet binds to `--tempest-text` — so the signature follows the theme\n * (including dark mode) instead of being hardcoded black.\n */\n penColor?: string;\n /** Stroke width in CSS pixels. Default `2`. */\n penWidth?: number;\n /** Blocks drawing and dims the surface. */\n disabled?: boolean;\n /** Accessible name of the surface. Default `\"Signature\"`. */\n label?: string;\n /** Called on the first move of each stroke. */\n onBegin?: () => void;\n /** Called when a stroke ends, with the current image as a data URL. */\n onEnd?: (dataUrl: string) => void;\n /** Called whenever the emptiness changes — wire it to a submit button. */\n onEmptyChange?: (isEmpty: boolean) => void;\n /** Renders the Clear/Undo buttons. Default `true`. */\n showActions?: boolean;\n clearLabel?: string;\n undoLabel?: string;\n className?: string;\n}\n\n/**\n * Signature capture on a canvas — the \"sign here\" field of a delivery receipt,\n * a service order, a term of acceptance.\n *\n * Strokes are kept as point lists and the canvas is **redrawn** from them, which\n * is what makes `undo` possible at all: a canvas holds pixels, not history, so\n * removing the last stroke means replaying the rest.\n *\n * The backing store is scaled by `devicePixelRatio`, so the line is crisp on a\n * phone instead of the blurry 1x bitmap a naive canvas produces.\n *\n * @example\n * ```tsx\n * const pad = useRef<SignaturePadHandle>(null);\n * const [empty, setEmpty] = useState(true);\n *\n * async function submit() {\n * const blob = await pad.current?.toBlob(\"image/png\");\n * if (blob) await api.upload(\"/receipts/42/signature\", blob);\n * }\n *\n * <SignaturePad ref={pad} label=\"Assinatura do cliente\" onEmptyChange={setEmpty} />\n * <Button disabled={empty} onClick={submit}>Enviar</Button>\n * ```\n */\nexport const SignaturePad = forwardRef<SignaturePadHandle, SignaturePadProps>(function SignaturePad(\n {\n width = 400,\n height = 160,\n penColor,\n penWidth = 2,\n disabled = false,\n label = \"Signature\",\n onBegin,\n onEnd,\n onEmptyChange,\n showActions = true,\n clearLabel = \"Clear\",\n undoLabel = \"Undo\",\n className,\n },\n ref,\n) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const strokesRef = useRef<Point[][]>([]);\n const drawingRef = useRef(false);\n const [isEmpty, setIsEmpty] = useState(true);\n\n const resolvePenColor = useCallback((): string => {\n if (penColor) return penColor;\n const canvas = canvasRef.current;\n if (!canvas || typeof window === \"undefined\") return \"#101828\";\n return window.getComputedStyle(canvas).color || \"#101828\";\n }, [penColor]);\n\n /**\n * Repaint the whole surface from the stroke list, honouring the pixel ratio.\n *\n * A one-point stroke (a tap) gets a line back to its own origin: `stroke()`\n * over a path with a single point paints nothing, so without it a tap would\n * silently produce no dot while still counting as \"not empty\".\n */\n const redraw = useCallback((): void => {\n const canvas = canvasRef.current;\n const context = canvas?.getContext(\"2d\");\n if (!canvas || !context) return;\n\n const ratio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio || 1;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n context.setTransform(ratio, 0, 0, ratio, 0, 0);\n context.clearRect(0, 0, width, height);\n\n context.lineWidth = penWidth;\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n context.strokeStyle = resolvePenColor();\n\n for (const stroke of strokesRef.current) {\n if (stroke.length === 0) continue;\n context.beginPath();\n context.moveTo(stroke[0].x, stroke[0].y);\n for (const point of stroke.slice(1)) {\n context.lineTo(point.x, point.y);\n }\n if (stroke.length === 1) context.lineTo(stroke[0].x, stroke[0].y);\n context.stroke();\n }\n }, [height, penWidth, resolvePenColor, width]);\n\n useEffect(() => {\n redraw();\n }, [redraw]);\n\n const setEmptiness = useCallback(\n (next: boolean): void => {\n setIsEmpty((current) => {\n if (current !== next) onEmptyChange?.(next);\n return next;\n });\n },\n [onEmptyChange],\n );\n\n const pointFrom = useCallback((event: ReactPointerEvent<HTMLCanvasElement>): Point => {\n const rect = canvasRef.current?.getBoundingClientRect();\n return {\n x: event.clientX - (rect?.left ?? 0),\n y: event.clientY - (rect?.top ?? 0),\n };\n }, []);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (disabled) return;\n drawingRef.current = true;\n strokesRef.current = [...strokesRef.current, [pointFrom(event)]];\n canvasRef.current?.setPointerCapture?.(event.pointerId);\n onBegin?.();\n setEmptiness(false);\n redraw();\n },\n [disabled, onBegin, pointFrom, redraw, setEmptiness],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (!drawingRef.current || disabled) return;\n const strokes = strokesRef.current;\n strokes[strokes.length - 1].push(pointFrom(event));\n redraw();\n },\n [disabled, pointFrom, redraw],\n );\n\n const handlePointerUp = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (!drawingRef.current) return;\n drawingRef.current = false;\n canvasRef.current?.releasePointerCapture?.(event.pointerId);\n onEnd?.(canvasRef.current?.toDataURL() ?? \"\");\n },\n [onEnd],\n );\n\n const clear = useCallback((): void => {\n strokesRef.current = [];\n setEmptiness(true);\n redraw();\n }, [redraw, setEmptiness]);\n\n const undo = useCallback((): void => {\n strokesRef.current = strokesRef.current.slice(0, -1);\n setEmptiness(strokesRef.current.length === 0);\n redraw();\n }, [redraw, setEmptiness]);\n\n useImperativeHandle(\n ref,\n () => ({\n clear,\n undo,\n isEmpty: () => strokesRef.current.length === 0,\n toDataURL: (type, quality) => canvasRef.current?.toDataURL(type, quality) ?? \"\",\n toBlob: (type, quality) =>\n new Promise((resolve) => {\n const canvas = canvasRef.current;\n if (!canvas?.toBlob) {\n resolve(null);\n return;\n }\n canvas.toBlob((blob) => resolve(blob), type, quality);\n }),\n }),\n [clear, undo],\n );\n\n return (\n <div className={cn(styles.pad, disabled && styles.disabled, className)}>\n <canvas\n ref={canvasRef}\n role=\"img\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n className={styles.canvas}\n style={{ width, height, touchAction: \"none\" }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n />\n {showActions ? (\n <div className={styles.actions}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={undo}\n disabled={disabled || isEmpty}\n >\n {undoLabel}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={clear}\n disabled={disabled || isEmpty}\n >\n {clearLabel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"SignaturePad.js","names":["styles","SignaturePad_module_default","SignaturePad","forwardRef","canvasRef","useRef","strokesRef","drawingRef","isEmpty","setIsEmpty","useState","resolvePenColor","useCallback","penColor","canvas","redraw","context","ratio","width","height","penWidth","stroke","point","setEmptiness","current","next","onEmptyChange","pointFrom","rect","event","handlePointerDown","disabled","onBegin","handlePointerMove","strokes","handlePointerUp","onEnd","clear","undo","useImperativeHandle","ref","type","quality","resolve","blob","cn","className","label","showActions","Button","undoLabel","clearLabel"],"sources":["../../../src/components/SignaturePad/SignaturePad.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — the canvas (width,\n * height, penColor, penWidth), the lifecycle an app needs to enable its save button\n * (onBegin, onEnd, onEmptyChange) and the built-in actions with their copy\n * (showActions, clearLabel, undoLabel, label). The body is the stroke buffer plus\n * undo history, which are the same array.\n */\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport type { PointerEvent as ReactPointerEvent } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Button } from \"../Button\";\nimport styles from \"./SignaturePad.module.css\";\n\n/** A single sampled point of a stroke, in CSS pixels relative to the canvas. */\ninterface Point {\n x: number;\n y: number;\n}\n\n/** Imperative handle exposed through `ref`. */\nexport interface SignaturePadHandle {\n /** Drop every stroke. */\n clear: () => void;\n /** Drop the last stroke. */\n undo: () => void;\n /** `true` while nothing has been drawn. */\n isEmpty: () => boolean;\n /** Export as a data URL. Returns `\"\"` when the canvas is unavailable. */\n toDataURL: (type?: string, quality?: number) => string;\n /** Export as a `Blob` — what you actually upload. `null` when unavailable. */\n toBlob: (type?: string, quality?: number) => Promise<Blob | null>;\n}\n\nexport interface SignaturePadProps {\n /** Drawing surface width in CSS pixels. Default `400`. */\n width?: number;\n /** Drawing surface height in CSS pixels. Default `160`. */\n height?: number;\n /**\n * Stroke color. Defaults to the canvas' computed `color`, which the\n * stylesheet binds to `--tempest-text` — so the signature follows the theme\n * (including dark mode) instead of being hardcoded black.\n */\n penColor?: string;\n /** Stroke width in CSS pixels. Default `2`. */\n penWidth?: number;\n /** Blocks drawing and dims the surface. */\n disabled?: boolean;\n /** Accessible name of the surface. Default `\"Signature\"`. */\n label?: string;\n /** Called on the first move of each stroke. */\n onBegin?: () => void;\n /** Called when a stroke ends, with the current image as a data URL. */\n onEnd?: (dataUrl: string) => void;\n /** Called whenever the emptiness changes — wire it to a submit button. */\n onEmptyChange?: (isEmpty: boolean) => void;\n /** Renders the Clear/Undo buttons. Default `true`. */\n showActions?: boolean;\n clearLabel?: string;\n undoLabel?: string;\n className?: string;\n}\n\n/**\n * Signature capture on a canvas — the \"sign here\" field of a delivery receipt,\n * a service order, a term of acceptance.\n *\n * Strokes are kept as point lists and the canvas is **redrawn** from them, which\n * is what makes `undo` possible at all: a canvas holds pixels, not history, so\n * removing the last stroke means replaying the rest.\n *\n * The backing store is scaled by `devicePixelRatio`, so the line is crisp on a\n * phone instead of the blurry 1x bitmap a naive canvas produces.\n *\n * @example\n * ```tsx\n * const pad = useRef<SignaturePadHandle>(null);\n * const [empty, setEmpty] = useState(true);\n *\n * async function submit() {\n * const blob = await pad.current?.toBlob(\"image/png\");\n * if (blob) await api.upload(\"/receipts/42/signature\", blob);\n * }\n *\n * <SignaturePad ref={pad} label=\"Assinatura do cliente\" onEmptyChange={setEmpty} />\n * <Button disabled={empty} onClick={submit}>Enviar</Button>\n * ```\n */\nexport const SignaturePad = forwardRef<SignaturePadHandle, SignaturePadProps>(function SignaturePad(\n {\n width = 400,\n height = 160,\n penColor,\n penWidth = 2,\n disabled = false,\n label = \"Signature\",\n onBegin,\n onEnd,\n onEmptyChange,\n showActions = true,\n clearLabel = \"Clear\",\n undoLabel = \"Undo\",\n className,\n },\n ref,\n) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const strokesRef = useRef<Point[][]>([]);\n const drawingRef = useRef(false);\n const [isEmpty, setIsEmpty] = useState(true);\n\n const resolvePenColor = useCallback((): string => {\n if (penColor) return penColor;\n const canvas = canvasRef.current;\n if (!canvas || typeof window === \"undefined\") return \"#101828\";\n return window.getComputedStyle(canvas).color || \"#101828\";\n }, [penColor]);\n\n /**\n * Repaint the whole surface from the stroke list, honouring the pixel ratio.\n *\n * A one-point stroke (a tap) gets a line back to its own origin: `stroke()`\n * over a path with a single point paints nothing, so without it a tap would\n * silently produce no dot while still counting as \"not empty\".\n */\n const redraw = useCallback((): void => {\n const canvas = canvasRef.current;\n const context = canvas?.getContext(\"2d\");\n if (!canvas || !context) return;\n\n const ratio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio || 1;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n context.setTransform(ratio, 0, 0, ratio, 0, 0);\n context.clearRect(0, 0, width, height);\n\n context.lineWidth = penWidth;\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n context.strokeStyle = resolvePenColor();\n\n for (const stroke of strokesRef.current) {\n if (stroke.length === 0) continue;\n context.beginPath();\n context.moveTo(stroke[0].x, stroke[0].y);\n for (const point of stroke.slice(1)) {\n context.lineTo(point.x, point.y);\n }\n if (stroke.length === 1) context.lineTo(stroke[0].x, stroke[0].y);\n context.stroke();\n }\n }, [height, penWidth, resolvePenColor, width]);\n\n useEffect(() => {\n redraw();\n }, [redraw]);\n\n const setEmptiness = useCallback(\n (next: boolean): void => {\n setIsEmpty((current) => {\n if (current !== next) onEmptyChange?.(next);\n return next;\n });\n },\n [onEmptyChange],\n );\n\n const pointFrom = useCallback((event: ReactPointerEvent<HTMLCanvasElement>): Point => {\n const rect = canvasRef.current?.getBoundingClientRect();\n return {\n x: event.clientX - (rect?.left ?? 0),\n y: event.clientY - (rect?.top ?? 0),\n };\n }, []);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (disabled) return;\n drawingRef.current = true;\n strokesRef.current = [...strokesRef.current, [pointFrom(event)]];\n canvasRef.current?.setPointerCapture?.(event.pointerId);\n onBegin?.();\n setEmptiness(false);\n redraw();\n },\n [disabled, onBegin, pointFrom, redraw, setEmptiness],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (!drawingRef.current || disabled) return;\n const strokes = strokesRef.current;\n strokes[strokes.length - 1].push(pointFrom(event));\n redraw();\n },\n [disabled, pointFrom, redraw],\n );\n\n const handlePointerUp = useCallback(\n (event: ReactPointerEvent<HTMLCanvasElement>): void => {\n if (!drawingRef.current) return;\n drawingRef.current = false;\n canvasRef.current?.releasePointerCapture?.(event.pointerId);\n onEnd?.(canvasRef.current?.toDataURL() ?? \"\");\n },\n [onEnd],\n );\n\n const clear = useCallback((): void => {\n strokesRef.current = [];\n setEmptiness(true);\n redraw();\n }, [redraw, setEmptiness]);\n\n const undo = useCallback((): void => {\n strokesRef.current = strokesRef.current.slice(0, -1);\n setEmptiness(strokesRef.current.length === 0);\n redraw();\n }, [redraw, setEmptiness]);\n\n useImperativeHandle(\n ref,\n () => ({\n clear,\n undo,\n isEmpty: () => strokesRef.current.length === 0,\n toDataURL: (type, quality) => canvasRef.current?.toDataURL(type, quality) ?? \"\",\n toBlob: (type, quality) =>\n new Promise((resolve) => {\n const canvas = canvasRef.current;\n if (!canvas?.toBlob) {\n resolve(null);\n return;\n }\n canvas.toBlob((blob) => resolve(blob), type, quality);\n }),\n }),\n [clear, undo],\n );\n\n return (\n <div className={cn(styles.pad, disabled && styles.disabled, className)}>\n <canvas\n ref={canvasRef}\n role=\"img\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n className={styles.canvas}\n style={{ width, height, touchAction: \"none\" }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n />\n {showActions ? (\n <div className={styles.actions}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={undo}\n disabled={disabled || isEmpty}\n >\n {undoLabel}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={clear}\n disabled={disabled || isEmpty}\n >\n {clearLabel}\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignaturePad.module.cjs","names":[],"sources":["../../../src/components/SignaturePad/SignaturePad.module.css"],"sourcesContent":[".pad {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.canvas {\n color: var(--tempest-text);\n background-color: var(--tempest-bg);\n border: 1px dashed var(--tempest-border-strong);\n border-radius: var(--tempest-radius-md);\n cursor: crosshair;\n}\n\n.canvas: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.actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--tempest-space-2);\n}\n\n.disabled .canvas {\n cursor: not-allowed;\n opacity: 0.6;\n background-color: var(--tempest-surface-2);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SignaturePad.module.cjs","names":["pad","canvas","actions","disabled","SignaturePad_module_default"],"sources":["../../../src/components/SignaturePad/SignaturePad.module.css"],"sourcesContent":[".pad {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.canvas {\n color: var(--tempest-text);\n background-color: var(--tempest-bg);\n border: 1px dashed var(--tempest-border-strong);\n border-radius: var(--tempest-radius-md);\n cursor: crosshair;\n}\n\n.canvas: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.actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--tempest-space-2);\n}\n\n.disabled .canvas {\n cursor: not-allowed;\n opacity: 0.6;\n background-color: var(--tempest-surface-2);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignaturePad.module.js","names":[],"sources":["../../../src/components/SignaturePad/SignaturePad.module.css"],"sourcesContent":[".pad {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.canvas {\n color: var(--tempest-text);\n background-color: var(--tempest-bg);\n border: 1px dashed var(--tempest-border-strong);\n border-radius: var(--tempest-radius-md);\n cursor: crosshair;\n}\n\n.canvas: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.actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--tempest-space-2);\n}\n\n.disabled .canvas {\n cursor: not-allowed;\n opacity: 0.6;\n background-color: var(--tempest-surface-2);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SignaturePad.module.js","names":["pad","canvas","actions","disabled","SignaturePad_module_default"],"sources":["../../../src/components/SignaturePad/SignaturePad.module.css"],"sourcesContent":[".pad {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.canvas {\n color: var(--tempest-text);\n background-color: var(--tempest-bg);\n border: 1px dashed var(--tempest-border-strong);\n border-radius: var(--tempest-radius-md);\n cursor: crosshair;\n}\n\n.canvas: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.actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--tempest-space-2);\n}\n\n.disabled .canvas {\n cursor: not-allowed;\n opacity: 0.6;\n background-color: var(--tempest-surface-2);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.cjs","names":[],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Skeleton.module.css\";\n\nexport interface SkeletonProps {\n variant?: \"rect\" | \"text\" | \"circle\";\n width?: number | string;\n height?: number | string;\n className?: string;\n style?: CSSProperties;\n}\n\n/** Loading placeholder block. Use `variant=\"text\"` for inline lines, `circle` for avatars. */\nexport function Skeleton({ variant = \"rect\", width, height, className, style }: SkeletonProps) {\n return (\n <span\n aria-hidden\n className={cn(\n styles.skeleton,\n variant === \"text\" && styles.text,\n variant === \"circle\" && styles.circle,\n className,\n )}\n style={{ width, height, ...style }}\n />\n );\n}\n"],"mappings":"4GAaA,SAAgB,EAAS,CAAE,UAAU,OAAQ,QAAO,SAAQ,YAAW,SAAwB,CAC3F,OACI,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,cAAA,GACA,UAAW,EAAA,GACP,EAAA,QAAO,SACP,IAAY,QAAU,EAAA,QAAO,KAC7B,IAAY,UAAY,EAAA,QAAO,OAC/B,CACJ,EACA,MAAO,CAAE,QAAO,SAAQ,GAAG,CAAM,CACpC,CAAA,CAET"}
1
+ {"version":3,"file":"Skeleton.cjs","names":["cn","styles","require_cn","require_Skeleton_module","react_jsx_runtime","Skeleton","variant","className","style"],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Skeleton.module.css\";\n\nexport interface SkeletonProps {\n variant?: \"rect\" | \"text\" | \"circle\";\n width?: number | string;\n height?: number | string;\n className?: string;\n style?: CSSProperties;\n}\n\n/** Loading placeholder block. Use `variant=\"text\"` for inline lines, `circle` for avatars. */\nexport function Skeleton({ variant = \"rect\", width, height, className, style }: SkeletonProps) {\n return (\n <span\n aria-hidden\n className={cn(\n styles.skeleton,\n variant === \"text\" && styles.text,\n variant === \"circle\" && styles.circle,\n className,\n )}\n style={{ width, height, ...style }}\n />\n );\n}\n"],"mappings":"A,4GAaA,SAAgBK,EAAS,CAAE,UAAU,OAAQ,QAAO,SAAQ,YAAW,SAAwB,CAC3F,OACI,EAAAD,EAAA,IAAA,CAAC,OAAD,CACI,cAAA,GACA,UAAWJ,EAAAA,GACPC,EAAAA,QAAO,SACPK,IAAY,QAAUL,EAAAA,QAAO,KAC7BK,IAAY,UAAYL,EAAAA,QAAO,OAC/BM,CACJ,EACA,MAAO,CAAE,QAAO,SAAQ,GAAGC,CAAM,CACpC,CAAA,CAET,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","names":[],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Skeleton.module.css\";\n\nexport interface SkeletonProps {\n variant?: \"rect\" | \"text\" | \"circle\";\n width?: number | string;\n height?: number | string;\n className?: string;\n style?: CSSProperties;\n}\n\n/** Loading placeholder block. Use `variant=\"text\"` for inline lines, `circle` for avatars. */\nexport function Skeleton({ variant = \"rect\", width, height, className, style }: SkeletonProps) {\n return (\n <span\n aria-hidden\n className={cn(\n styles.skeleton,\n variant === \"text\" && styles.text,\n variant === \"circle\" && styles.circle,\n className,\n )}\n style={{ width, height, ...style }}\n />\n );\n}\n"],"mappings":";;;;AAaA,SAAgB,EAAS,EAAE,aAAU,QAAQ,UAAO,WAAQ,cAAW,YAAwB;CAC3F,OACI,kBAAC,QAAD;EACI,eAAA;EACA,WAAW,EACP,EAAO,UACP,MAAY,UAAU,EAAO,MAC7B,MAAY,YAAY,EAAO,QAC/B,CACJ;EACA,OAAO;GAAE;GAAO;GAAQ,GAAG;EAAM;CACpC,CAAA;AAET"}
1
+ {"version":3,"file":"Skeleton.js","names":["styles","Skeleton_module_default","Skeleton","cn","variant","className","style"],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Skeleton.module.css\";\n\nexport interface SkeletonProps {\n variant?: \"rect\" | \"text\" | \"circle\";\n width?: number | string;\n height?: number | string;\n className?: string;\n style?: CSSProperties;\n}\n\n/** Loading placeholder block. Use `variant=\"text\"` for inline lines, `circle` for avatars. */\nexport function Skeleton({ variant = \"rect\", width, height, className, style }: SkeletonProps) {\n return (\n <span\n aria-hidden\n className={cn(\n styles.skeleton,\n variant === \"text\" && styles.text,\n variant === \"circle\" && styles.circle,\n className,\n )}\n style={{ width, height, ...style }}\n />\n );\n}\n"],"mappings":";;;;AAaA,SAAgBE,EAAS,EAAE,aAAU,QAAQ,UAAO,WAAQ,cAAW,YAAwB;CAC3F,OACI,kBAAC,QAAD;EACI,eAAA;EACA,WAAWC,EACPH,EAAO,UACPI,MAAY,UAAUJ,EAAO,MAC7BI,MAAY,YAAYJ,EAAO,QAC/BK,CACJ;EACA,OAAO;GAAE;GAAO;GAAQ,GAAGC;EAAM;CACpC,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.module.cjs","names":[],"sources":["../../../src/components/Skeleton/Skeleton.module.css"],"sourcesContent":[".skeleton {\n display: block;\n background: linear-gradient(\n 90deg,\n var(--tempest-surface) 0%,\n var(--tempest-surface-2) 50%,\n var(--tempest-surface) 100%\n );\n background-size: 200% 100%;\n border-radius: var(--tempest-radius-md);\n animation: tempest-skeleton 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.text {\n height: var(--tempest-text-base);\n border-radius: var(--tempest-radius-sm);\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.rect {\n border-radius: var(--tempest-radius-md);\n}\n\n@keyframes tempest-skeleton {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .skeleton {\n animation: none;\n background: var(--tempest-surface-2);\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Skeleton.module.cjs","names":["skeleton","tempestSkeleton","text","circle","rect","Skeleton_module_default"],"sources":["../../../src/components/Skeleton/Skeleton.module.css"],"sourcesContent":[".skeleton {\n display: block;\n background: linear-gradient(\n 90deg,\n var(--tempest-surface) 0%,\n var(--tempest-surface-2) 50%,\n var(--tempest-surface) 100%\n );\n background-size: 200% 100%;\n border-radius: var(--tempest-radius-md);\n animation: tempest-skeleton 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.text {\n height: var(--tempest-text-base);\n border-radius: var(--tempest-radius-sm);\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.rect {\n border-radius: var(--tempest-radius-md);\n}\n\n@keyframes tempest-skeleton {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .skeleton {\n animation: none;\n background: var(--tempest-surface-2);\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.module.js","names":[],"sources":["../../../src/components/Skeleton/Skeleton.module.css"],"sourcesContent":[".skeleton {\n display: block;\n background: linear-gradient(\n 90deg,\n var(--tempest-surface) 0%,\n var(--tempest-surface-2) 50%,\n var(--tempest-surface) 100%\n );\n background-size: 200% 100%;\n border-radius: var(--tempest-radius-md);\n animation: tempest-skeleton 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.text {\n height: var(--tempest-text-base);\n border-radius: var(--tempest-radius-sm);\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.rect {\n border-radius: var(--tempest-radius-md);\n}\n\n@keyframes tempest-skeleton {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .skeleton {\n animation: none;\n background: var(--tempest-surface-2);\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Skeleton.module.js","names":["skeleton","tempestSkeleton","text","circle","rect","Skeleton_module_default"],"sources":["../../../src/components/Skeleton/Skeleton.module.css"],"sourcesContent":[".skeleton {\n display: block;\n background: linear-gradient(\n 90deg,\n var(--tempest-surface) 0%,\n var(--tempest-surface-2) 50%,\n var(--tempest-surface) 100%\n );\n background-size: 200% 100%;\n border-radius: var(--tempest-radius-md);\n animation: tempest-skeleton 1.4s var(--tempest-ease-in-out) infinite;\n}\n\n.text {\n height: var(--tempest-text-base);\n border-radius: var(--tempest-radius-sm);\n}\n\n.circle {\n border-radius: 50%;\n}\n\n.rect {\n border-radius: var(--tempest-radius-md);\n}\n\n@keyframes tempest-skeleton {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .skeleton {\n animation: none;\n background: var(--tempest-surface-2);\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.cjs","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — min, max, step, value, onChange, formatValue plus\n * the field chrome (label, helperText, disabled, className). Every one is used by\n * the range variant too — the pair is deliberately the same API.\n */\nimport { useCallback, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps {\n /** Current value. */\n value: number;\n /** Called with the new value on every change. */\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n /** Formatter for the value badge next to the label. Defaults to the raw number. */\n formatValue?: (value: number) => string;\n /**\n * Accessible name, for when the visible `label` block does not fit.\n *\n * A slider in a one-line footer, a table cell or a toolbar has no room for the\n * label row above the track, and without this every such control announces\n * itself as \"Slider\" — several on the same screen become indistinguishable to a\n * screen reader. Takes precedence over `label`; wrapping the field in an outer\n * `<label>` does not work, because an explicit `aria-label` on the input wins\n * the accessible-name precedence order.\n */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * Single-thumb slider built on a native `<input type=\"range\">`, so it stays\n * accessible (keyboard + screen reader) with no positioning libs. The active\n * fill is a percentage-width bar. For a two-thumb range, use `RangeSlider`.\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n helperText,\n disabled = false,\n formatValue,\n \"aria-label\": ariaLabel,\n className,\n}: SliderProps) {\n const pct = useMemo(() => {\n const range = max - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }, [value, min, max]);\n\n const valueText = formatValue?.(value) ?? String(value);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>): void => {\n onChange(Number(event.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {label && (\n <div className={styles.label}>\n <span>{label}</span>\n <span className={styles.value}>{valueText}</span>\n </div>\n )}\n <div className={styles.field}>\n <div className={styles.track} />\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n <input\n type=\"range\"\n className={styles.input}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel ?? label ?? \"Slider\"}\n aria-valuetext={valueText}\n />\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":"6HAyCA,SAAgB,EAAO,CACnB,QACA,WACA,MAAM,EACN,MAAM,IACN,OAAO,EACP,QACA,aACA,WAAW,GACX,cACA,aAAc,EACd,aACY,CACZ,IAAM,GAAA,EAAM,EAAA,QAAA,KAAc,CACtB,IAAM,EAAQ,EAAM,EAEpB,OADI,GAAS,EAAU,EAChB,KAAK,IAAI,IAAK,KAAK,IAAI,GAAK,EAAQ,GAAO,EAAS,GAAG,CAAC,CACnE,EAAG,CAAC,EAAO,EAAK,CAAG,CAAC,EAEd,EAAY,IAAc,CAAK,GAAK,OAAO,CAAK,EAEhD,GAAA,EAAe,EAAA,YAAA,CAChB,GAAqD,CAClD,EAAS,OAAO,EAAM,OAAO,KAAK,CAAC,CACvC,EACA,CAAC,CAAQ,CACb,EAEA,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,CAAS,EAA5C,SAAA,CACK,IACG,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAA,SAAO,CAAY,CAAA,GACnB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAgB,CAAA,CAC/C,KAET,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAQ,CAAA,GAC/B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAM,MAAO,CAAE,MAAO,GAAG,EAAI,EAAG,CAAI,CAAA,GAC3D,EAAA,EAAA,IAAA,CAAC,QAAD,CACI,KAAK,QACL,UAAW,EAAA,QAAO,MACb,MACA,MACC,OACC,QACP,SAAU,EACA,WACV,aAAY,GAAa,GAAS,SAClC,iBAAgB,CACnB,CAAA,CACA,IACJ,IAAc,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,OAAS,SAAA,CAAiB,CAAA,CAChE,GAEb"}
1
+ {"version":3,"file":"Slider.cjs","names":["useMemo","useCallback","cn","styles","require_cn","require_Slider_module","react","react_jsx_runtime","Slider","ariaLabel","pct","range","max","min","value","valueText","formatValue","handleChange","onChange","event","className","label","helperText"],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — min, max, step, value, onChange, formatValue plus\n * the field chrome (label, helperText, disabled, className). Every one is used by\n * the range variant too — the pair is deliberately the same API.\n */\nimport { useCallback, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps {\n /** Current value. */\n value: number;\n /** Called with the new value on every change. */\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n /** Formatter for the value badge next to the label. Defaults to the raw number. */\n formatValue?: (value: number) => string;\n /**\n * Accessible name, for when the visible `label` block does not fit.\n *\n * A slider in a one-line footer, a table cell or a toolbar has no room for the\n * label row above the track, and without this every such control announces\n * itself as \"Slider\" — several on the same screen become indistinguishable to a\n * screen reader. Takes precedence over `label`; wrapping the field in an outer\n * `<label>` does not work, because an explicit `aria-label` on the input wins\n * the accessible-name precedence order.\n */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * Single-thumb slider built on a native `<input type=\"range\">`, so it stays\n * accessible (keyboard + screen reader) with no positioning libs. The active\n * fill is a percentage-width bar. For a two-thumb range, use `RangeSlider`.\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n helperText,\n disabled = false,\n formatValue,\n \"aria-label\": ariaLabel,\n className,\n}: SliderProps) {\n const pct = useMemo(() => {\n const range = max - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }, [value, min, max]);\n\n const valueText = formatValue?.(value) ?? String(value);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>): void => {\n onChange(Number(event.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {label && (\n <div className={styles.label}>\n <span>{label}</span>\n <span className={styles.value}>{valueText}</span>\n </div>\n )}\n <div className={styles.field}>\n <div className={styles.track} />\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n <input\n type=\"range\"\n className={styles.input}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel ?? label ?? \"Slider\"}\n aria-valuetext={valueText}\n />\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":"A,6HAyCA,SAAgBQ,EAAO,CACnB,QACA,WACA,MAAM,EACN,MAAM,IACN,OAAO,EACP,QACA,aACA,WAAW,GACX,cACA,aAAcC,EACd,aACY,CACZ,IAAMC,GAAA,EAAMV,EAAAA,QAAAA,KAAc,CACtB,IAAMW,EAAQC,EAAMC,EAEpB,OADIF,GAAS,EAAU,EAChB,KAAK,IAAI,IAAK,KAAK,IAAI,GAAKG,EAAQD,GAAOF,EAAS,GAAG,CAAC,CACnE,EAAG,CAACG,EAAOD,EAAKD,CAAG,CAAC,EAEdG,EAAYC,IAAcF,CAAK,GAAK,OAAOA,CAAK,EAEhDG,GAAA,EAAehB,EAAAA,YAAAA,CAChB,GAAqD,CAClDiB,EAAS,OAAOC,EAAM,OAAO,KAAK,CAAC,CACvC,EACA,CAACD,CAAQ,CACb,EAEA,OACI,EAAAX,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWL,EAAAA,GAAGC,EAAAA,QAAO,QAASiB,CAAS,EAA5C,SAAA,CACKC,IACG,EAAAd,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,MAAvB,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,OAAD,CAAA,SAAOc,CAAY,CAAA,GACnB,EAAAd,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,MAAQ,SAAAY,CAAgB,CAAA,CAC/C,C,IAET,EAAAR,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,MAAvB,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,KAAQ,CAAA,GAC/B,EAAAI,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,KAAM,MAAO,CAAE,MAAO,GAAGO,EAAI,EAAG,CAAI,CAAA,GAC3D,EAAAH,EAAA,IAAA,CAAC,QAAD,CACI,KAAK,QACL,UAAWJ,EAAAA,QAAO,MACb,MACA,MACC,OACC,QACP,SAAUc,EACA,WACV,aAAYR,GAAaY,GAAS,SAClC,iBAAgBN,CACnB,CAAA,CACA,C,GACJO,IAAc,EAAAf,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,OAAS,SAAAmB,CAAiB,CAAA,CAChE,C,EAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — min, max, step, value, onChange, formatValue plus\n * the field chrome (label, helperText, disabled, className). Every one is used by\n * the range variant too — the pair is deliberately the same API.\n */\nimport { useCallback, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps {\n /** Current value. */\n value: number;\n /** Called with the new value on every change. */\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n /** Formatter for the value badge next to the label. Defaults to the raw number. */\n formatValue?: (value: number) => string;\n /**\n * Accessible name, for when the visible `label` block does not fit.\n *\n * A slider in a one-line footer, a table cell or a toolbar has no room for the\n * label row above the track, and without this every such control announces\n * itself as \"Slider\" — several on the same screen become indistinguishable to a\n * screen reader. Takes precedence over `label`; wrapping the field in an outer\n * `<label>` does not work, because an explicit `aria-label` on the input wins\n * the accessible-name precedence order.\n */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * Single-thumb slider built on a native `<input type=\"range\">`, so it stays\n * accessible (keyboard + screen reader) with no positioning libs. The active\n * fill is a percentage-width bar. For a two-thumb range, use `RangeSlider`.\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n helperText,\n disabled = false,\n formatValue,\n \"aria-label\": ariaLabel,\n className,\n}: SliderProps) {\n const pct = useMemo(() => {\n const range = max - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }, [value, min, max]);\n\n const valueText = formatValue?.(value) ?? String(value);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>): void => {\n onChange(Number(event.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {label && (\n <div className={styles.label}>\n <span>{label}</span>\n <span className={styles.value}>{valueText}</span>\n </div>\n )}\n <div className={styles.field}>\n <div className={styles.track} />\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n <input\n type=\"range\"\n className={styles.input}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel ?? label ?? \"Slider\"}\n aria-valuetext={valueText}\n />\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":";;;;;AAyCA,SAAgB,EAAO,EACnB,UACA,aACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,UACA,eACA,cAAW,IACX,gBACA,cAAc,GACd,gBACY;CACZ,IAAM,IAAM,QAAc;EACtB,IAAM,IAAQ,IAAM;EAEpB,OADI,KAAS,IAAU,IAChB,KAAK,IAAI,KAAK,KAAK,IAAI,IAAK,IAAQ,KAAO,IAAS,GAAG,CAAC;CACnE,GAAG;EAAC;EAAO;EAAK;CAAG,CAAC,GAEd,IAAY,IAAc,CAAK,KAAK,OAAO,CAAK,GAEhD,IAAe,GAChB,MAAqD;EAClD,EAAS,OAAO,EAAM,OAAO,KAAK,CAAC;CACvC,GACA,CAAC,CAAQ,CACb;CAEA,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,SAAS,CAAS;EAA5C,UAAA;GACK,KACG,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAvB,UAAA,CACI,kBAAC,QAAD,EAAA,UAAO,EAAY,CAAA,GACnB,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAQ,UAAA;IAAgB,CAAA,CAC/C;;GAET,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAvB,UAAA;KACI,kBAAC,OAAD,EAAK,WAAW,EAAO,MAAQ,CAAA;KAC/B,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAM,OAAO,EAAE,OAAO,GAAG,EAAI,GAAG;KAAI,CAAA;KAC3D,kBAAC,SAAD;MACI,MAAK;MACL,WAAW,EAAO;MACb;MACA;MACC;MACC;MACP,UAAU;MACA;MACV,cAAY,KAAa,KAAS;MAClC,kBAAgB;KACnB,CAAA;IACA;;GACJ,KAAc,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAS,UAAA;GAAiB,CAAA;EAChE;;AAEb"}
1
+ {"version":3,"file":"Slider.js","names":["styles","Slider_module_default","Slider","ariaLabel","pct","useMemo","range","max","min","value","valueText","formatValue","handleChange","useCallback","event","onChange","cn","className","label","helperText"],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — min, max, step, value, onChange, formatValue plus\n * the field chrome (label, helperText, disabled, className). Every one is used by\n * the range variant too — the pair is deliberately the same API.\n */\nimport { useCallback, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps {\n /** Current value. */\n value: number;\n /** Called with the new value on every change. */\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n /** Formatter for the value badge next to the label. Defaults to the raw number. */\n formatValue?: (value: number) => string;\n /**\n * Accessible name, for when the visible `label` block does not fit.\n *\n * A slider in a one-line footer, a table cell or a toolbar has no room for the\n * label row above the track, and without this every such control announces\n * itself as \"Slider\" — several on the same screen become indistinguishable to a\n * screen reader. Takes precedence over `label`; wrapping the field in an outer\n * `<label>` does not work, because an explicit `aria-label` on the input wins\n * the accessible-name precedence order.\n */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * Single-thumb slider built on a native `<input type=\"range\">`, so it stays\n * accessible (keyboard + screen reader) with no positioning libs. The active\n * fill is a percentage-width bar. For a two-thumb range, use `RangeSlider`.\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n label,\n helperText,\n disabled = false,\n formatValue,\n \"aria-label\": ariaLabel,\n className,\n}: SliderProps) {\n const pct = useMemo(() => {\n const range = max - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }, [value, min, max]);\n\n const valueText = formatValue?.(value) ?? String(value);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>): void => {\n onChange(Number(event.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn(styles.wrapper, className)}>\n {label && (\n <div className={styles.label}>\n <span>{label}</span>\n <span className={styles.value}>{valueText}</span>\n </div>\n )}\n <div className={styles.field}>\n <div className={styles.track} />\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n <input\n type=\"range\"\n className={styles.input}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel ?? label ?? \"Slider\"}\n aria-valuetext={valueText}\n />\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":";;;;;AAyCA,SAAgBE,EAAO,EACnB,UACA,aACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,UACA,eACA,cAAW,IACX,gBACA,cAAcC,GACd,gBACY;CACZ,IAAMC,IAAMC,QAAc;EACtB,IAAMC,IAAQC,IAAMC;EAEpB,OADIF,KAAS,IAAU,IAChB,KAAK,IAAI,KAAK,KAAK,IAAI,IAAKG,IAAQD,KAAOF,IAAS,GAAG,CAAC;CACnE,GAAG;EAACG;EAAOD;EAAKD;CAAG,CAAC,GAEdG,IAAYC,IAAcF,CAAK,KAAK,OAAOA,CAAK,GAEhDG,IAAeC,GAChB,MAAqD;EAClD,EAAS,OAAOC,EAAM,OAAO,KAAK,CAAC;CACvC,GACA,CAACC,CAAQ,CACb;CAEA,OACI,kBAAC,OAAD;EAAK,WAAWC,EAAGhB,EAAO,SAASiB,CAAS;EAA5C,UAAA;GACKC,KACG,kBAAC,OAAD;IAAK,WAAWlB,EAAO;IAAvB,UAAA,CACI,kBAAC,QAAD,EAAA,UAAOkB,EAAY,CAAA,GACnB,kBAAC,QAAD;KAAM,WAAWlB,EAAO;KAAQ,UAAAU;IAAgB,CAAA,CAC/C;;GAET,kBAAC,OAAD;IAAK,WAAWV,EAAO;IAAvB,UAAA;KACI,kBAAC,OAAD,EAAK,WAAWA,EAAO,MAAQ,CAAA;KAC/B,kBAAC,OAAD;MAAK,WAAWA,EAAO;MAAM,OAAO,EAAE,OAAO,GAAGI,EAAI,GAAG;KAAI,CAAA;KAC3D,kBAAC,SAAD;MACI,MAAK;MACL,WAAWJ,EAAO;MACb;MACA;MACC;MACC;MACP,UAAUY;MACA;MACV,cAAYT,KAAae,KAAS;MAClC,kBAAgBR;KACnB,CAAA;IACA;;GACJS,KAAc,kBAAC,QAAD;IAAM,WAAWnB,EAAO;IAAS,UAAAmB;GAAiB,CAAA;EAChE;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.module.cjs","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.value {\n color: var(--tempest-text-muted);\n font-weight: var(--tempest-weight-medium);\n}\n\n.field {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.track {\n position: absolute;\n left: 0;\n right: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-2);\n}\n\n.fill {\n position: absolute;\n left: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-primary);\n}\n\n.input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 28px;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n}\n\n.input::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input:focus-visible::-webkit-slider-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n.input:focus-visible::-moz-range-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.input:disabled::-webkit-slider-thumb,\n.input:disabled::-moz-range-thumb {\n border-color: var(--tempest-border-strong);\n cursor: not-allowed;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Slider.module.cjs","names":["wrapper","label","value","field","track","fill","input","helper","Slider_module_default"],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.value {\n color: var(--tempest-text-muted);\n font-weight: var(--tempest-weight-medium);\n}\n\n.field {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.track {\n position: absolute;\n left: 0;\n right: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-2);\n}\n\n.fill {\n position: absolute;\n left: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-primary);\n}\n\n.input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 28px;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n}\n\n.input::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input:focus-visible::-webkit-slider-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n.input:focus-visible::-moz-range-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.input:disabled::-webkit-slider-thumb,\n.input:disabled::-moz-range-thumb {\n border-color: var(--tempest-border-strong);\n cursor: not-allowed;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.module.js","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.value {\n color: var(--tempest-text-muted);\n font-weight: var(--tempest-weight-medium);\n}\n\n.field {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.track {\n position: absolute;\n left: 0;\n right: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-2);\n}\n\n.fill {\n position: absolute;\n left: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-primary);\n}\n\n.input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 28px;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n}\n\n.input::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input:focus-visible::-webkit-slider-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n.input:focus-visible::-moz-range-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.input:disabled::-webkit-slider-thumb,\n.input:disabled::-moz-range-thumb {\n border-color: var(--tempest-border-strong);\n cursor: not-allowed;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Slider.module.js","names":["wrapper","label","value","field","track","fill","input","helper","Slider_module_default"],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n font-family: var(--tempest-font-sans);\n}\n\n.label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.value {\n color: var(--tempest-text-muted);\n font-weight: var(--tempest-weight-medium);\n}\n\n.field {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.track {\n position: absolute;\n left: 0;\n right: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface-2);\n}\n\n.fill {\n position: absolute;\n left: 0;\n height: 4px;\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-primary);\n}\n\n.input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 28px;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n}\n\n.input::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--tempest-bg);\n border: 2px solid var(--tempest-primary);\n box-shadow: var(--tempest-shadow-sm);\n cursor: pointer;\n}\n\n.input:focus-visible::-webkit-slider-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n.input:focus-visible::-moz-range-thumb {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.input:disabled::-webkit-slider-thumb,\n.input:disabled::-moz-range-thumb {\n border-color: var(--tempest-border-strong);\n cursor: not-allowed;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.cjs","names":[],"sources":["../../../src/components/Spacer/Spacer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spacer.module.css\";\n\nexport type SpacerAxis = \"both\" | \"x\" | \"y\";\n\nexport interface SpacerProps extends HTMLAttributes<HTMLDivElement> {\n /** Axis to flex along. Default `\"both\"` (`flex: 1`). */\n axis?: SpacerAxis;\n}\n\n/**\n * Flex spacer — pushes siblings apart inside a flex container. Equivalent\n * to `<div style={{ flex: 1 }}>` but typed and intent-revealing.\n *\n * @example\n * <Stack direction=\"horizontal\">\n * <Button>Cancelar</Button>\n * <Spacer />\n * <Button variant=\"primary\">Salvar</Button>\n * </Stack>\n */\nexport function Spacer({ axis = \"both\", className, ...props }: SpacerProps) {\n return <div className={cn(styles.spacer, styles[axis], className)} {...props} />;\n}\n"],"mappings":"0GAsBA,SAAgB,EAAO,CAAE,OAAO,OAAQ,YAAW,GAAG,GAAsB,CACxE,OAAO,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,OAAQ,EAAA,QAAO,GAAO,CAAS,EAAG,GAAI,CAAQ,CAAA,CACnF"}
1
+ {"version":3,"file":"Spacer.cjs","names":["cn","styles","require_cn","require_Spacer_module","react_jsx_runtime","Spacer","props","axis","className"],"sources":["../../../src/components/Spacer/Spacer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spacer.module.css\";\n\nexport type SpacerAxis = \"both\" | \"x\" | \"y\";\n\nexport interface SpacerProps extends HTMLAttributes<HTMLDivElement> {\n /** Axis to flex along. Default `\"both\"` (`flex: 1`). */\n axis?: SpacerAxis;\n}\n\n/**\n * Flex spacer — pushes siblings apart inside a flex container. Equivalent\n * to `<div style={{ flex: 1 }}>` but typed and intent-revealing.\n *\n * @example\n * <Stack direction=\"horizontal\">\n * <Button>Cancelar</Button>\n * <Spacer />\n * <Button variant=\"primary\">Salvar</Button>\n * </Stack>\n */\nexport function Spacer({ axis = \"both\", className, ...props }: SpacerProps) {\n return <div className={cn(styles.spacer, styles[axis], className)} {...props} />;\n}\n"],"mappings":"A,0GAsBA,SAAgBK,EAAO,CAAE,OAAO,OAAQ,YAAW,GAAGC,GAAsB,CACxE,OAAO,EAAAF,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,OAAQA,EAAAA,QAAOM,GAAOC,CAAS,EAAG,GAAIF,CAAQ,CAAA,CACnF,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.js","names":[],"sources":["../../../src/components/Spacer/Spacer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spacer.module.css\";\n\nexport type SpacerAxis = \"both\" | \"x\" | \"y\";\n\nexport interface SpacerProps extends HTMLAttributes<HTMLDivElement> {\n /** Axis to flex along. Default `\"both\"` (`flex: 1`). */\n axis?: SpacerAxis;\n}\n\n/**\n * Flex spacer — pushes siblings apart inside a flex container. Equivalent\n * to `<div style={{ flex: 1 }}>` but typed and intent-revealing.\n *\n * @example\n * <Stack direction=\"horizontal\">\n * <Button>Cancelar</Button>\n * <Spacer />\n * <Button variant=\"primary\">Salvar</Button>\n * </Stack>\n */\nexport function Spacer({ axis = \"both\", className, ...props }: SpacerProps) {\n return <div className={cn(styles.spacer, styles[axis], className)} {...props} />;\n}\n"],"mappings":";;;;AAsBA,SAAgB,EAAO,EAAE,UAAO,QAAQ,cAAW,GAAG,KAAsB;CACxE,OAAO,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,QAAQ,EAAO,IAAO,CAAS;EAAG,GAAI;CAAQ,CAAA;AACnF"}
1
+ {"version":3,"file":"Spacer.js","names":["styles","Spacer_module_default","Spacer","props","cn","axis","className"],"sources":["../../../src/components/Spacer/Spacer.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spacer.module.css\";\n\nexport type SpacerAxis = \"both\" | \"x\" | \"y\";\n\nexport interface SpacerProps extends HTMLAttributes<HTMLDivElement> {\n /** Axis to flex along. Default `\"both\"` (`flex: 1`). */\n axis?: SpacerAxis;\n}\n\n/**\n * Flex spacer — pushes siblings apart inside a flex container. Equivalent\n * to `<div style={{ flex: 1 }}>` but typed and intent-revealing.\n *\n * @example\n * <Stack direction=\"horizontal\">\n * <Button>Cancelar</Button>\n * <Spacer />\n * <Button variant=\"primary\">Salvar</Button>\n * </Stack>\n */\nexport function Spacer({ axis = \"both\", className, ...props }: SpacerProps) {\n return <div className={cn(styles.spacer, styles[axis], className)} {...props} />;\n}\n"],"mappings":";;;;AAsBA,SAAgBE,EAAO,EAAE,UAAO,QAAQ,cAAW,GAAGC,KAAsB;CACxE,OAAO,kBAAC,OAAD;EAAK,WAAWC,EAAGJ,EAAO,QAAQA,EAAOK,IAAOC,CAAS;EAAG,GAAIH;CAAQ,CAAA;AACnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.module.cjs","names":[],"sources":["../../../src/components/Spacer/Spacer.module.css"],"sourcesContent":[".spacer.both {\n flex: 1 1 auto;\n}\n\n.spacer.x {\n flex: 1 0 auto;\n width: auto;\n}\n\n.spacer.y {\n flex: 1 0 auto;\n height: auto;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Spacer.module.cjs","names":["spacer","both","x","y","Spacer_module_default"],"sources":["../../../src/components/Spacer/Spacer.module.css"],"sourcesContent":[".spacer.both {\n flex: 1 1 auto;\n}\n\n.spacer.x {\n flex: 1 0 auto;\n width: auto;\n}\n\n.spacer.y {\n flex: 1 0 auto;\n height: auto;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.module.js","names":[],"sources":["../../../src/components/Spacer/Spacer.module.css"],"sourcesContent":[".spacer.both {\n flex: 1 1 auto;\n}\n\n.spacer.x {\n flex: 1 0 auto;\n width: auto;\n}\n\n.spacer.y {\n flex: 1 0 auto;\n height: auto;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Spacer.module.js","names":["spacer","both","x","y","Spacer_module_default"],"sources":["../../../src/components/Spacer/Spacer.module.css"],"sourcesContent":[".spacer.both {\n flex: 1 1 auto;\n}\n\n.spacer.x {\n flex: 1 0 auto;\n width: auto;\n}\n\n.spacer.y {\n flex: 1 0 auto;\n height: auto;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.cjs","names":[],"sources":["../../../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — an inline chart with no chart library: data plus its\n * scale (min, max), its box (width, height), its look (variant, color, showEnd) and\n * its accessibility (valueFormatter, label). The formatter and label matter because\n * a sparkline has no axes to read.\n */\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { areaPath, barRects, describeSeries, linePath, sparkPoints } from \"./sparkline-geometry\";\nimport styles from \"./Sparkline.module.css\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** The series, in order. Non-finite entries are skipped. */\n data: readonly number[];\n /** Drawing width in px. Default `88`. */\n width?: number;\n /** Drawing height in px. Default `24`. */\n height?: number;\n /** Which mark to draw. Default `\"line\"`. */\n variant?: SparklineVariant;\n /** Any CSS colour. Defaults to the first chart series token. */\n color?: string;\n /** Draw a dot on the last point. Default `true` for line and area. */\n showEnd?: boolean;\n /** Force the low end of the value axis — use it to compare several sparklines. */\n min?: number;\n /** Force the high end. */\n max?: number;\n /** Render a value; used in the accessible description. */\n valueFormatter?: (value: number) => string;\n /**\n * Accessible name. Defaults to a sentence describing the series.\n *\n * Pass one when the surrounding text already says what is plotted — the default\n * still appends the shape, so a caller never ends up with an unlabelled image.\n */\n label?: string;\n}\n\n/**\n * A tiny inline chart: shape only, no axes, no legend.\n *\n * Sized to sit in a table cell or beside a number, which is why it is plain SVG on\n * the root entry rather than a recharts wrapper — a sparkline in a data table should\n * not oblige an app to install a charting library.\n *\n * It carries `role=\"img\"` and a spoken description of the series (direction, ends,\n * extremes). Without that it is an unlabelled image: a sparkline has no axis or\n * legend to fall back on, so a screen reader would reach it and read nothing. Pair it\n * with the number it annotates — the shape is context, never the only way to read the\n * value.\n *\n * @example\n * <Sparkline data={last30Days} />\n * <Sparkline data={revenue} variant=\"area\" width={120} height={32} />\n *\n * // Same axis across a column, so the rows are comparable\n * <Sparkline data={row.series} min={0} max={columnMax} />\n */\nexport function Sparkline({\n data,\n width = 88,\n height = 24,\n variant = \"line\",\n color = \"var(--tempest-chart-1)\",\n showEnd,\n min,\n max,\n valueFormatter,\n label,\n className,\n ...rest\n}: SparklineProps) {\n const points = sparkPoints({ values: data, width, height, min, max });\n const description = label ?? describeSeries(data, valueFormatter);\n const withEnd = showEnd ?? variant !== \"bar\";\n const last = points[points.length - 1];\n\n /*\n * Bars grow from the bottom of the box; line and area close against it. Both use\n * the same edge so a sparkline swapped between variants keeps its footprint.\n */\n const baselineY = height - 2;\n\n return (\n <span className={cn(styles.wrapper, className)} {...rest}>\n <svg\n className={styles.svg}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={description}\n >\n {points.length > 0 && variant === \"area\" && (\n <path d={areaPath(points, baselineY)} fill={color} className={styles.area} />\n )}\n\n {points.length > 0 && variant !== \"bar\" && (\n <path\n d={linePath(points)}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n\n {variant === \"bar\" &&\n barRects(points, { width, baselineY }).map((rect) => (\n <rect\n key={rect.point.index}\n x={rect.x}\n y={rect.y}\n width={rect.width}\n height={rect.height}\n rx={1}\n fill={color}\n />\n ))}\n\n {withEnd && last && (\n /*\n * The ring is drawn in the surface colour rather than as a stroke on\n * the dot: it keeps the marker legible where it sits on top of the\n * line without adding ink that is not data.\n */\n <circle\n cx={last.x}\n cy={last.y}\n r={3}\n fill={color}\n stroke=\"var(--tempest-bg)\"\n strokeWidth={2}\n />\n )}\n </svg>\n </span>\n );\n}\n"],"mappings":"mJA+DA,SAAgB,EAAU,CACtB,OACA,QAAQ,GACR,SAAS,GACT,UAAU,OACV,QAAQ,yBACR,UACA,MACA,MACA,iBACA,QACA,YACA,GAAG,GACY,CACf,IAAM,EAAS,EAAA,YAAY,CAAE,OAAQ,EAAM,QAAO,SAAQ,MAAK,KAAI,CAAC,EAC9D,EAAc,GAAS,EAAA,eAAe,EAAM,CAAc,EAC1D,EAAU,GAAW,IAAY,MACjC,EAAO,EAAO,EAAO,OAAS,GAM9B,EAAY,EAAS,EAE3B,OACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,CAAS,EAAG,GAAI,EAChD,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,UAAW,EAAA,QAAO,IACX,QACC,SACR,QAAS,OAAO,EAAM,GAAG,IACzB,KAAK,MACL,aAAY,EANhB,SAAA,CAQK,EAAO,OAAS,GAAK,IAAY,SAC9B,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,EAAG,EAAA,SAAS,EAAQ,CAAS,EAAG,KAAM,EAAO,UAAW,EAAA,QAAO,IAAO,CAAA,EAG/E,EAAO,OAAS,GAAK,IAAY,QAC9B,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,EAAG,EAAA,SAAS,CAAM,EAClB,KAAK,OACL,OAAQ,EACR,YAAa,EACb,cAAc,QACd,eAAe,OAClB,CAAA,EAGJ,IAAY,OACT,EAAA,SAAS,EAAQ,CAAE,QAAO,WAAU,CAAC,CAAC,CAAC,IAAK,IACxC,EAAA,EAAA,IAAA,CAAC,OAAD,CAEI,EAAG,EAAK,EACR,EAAG,EAAK,EACR,MAAO,EAAK,MACZ,OAAQ,EAAK,OACb,GAAI,EACJ,KAAM,CACT,EAPQ,EAAK,MAAM,KAOnB,CACJ,EAEJ,GAAW,IAMR,EAAA,EAAA,IAAA,CAAC,SAAD,CACI,GAAI,EAAK,EACT,GAAI,EAAK,EACT,EAAG,EACH,KAAM,EACN,OAAO,oBACP,YAAa,CAChB,CAAA,CAEJ,GACH,CAAA,CAEd"}
1
+ {"version":3,"file":"Sparkline.cjs","names":["sparkPoints","describeSeries","cn","styles","areaPath","linePath","barRects","require_cn","require_sparkline_geometry","require_Sparkline_module","react_jsx_runtime","Sparkline","rest","points","data","description","label","valueFormatter","withEnd","showEnd","variant","last","baselineY","height","className","width","color","rect"],"sources":["../../../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — an inline chart with no chart library: data plus its\n * scale (min, max), its box (width, height), its look (variant, color, showEnd) and\n * its accessibility (valueFormatter, label). The formatter and label matter because\n * a sparkline has no axes to read.\n */\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { areaPath, barRects, describeSeries, linePath, sparkPoints } from \"./sparkline-geometry\";\nimport styles from \"./Sparkline.module.css\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** The series, in order. Non-finite entries are skipped. */\n data: readonly number[];\n /** Drawing width in px. Default `88`. */\n width?: number;\n /** Drawing height in px. Default `24`. */\n height?: number;\n /** Which mark to draw. Default `\"line\"`. */\n variant?: SparklineVariant;\n /** Any CSS colour. Defaults to the first chart series token. */\n color?: string;\n /** Draw a dot on the last point. Default `true` for line and area. */\n showEnd?: boolean;\n /** Force the low end of the value axis — use it to compare several sparklines. */\n min?: number;\n /** Force the high end. */\n max?: number;\n /** Render a value; used in the accessible description. */\n valueFormatter?: (value: number) => string;\n /**\n * Accessible name. Defaults to a sentence describing the series.\n *\n * Pass one when the surrounding text already says what is plotted — the default\n * still appends the shape, so a caller never ends up with an unlabelled image.\n */\n label?: string;\n}\n\n/**\n * A tiny inline chart: shape only, no axes, no legend.\n *\n * Sized to sit in a table cell or beside a number, which is why it is plain SVG on\n * the root entry rather than a recharts wrapper — a sparkline in a data table should\n * not oblige an app to install a charting library.\n *\n * It carries `role=\"img\"` and a spoken description of the series (direction, ends,\n * extremes). Without that it is an unlabelled image: a sparkline has no axis or\n * legend to fall back on, so a screen reader would reach it and read nothing. Pair it\n * with the number it annotates — the shape is context, never the only way to read the\n * value.\n *\n * @example\n * <Sparkline data={last30Days} />\n * <Sparkline data={revenue} variant=\"area\" width={120} height={32} />\n *\n * // Same axis across a column, so the rows are comparable\n * <Sparkline data={row.series} min={0} max={columnMax} />\n */\nexport function Sparkline({\n data,\n width = 88,\n height = 24,\n variant = \"line\",\n color = \"var(--tempest-chart-1)\",\n showEnd,\n min,\n max,\n valueFormatter,\n label,\n className,\n ...rest\n}: SparklineProps) {\n const points = sparkPoints({ values: data, width, height, min, max });\n const description = label ?? describeSeries(data, valueFormatter);\n const withEnd = showEnd ?? variant !== \"bar\";\n const last = points[points.length - 1];\n\n /*\n * Bars grow from the bottom of the box; line and area close against it. Both use\n * the same edge so a sparkline swapped between variants keeps its footprint.\n */\n const baselineY = height - 2;\n\n return (\n <span className={cn(styles.wrapper, className)} {...rest}>\n <svg\n className={styles.svg}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={description}\n >\n {points.length > 0 && variant === \"area\" && (\n <path d={areaPath(points, baselineY)} fill={color} className={styles.area} />\n )}\n\n {points.length > 0 && variant !== \"bar\" && (\n <path\n d={linePath(points)}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n\n {variant === \"bar\" &&\n barRects(points, { width, baselineY }).map((rect) => (\n <rect\n key={rect.point.index}\n x={rect.x}\n y={rect.y}\n width={rect.width}\n height={rect.height}\n rx={1}\n fill={color}\n />\n ))}\n\n {withEnd && last && (\n /*\n * The ring is drawn in the surface colour rather than as a stroke on\n * the dot: it keeps the marker legible where it sits on top of the\n * line without adding ink that is not data.\n */\n <circle\n cx={last.x}\n cy={last.y}\n r={3}\n fill={color}\n stroke=\"var(--tempest-bg)\"\n strokeWidth={2}\n />\n )}\n </svg>\n </span>\n );\n}\n"],"mappings":"A,mJA+DA,SAAgBW,EAAU,CACtB,OACA,QAAQ,GACR,SAAS,GACT,UAAU,OACV,QAAQ,yBACR,UACA,MACA,MACA,iBACA,QACA,YACA,GAAGC,GACY,CACf,IAAMC,EAASb,EAAAA,YAAY,CAAE,OAAQc,EAAM,QAAO,SAAQ,MAAK,KAAI,CAAC,EAC9DC,EAAcC,GAASf,EAAAA,eAAea,EAAMG,CAAc,EAC1DC,EAAUC,GAAWC,IAAY,MACjCC,EAAOR,EAAOA,EAAO,OAAS,GAM9BS,EAAYC,EAAS,EAE3B,OACI,EAAAb,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,QAASqB,CAAS,EAAG,GAAIZ,EAChD,UAAA,EAAAF,EAAA,KAAA,CAAC,MAAD,CACI,UAAWP,EAAAA,QAAO,IACX,QACC,SACR,QAAS,OAAOsB,EAAM,GAAGF,IACzB,KAAK,MACL,aAAYR,EANhB,SAAA,CAQKF,EAAO,OAAS,GAAKO,IAAY,SAC9B,EAAAV,EAAA,IAAA,CAAC,OAAD,CAAM,EAAGN,EAAAA,SAASS,EAAQS,CAAS,EAAG,KAAMI,EAAO,UAAWvB,EAAAA,QAAO,IAAO,CAAA,EAG/EU,EAAO,OAAS,GAAKO,IAAY,QAC9B,EAAAV,EAAA,IAAA,CAAC,OAAD,CACI,EAAGL,EAAAA,SAASQ,CAAM,EAClB,KAAK,OACL,OAAQa,EACR,YAAa,EACb,cAAc,QACd,eAAe,OAClB,CAAA,EAGJN,IAAY,OACTd,EAAAA,SAASO,EAAQ,CAAE,QAAO,WAAU,CAAC,CAAC,CAAC,IAAK,IACxC,EAAAH,EAAA,IAAA,CAAC,OAAD,CAEI,EAAGiB,EAAK,EACR,EAAGA,EAAK,EACR,MAAOA,EAAK,MACZ,OAAQA,EAAK,OACb,GAAI,EACJ,KAAMD,CACT,EAPQC,EAAK,MAAM,KAOnB,CACJ,EAEJT,GAAWG,IAMR,EAAAX,EAAA,IAAA,CAAC,SAAD,CACI,GAAIW,EAAK,EACT,GAAIA,EAAK,EACT,EAAG,EACH,KAAMK,EACN,OAAO,oBACP,YAAa,CAChB,CAAA,CAEJ,C,EACH,CAAA,CAEd,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.js","names":[],"sources":["../../../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — an inline chart with no chart library: data plus its\n * scale (min, max), its box (width, height), its look (variant, color, showEnd) and\n * its accessibility (valueFormatter, label). The formatter and label matter because\n * a sparkline has no axes to read.\n */\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { areaPath, barRects, describeSeries, linePath, sparkPoints } from \"./sparkline-geometry\";\nimport styles from \"./Sparkline.module.css\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** The series, in order. Non-finite entries are skipped. */\n data: readonly number[];\n /** Drawing width in px. Default `88`. */\n width?: number;\n /** Drawing height in px. Default `24`. */\n height?: number;\n /** Which mark to draw. Default `\"line\"`. */\n variant?: SparklineVariant;\n /** Any CSS colour. Defaults to the first chart series token. */\n color?: string;\n /** Draw a dot on the last point. Default `true` for line and area. */\n showEnd?: boolean;\n /** Force the low end of the value axis — use it to compare several sparklines. */\n min?: number;\n /** Force the high end. */\n max?: number;\n /** Render a value; used in the accessible description. */\n valueFormatter?: (value: number) => string;\n /**\n * Accessible name. Defaults to a sentence describing the series.\n *\n * Pass one when the surrounding text already says what is plotted — the default\n * still appends the shape, so a caller never ends up with an unlabelled image.\n */\n label?: string;\n}\n\n/**\n * A tiny inline chart: shape only, no axes, no legend.\n *\n * Sized to sit in a table cell or beside a number, which is why it is plain SVG on\n * the root entry rather than a recharts wrapper — a sparkline in a data table should\n * not oblige an app to install a charting library.\n *\n * It carries `role=\"img\"` and a spoken description of the series (direction, ends,\n * extremes). Without that it is an unlabelled image: a sparkline has no axis or\n * legend to fall back on, so a screen reader would reach it and read nothing. Pair it\n * with the number it annotates — the shape is context, never the only way to read the\n * value.\n *\n * @example\n * <Sparkline data={last30Days} />\n * <Sparkline data={revenue} variant=\"area\" width={120} height={32} />\n *\n * // Same axis across a column, so the rows are comparable\n * <Sparkline data={row.series} min={0} max={columnMax} />\n */\nexport function Sparkline({\n data,\n width = 88,\n height = 24,\n variant = \"line\",\n color = \"var(--tempest-chart-1)\",\n showEnd,\n min,\n max,\n valueFormatter,\n label,\n className,\n ...rest\n}: SparklineProps) {\n const points = sparkPoints({ values: data, width, height, min, max });\n const description = label ?? describeSeries(data, valueFormatter);\n const withEnd = showEnd ?? variant !== \"bar\";\n const last = points[points.length - 1];\n\n /*\n * Bars grow from the bottom of the box; line and area close against it. Both use\n * the same edge so a sparkline swapped between variants keeps its footprint.\n */\n const baselineY = height - 2;\n\n return (\n <span className={cn(styles.wrapper, className)} {...rest}>\n <svg\n className={styles.svg}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={description}\n >\n {points.length > 0 && variant === \"area\" && (\n <path d={areaPath(points, baselineY)} fill={color} className={styles.area} />\n )}\n\n {points.length > 0 && variant !== \"bar\" && (\n <path\n d={linePath(points)}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n\n {variant === \"bar\" &&\n barRects(points, { width, baselineY }).map((rect) => (\n <rect\n key={rect.point.index}\n x={rect.x}\n y={rect.y}\n width={rect.width}\n height={rect.height}\n rx={1}\n fill={color}\n />\n ))}\n\n {withEnd && last && (\n /*\n * The ring is drawn in the surface colour rather than as a stroke on\n * the dot: it keeps the marker legible where it sits on top of the\n * line without adding ink that is not data.\n */\n <circle\n cx={last.x}\n cy={last.y}\n r={3}\n fill={color}\n stroke=\"var(--tempest-bg)\"\n strokeWidth={2}\n />\n )}\n </svg>\n </span>\n );\n}\n"],"mappings":";;;;;AA+DA,SAAgB,EAAU,EACtB,SACA,WAAQ,IACR,YAAS,IACT,aAAU,QACV,WAAQ,0BACR,YACA,QACA,QACA,mBACA,UACA,cACA,GAAG,KACY;CACf,IAAM,IAAS,EAAY;EAAE,QAAQ;EAAM;EAAO;EAAQ;EAAK;CAAI,CAAC,GAC9D,IAAc,KAAS,EAAe,GAAM,CAAc,GAC1D,IAAU,KAAW,MAAY,OACjC,IAAO,EAAO,EAAO,SAAS,IAM9B,IAAY,IAAS;CAE3B,OACI,kBAAC,QAAD;EAAM,WAAW,EAAG,EAAO,SAAS,CAAS;EAAG,GAAI;EAChD,UAAA,kBAAC,OAAD;GACI,WAAW,EAAO;GACX;GACC;GACR,SAAS,OAAO,EAAM,GAAG;GACzB,MAAK;GACL,cAAY;GANhB,UAAA;IAQK,EAAO,SAAS,KAAK,MAAY,UAC9B,kBAAC,QAAD;KAAM,GAAG,EAAS,GAAQ,CAAS;KAAG,MAAM;KAAO,WAAW,EAAO;IAAO,CAAA;IAG/E,EAAO,SAAS,KAAK,MAAY,SAC9B,kBAAC,QAAD;KACI,GAAG,EAAS,CAAM;KAClB,MAAK;KACL,QAAQ;KACR,aAAa;KACb,eAAc;KACd,gBAAe;IAClB,CAAA;IAGJ,MAAY,SACT,EAAS,GAAQ;KAAE;KAAO;IAAU,CAAC,CAAC,CAAC,KAAK,MACxC,kBAAC,QAAD;KAEI,GAAG,EAAK;KACR,GAAG,EAAK;KACR,OAAO,EAAK;KACZ,QAAQ,EAAK;KACb,IAAI;KACJ,MAAM;IACT,GAPQ,EAAK,MAAM,KAOnB,CACJ;IAEJ,KAAW,KAMR,kBAAC,UAAD;KACI,IAAI,EAAK;KACT,IAAI,EAAK;KACT,GAAG;KACH,MAAM;KACN,QAAO;KACP,aAAa;IAChB,CAAA;GAEJ;;CACH,CAAA;AAEd"}
1
+ {"version":3,"file":"Sparkline.js","names":["styles","Sparkline_module_default","Sparkline","rest","points","sparkPoints","data","description","label","describeSeries","valueFormatter","withEnd","showEnd","variant","last","baselineY","height","cn","className","width","areaPath","color","linePath","barRects","rect"],"sources":["../../../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — an inline chart with no chart library: data plus its\n * scale (min, max), its box (width, height), its look (variant, color, showEnd) and\n * its accessibility (valueFormatter, label). The formatter and label matter because\n * a sparkline has no axes to read.\n */\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/utils/cn\";\n\nimport { areaPath, barRects, describeSeries, linePath, sparkPoints } from \"./sparkline-geometry\";\nimport styles from \"./Sparkline.module.css\";\n\nexport type SparklineVariant = \"line\" | \"area\" | \"bar\";\n\nexport interface SparklineProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** The series, in order. Non-finite entries are skipped. */\n data: readonly number[];\n /** Drawing width in px. Default `88`. */\n width?: number;\n /** Drawing height in px. Default `24`. */\n height?: number;\n /** Which mark to draw. Default `\"line\"`. */\n variant?: SparklineVariant;\n /** Any CSS colour. Defaults to the first chart series token. */\n color?: string;\n /** Draw a dot on the last point. Default `true` for line and area. */\n showEnd?: boolean;\n /** Force the low end of the value axis — use it to compare several sparklines. */\n min?: number;\n /** Force the high end. */\n max?: number;\n /** Render a value; used in the accessible description. */\n valueFormatter?: (value: number) => string;\n /**\n * Accessible name. Defaults to a sentence describing the series.\n *\n * Pass one when the surrounding text already says what is plotted — the default\n * still appends the shape, so a caller never ends up with an unlabelled image.\n */\n label?: string;\n}\n\n/**\n * A tiny inline chart: shape only, no axes, no legend.\n *\n * Sized to sit in a table cell or beside a number, which is why it is plain SVG on\n * the root entry rather than a recharts wrapper — a sparkline in a data table should\n * not oblige an app to install a charting library.\n *\n * It carries `role=\"img\"` and a spoken description of the series (direction, ends,\n * extremes). Without that it is an unlabelled image: a sparkline has no axis or\n * legend to fall back on, so a screen reader would reach it and read nothing. Pair it\n * with the number it annotates — the shape is context, never the only way to read the\n * value.\n *\n * @example\n * <Sparkline data={last30Days} />\n * <Sparkline data={revenue} variant=\"area\" width={120} height={32} />\n *\n * // Same axis across a column, so the rows are comparable\n * <Sparkline data={row.series} min={0} max={columnMax} />\n */\nexport function Sparkline({\n data,\n width = 88,\n height = 24,\n variant = \"line\",\n color = \"var(--tempest-chart-1)\",\n showEnd,\n min,\n max,\n valueFormatter,\n label,\n className,\n ...rest\n}: SparklineProps) {\n const points = sparkPoints({ values: data, width, height, min, max });\n const description = label ?? describeSeries(data, valueFormatter);\n const withEnd = showEnd ?? variant !== \"bar\";\n const last = points[points.length - 1];\n\n /*\n * Bars grow from the bottom of the box; line and area close against it. Both use\n * the same edge so a sparkline swapped between variants keeps its footprint.\n */\n const baselineY = height - 2;\n\n return (\n <span className={cn(styles.wrapper, className)} {...rest}>\n <svg\n className={styles.svg}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={description}\n >\n {points.length > 0 && variant === \"area\" && (\n <path d={areaPath(points, baselineY)} fill={color} className={styles.area} />\n )}\n\n {points.length > 0 && variant !== \"bar\" && (\n <path\n d={linePath(points)}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n\n {variant === \"bar\" &&\n barRects(points, { width, baselineY }).map((rect) => (\n <rect\n key={rect.point.index}\n x={rect.x}\n y={rect.y}\n width={rect.width}\n height={rect.height}\n rx={1}\n fill={color}\n />\n ))}\n\n {withEnd && last && (\n /*\n * The ring is drawn in the surface colour rather than as a stroke on\n * the dot: it keeps the marker legible where it sits on top of the\n * line without adding ink that is not data.\n */\n <circle\n cx={last.x}\n cy={last.y}\n r={3}\n fill={color}\n stroke=\"var(--tempest-bg)\"\n strokeWidth={2}\n />\n )}\n </svg>\n </span>\n );\n}\n"],"mappings":";;;;;AA+DA,SAAgBE,EAAU,EACtB,SACA,WAAQ,IACR,YAAS,IACT,aAAU,QACV,WAAQ,0BACR,YACA,QACA,QACA,mBACA,UACA,cACA,GAAGC,KACY;CACf,IAAMC,IAASC,EAAY;EAAE,QAAQC;EAAM;EAAO;EAAQ;EAAK;CAAI,CAAC,GAC9DC,IAAcC,KAASC,EAAeH,GAAMI,CAAc,GAC1DC,IAAUC,KAAWC,MAAY,OACjCC,IAAOV,EAAOA,EAAO,SAAS,IAM9BW,IAAYC,IAAS;CAE3B,OACI,kBAAC,QAAD;EAAM,WAAWC,EAAGjB,EAAO,SAASkB,CAAS;EAAG,GAAIf;EAChD,UAAA,kBAAC,OAAD;GACI,WAAWH,EAAO;GACX;GACC;GACR,SAAS,OAAOmB,EAAM,GAAGH;GACzB,MAAK;GACL,cAAYT;GANhB,UAAA;IAQKH,EAAO,SAAS,KAAKS,MAAY,UAC9B,kBAAC,QAAD;KAAM,GAAGO,EAAShB,GAAQW,CAAS;KAAG,MAAMM;KAAO,WAAWrB,EAAO;IAAO,CAAA;IAG/EI,EAAO,SAAS,KAAKS,MAAY,SAC9B,kBAAC,QAAD;KACI,GAAGS,EAASlB,CAAM;KAClB,MAAK;KACL,QAAQiB;KACR,aAAa;KACb,eAAc;KACd,gBAAe;IAClB,CAAA;IAGJR,MAAY,SACTU,EAASnB,GAAQ;KAAE;KAAO;IAAU,CAAC,CAAC,CAAC,KAAK,MACxC,kBAAC,QAAD;KAEI,GAAGoB,EAAK;KACR,GAAGA,EAAK;KACR,OAAOA,EAAK;KACZ,QAAQA,EAAK;KACb,IAAI;KACJ,MAAMH;IACT,GAPQG,EAAK,MAAM,KAOnB,CACJ;IAEJb,KAAWG,KAMR,kBAAC,UAAD;KACI,IAAIA,EAAK;KACT,IAAIA,EAAK;KACT,GAAG;KACH,MAAMO;KACN,QAAO;KACP,aAAa;IAChB,CAAA;GAEJ;;CACH,CAAA;AAEd"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.module.cjs","names":[],"sources":["../../../src/components/Sparkline/Sparkline.module.css"],"sourcesContent":[".wrapper {\n display: inline-flex;\n align-items: center;\n /*\n * `middle` rather than the inline default: a sparkline sits beside a number, and\n * a baseline-aligned SVG hangs low enough to look like it fell off the line.\n */\n vertical-align: middle;\n line-height: 0;\n}\n\n.svg {\n display: block;\n overflow: visible;\n}\n\n/*\n * A wash, never a saturated block — the fill is context for the line, and at full\n * strength it competes with the mark that actually carries the data.\n */\n.area {\n opacity: 0.12;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Sparkline.module.cjs","names":["wrapper","svg","area","Sparkline_module_default"],"sources":["../../../src/components/Sparkline/Sparkline.module.css"],"sourcesContent":[".wrapper {\n display: inline-flex;\n align-items: center;\n /*\n * `middle` rather than the inline default: a sparkline sits beside a number, and\n * a baseline-aligned SVG hangs low enough to look like it fell off the line.\n */\n vertical-align: middle;\n line-height: 0;\n}\n\n.svg {\n display: block;\n overflow: visible;\n}\n\n/*\n * A wash, never a saturated block — the fill is context for the line, and at full\n * strength it competes with the mark that actually carries the data.\n */\n.area {\n opacity: 0.12;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.module.js","names":[],"sources":["../../../src/components/Sparkline/Sparkline.module.css"],"sourcesContent":[".wrapper {\n display: inline-flex;\n align-items: center;\n /*\n * `middle` rather than the inline default: a sparkline sits beside a number, and\n * a baseline-aligned SVG hangs low enough to look like it fell off the line.\n */\n vertical-align: middle;\n line-height: 0;\n}\n\n.svg {\n display: block;\n overflow: visible;\n}\n\n/*\n * A wash, never a saturated block — the fill is context for the line, and at full\n * strength it competes with the mark that actually carries the data.\n */\n.area {\n opacity: 0.12;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Sparkline.module.js","names":["wrapper","svg","area","Sparkline_module_default"],"sources":["../../../src/components/Sparkline/Sparkline.module.css"],"sourcesContent":[".wrapper {\n display: inline-flex;\n align-items: center;\n /*\n * `middle` rather than the inline default: a sparkline sits beside a number, and\n * a baseline-aligned SVG hangs low enough to look like it fell off the line.\n */\n vertical-align: middle;\n line-height: 0;\n}\n\n.svg {\n display: block;\n overflow: visible;\n}\n\n/*\n * A wash, never a saturated block — the fill is context for the line, and at full\n * strength it competes with the mark that actually carries the data.\n */\n.area {\n opacity: 0.12;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline-geometry.cjs","names":[],"sources":["../../../src/components/Sparkline/sparkline-geometry.ts"],"sourcesContent":["/** A point in the sparkline's own coordinate space. */\nexport interface SparkPoint {\n x: number;\n y: number;\n /** The datum this point came from. */\n value: number;\n /** Its position in the input series. */\n index: number;\n}\n\nexport interface SparkGeometryOptions {\n values: readonly number[];\n width: number;\n height: number;\n /** Room reserved on every side for the end marker's ring, so it is never clipped. */\n padding?: number;\n /** Force the low end of the value axis. Defaults to the series minimum. */\n min?: number;\n /** Force the high end. Defaults to the series maximum. */\n max?: number;\n}\n\n/**\n * Project a series onto the drawing box.\n *\n * `y` is inverted — SVG grows downward and a chart grows upward — and a flat series\n * is centred rather than pinned to an edge, which is the honest reading of \"no\n * variation\" and avoids dividing by a zero-height domain.\n *\n * Non-finite values are dropped rather than drawn: a `NaN` in the middle of a path\n * silently voids the whole `d` attribute and the sparkline disappears with no error.\n *\n * @param options - The series and the box to fit it in.\n * @returns The projected points, in input order.\n */\nexport function sparkPoints({\n values,\n width,\n height,\n padding = 2,\n min,\n max,\n}: SparkGeometryOptions): SparkPoint[] {\n const usable = values\n .map((value, index) => ({ value, index }))\n .filter((item) => Number.isFinite(item.value));\n if (usable.length === 0 || width <= 0 || height <= 0) return [];\n\n const numbers = usable.map((item) => item.value);\n const lo = min ?? Math.min(...numbers);\n const hi = max ?? Math.max(...numbers);\n const span = hi - lo;\n\n const innerW = Math.max(0, width - padding * 2);\n const innerH = Math.max(0, height - padding * 2);\n const lastIndex = usable.length - 1;\n\n return usable.map((item, i) => {\n const t = lastIndex === 0 ? 0.5 : i / lastIndex;\n const v = span === 0 ? 0.5 : (item.value - lo) / span;\n return {\n x: padding + t * innerW,\n y: padding + (1 - Math.min(1, Math.max(0, v))) * innerH,\n value: item.value,\n index: item.index,\n };\n });\n}\n\n/** An SVG `d` for a polyline through the points. */\nexport function linePath(points: readonly SparkPoint[]): string {\n if (points.length === 0) return \"\";\n if (points.length === 1) {\n // A lone point has no line; emit a zero-length segment so the round cap\n // still paints a dot rather than nothing at all.\n const [only] = points;\n return `M ${only.x} ${only.y} L ${only.x} ${only.y}`;\n }\n return points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n}\n\n/**\n * An SVG `d` for the area under the line, closed along the baseline.\n *\n * @param points - The projected points.\n * @param baselineY - Where the fill closes, in the same space as the points.\n */\nexport function areaPath(points: readonly SparkPoint[], baselineY: number): string {\n if (points.length === 0) return \"\";\n const line = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n const first = points[0];\n const last = points[points.length - 1];\n return `${line} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;\n}\n\n/** Bar rectangles growing from the baseline, with the band's leftover left as air. */\nexport function barRects(\n points: readonly SparkPoint[],\n { width, baselineY, gap = 2 }: { width: number; baselineY: number; gap?: number },\n): { x: number; y: number; width: number; height: number; point: SparkPoint }[] {\n if (points.length === 0) return [];\n const band = width / points.length;\n // Never fill the slot: the gap between bars is what separates them, not a stroke.\n const barWidth = Math.max(1, Math.min(24, band - gap));\n return points.map((point) => {\n /*\n * The minimum value sits on the baseline, where the raw height is 0. It still\n * needs a visible sliver — but growing *up* from the baseline, not down: the\n * naive `Math.max(1, …)` on height alone leaves the bar hanging one pixel\n * below the axis it is supposed to stand on.\n */\n const height = Math.max(1, Math.abs(baselineY - point.y));\n return {\n x: point.x - barWidth / 2,\n y: Math.min(point.y, baselineY - height),\n width: barWidth,\n height,\n point,\n };\n });\n}\n\n/**\n * A one-sentence description of the series, for the chart's accessible name.\n *\n * A sparkline has no axes and no legend, so without this it is an unlabelled image:\n * a screen reader reaches it and reads nothing. Direction is stated in words rather\n * than implied by the shape.\n *\n * @param values - The series, in order.\n * @param format - How to render a single value.\n * @returns Text suitable for `aria-label`.\n */\nexport function describeSeries(\n values: readonly number[],\n format: (value: number) => string = String,\n): string {\n const usable = values.filter((v) => Number.isFinite(v));\n if (usable.length === 0) return \"Sem dados\";\n if (usable.length === 1) return `Valor único: ${format(usable[0])}`;\n\n const first = usable[0];\n const last = usable[usable.length - 1];\n const direction = last > first ? \"subindo\" : last < first ? \"descendo\" : \"estável\";\n return (\n `${usable.length} pontos, ${direction}. ` +\n `Início ${format(first)}, fim ${format(last)}. ` +\n `Mínimo ${format(Math.min(...usable))}, máximo ${format(Math.max(...usable))}.`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sparkline-geometry.cjs","names":["sparkPoints","usable","values","item","width","height","numbers","lo","min","span","max","innerW","padding","innerH","lastIndex","t","i","v","linePath","points","only","p","areaPath","line","first","baselineY","barRects","band","barWidth","gap","point","describeSeries","format","last","direction"],"sources":["../../../src/components/Sparkline/sparkline-geometry.ts"],"sourcesContent":["/** A point in the sparkline's own coordinate space. */\nexport interface SparkPoint {\n x: number;\n y: number;\n /** The datum this point came from. */\n value: number;\n /** Its position in the input series. */\n index: number;\n}\n\nexport interface SparkGeometryOptions {\n values: readonly number[];\n width: number;\n height: number;\n /** Room reserved on every side for the end marker's ring, so it is never clipped. */\n padding?: number;\n /** Force the low end of the value axis. Defaults to the series minimum. */\n min?: number;\n /** Force the high end. Defaults to the series maximum. */\n max?: number;\n}\n\n/**\n * Project a series onto the drawing box.\n *\n * `y` is inverted — SVG grows downward and a chart grows upward — and a flat series\n * is centred rather than pinned to an edge, which is the honest reading of \"no\n * variation\" and avoids dividing by a zero-height domain.\n *\n * Non-finite values are dropped rather than drawn: a `NaN` in the middle of a path\n * silently voids the whole `d` attribute and the sparkline disappears with no error.\n *\n * @param options - The series and the box to fit it in.\n * @returns The projected points, in input order.\n */\nexport function sparkPoints({\n values,\n width,\n height,\n padding = 2,\n min,\n max,\n}: SparkGeometryOptions): SparkPoint[] {\n const usable = values\n .map((value, index) => ({ value, index }))\n .filter((item) => Number.isFinite(item.value));\n if (usable.length === 0 || width <= 0 || height <= 0) return [];\n\n const numbers = usable.map((item) => item.value);\n const lo = min ?? Math.min(...numbers);\n const hi = max ?? Math.max(...numbers);\n const span = hi - lo;\n\n const innerW = Math.max(0, width - padding * 2);\n const innerH = Math.max(0, height - padding * 2);\n const lastIndex = usable.length - 1;\n\n return usable.map((item, i) => {\n const t = lastIndex === 0 ? 0.5 : i / lastIndex;\n const v = span === 0 ? 0.5 : (item.value - lo) / span;\n return {\n x: padding + t * innerW,\n y: padding + (1 - Math.min(1, Math.max(0, v))) * innerH,\n value: item.value,\n index: item.index,\n };\n });\n}\n\n/** An SVG `d` for a polyline through the points. */\nexport function linePath(points: readonly SparkPoint[]): string {\n if (points.length === 0) return \"\";\n if (points.length === 1) {\n // A lone point has no line; emit a zero-length segment so the round cap\n // still paints a dot rather than nothing at all.\n const [only] = points;\n return `M ${only.x} ${only.y} L ${only.x} ${only.y}`;\n }\n return points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n}\n\n/**\n * An SVG `d` for the area under the line, closed along the baseline.\n *\n * @param points - The projected points.\n * @param baselineY - Where the fill closes, in the same space as the points.\n */\nexport function areaPath(points: readonly SparkPoint[], baselineY: number): string {\n if (points.length === 0) return \"\";\n const line = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n const first = points[0];\n const last = points[points.length - 1];\n return `${line} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;\n}\n\n/** Bar rectangles growing from the baseline, with the band's leftover left as air. */\nexport function barRects(\n points: readonly SparkPoint[],\n { width, baselineY, gap = 2 }: { width: number; baselineY: number; gap?: number },\n): { x: number; y: number; width: number; height: number; point: SparkPoint }[] {\n if (points.length === 0) return [];\n const band = width / points.length;\n // Never fill the slot: the gap between bars is what separates them, not a stroke.\n const barWidth = Math.max(1, Math.min(24, band - gap));\n return points.map((point) => {\n /*\n * The minimum value sits on the baseline, where the raw height is 0. It still\n * needs a visible sliver — but growing *up* from the baseline, not down: the\n * naive `Math.max(1, …)` on height alone leaves the bar hanging one pixel\n * below the axis it is supposed to stand on.\n */\n const height = Math.max(1, Math.abs(baselineY - point.y));\n return {\n x: point.x - barWidth / 2,\n y: Math.min(point.y, baselineY - height),\n width: barWidth,\n height,\n point,\n };\n });\n}\n\n/**\n * A one-sentence description of the series, for the chart's accessible name.\n *\n * A sparkline has no axes and no legend, so without this it is an unlabelled image:\n * a screen reader reaches it and reads nothing. Direction is stated in words rather\n * than implied by the shape.\n *\n * @param values - The series, in order.\n * @param format - How to render a single value.\n * @returns Text suitable for `aria-label`.\n */\nexport function describeSeries(\n values: readonly number[],\n format: (value: number) => string = String,\n): string {\n const usable = values.filter((v) => Number.isFinite(v));\n if (usable.length === 0) return \"Sem dados\";\n if (usable.length === 1) return `Valor único: ${format(usable[0])}`;\n\n const first = usable[0];\n const last = usable[usable.length - 1];\n const direction = last > first ? \"subindo\" : last < first ? \"descendo\" : \"estável\";\n return (\n `${usable.length} pontos, ${direction}. ` +\n `Início ${format(first)}, fim ${format(last)}. ` +\n `Mínimo ${format(Math.min(...usable))}, máximo ${format(Math.max(...usable))}.`\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline-geometry.js","names":[],"sources":["../../../src/components/Sparkline/sparkline-geometry.ts"],"sourcesContent":["/** A point in the sparkline's own coordinate space. */\nexport interface SparkPoint {\n x: number;\n y: number;\n /** The datum this point came from. */\n value: number;\n /** Its position in the input series. */\n index: number;\n}\n\nexport interface SparkGeometryOptions {\n values: readonly number[];\n width: number;\n height: number;\n /** Room reserved on every side for the end marker's ring, so it is never clipped. */\n padding?: number;\n /** Force the low end of the value axis. Defaults to the series minimum. */\n min?: number;\n /** Force the high end. Defaults to the series maximum. */\n max?: number;\n}\n\n/**\n * Project a series onto the drawing box.\n *\n * `y` is inverted — SVG grows downward and a chart grows upward — and a flat series\n * is centred rather than pinned to an edge, which is the honest reading of \"no\n * variation\" and avoids dividing by a zero-height domain.\n *\n * Non-finite values are dropped rather than drawn: a `NaN` in the middle of a path\n * silently voids the whole `d` attribute and the sparkline disappears with no error.\n *\n * @param options - The series and the box to fit it in.\n * @returns The projected points, in input order.\n */\nexport function sparkPoints({\n values,\n width,\n height,\n padding = 2,\n min,\n max,\n}: SparkGeometryOptions): SparkPoint[] {\n const usable = values\n .map((value, index) => ({ value, index }))\n .filter((item) => Number.isFinite(item.value));\n if (usable.length === 0 || width <= 0 || height <= 0) return [];\n\n const numbers = usable.map((item) => item.value);\n const lo = min ?? Math.min(...numbers);\n const hi = max ?? Math.max(...numbers);\n const span = hi - lo;\n\n const innerW = Math.max(0, width - padding * 2);\n const innerH = Math.max(0, height - padding * 2);\n const lastIndex = usable.length - 1;\n\n return usable.map((item, i) => {\n const t = lastIndex === 0 ? 0.5 : i / lastIndex;\n const v = span === 0 ? 0.5 : (item.value - lo) / span;\n return {\n x: padding + t * innerW,\n y: padding + (1 - Math.min(1, Math.max(0, v))) * innerH,\n value: item.value,\n index: item.index,\n };\n });\n}\n\n/** An SVG `d` for a polyline through the points. */\nexport function linePath(points: readonly SparkPoint[]): string {\n if (points.length === 0) return \"\";\n if (points.length === 1) {\n // A lone point has no line; emit a zero-length segment so the round cap\n // still paints a dot rather than nothing at all.\n const [only] = points;\n return `M ${only.x} ${only.y} L ${only.x} ${only.y}`;\n }\n return points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n}\n\n/**\n * An SVG `d` for the area under the line, closed along the baseline.\n *\n * @param points - The projected points.\n * @param baselineY - Where the fill closes, in the same space as the points.\n */\nexport function areaPath(points: readonly SparkPoint[], baselineY: number): string {\n if (points.length === 0) return \"\";\n const line = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n const first = points[0];\n const last = points[points.length - 1];\n return `${line} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;\n}\n\n/** Bar rectangles growing from the baseline, with the band's leftover left as air. */\nexport function barRects(\n points: readonly SparkPoint[],\n { width, baselineY, gap = 2 }: { width: number; baselineY: number; gap?: number },\n): { x: number; y: number; width: number; height: number; point: SparkPoint }[] {\n if (points.length === 0) return [];\n const band = width / points.length;\n // Never fill the slot: the gap between bars is what separates them, not a stroke.\n const barWidth = Math.max(1, Math.min(24, band - gap));\n return points.map((point) => {\n /*\n * The minimum value sits on the baseline, where the raw height is 0. It still\n * needs a visible sliver — but growing *up* from the baseline, not down: the\n * naive `Math.max(1, …)` on height alone leaves the bar hanging one pixel\n * below the axis it is supposed to stand on.\n */\n const height = Math.max(1, Math.abs(baselineY - point.y));\n return {\n x: point.x - barWidth / 2,\n y: Math.min(point.y, baselineY - height),\n width: barWidth,\n height,\n point,\n };\n });\n}\n\n/**\n * A one-sentence description of the series, for the chart's accessible name.\n *\n * A sparkline has no axes and no legend, so without this it is an unlabelled image:\n * a screen reader reaches it and reads nothing. Direction is stated in words rather\n * than implied by the shape.\n *\n * @param values - The series, in order.\n * @param format - How to render a single value.\n * @returns Text suitable for `aria-label`.\n */\nexport function describeSeries(\n values: readonly number[],\n format: (value: number) => string = String,\n): string {\n const usable = values.filter((v) => Number.isFinite(v));\n if (usable.length === 0) return \"Sem dados\";\n if (usable.length === 1) return `Valor único: ${format(usable[0])}`;\n\n const first = usable[0];\n const last = usable[usable.length - 1];\n const direction = last > first ? \"subindo\" : last < first ? \"descendo\" : \"estável\";\n return (\n `${usable.length} pontos, ${direction}. ` +\n `Início ${format(first)}, fim ${format(last)}. ` +\n `Mínimo ${format(Math.min(...usable))}, máximo ${format(Math.max(...usable))}.`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sparkline-geometry.js","names":["sparkPoints","usable","values","item","width","height","numbers","lo","min","span","max","innerW","padding","innerH","lastIndex","t","i","v","linePath","points","only","p","areaPath","line","first","baselineY","barRects","band","barWidth","gap","point","describeSeries","format","last","direction"],"sources":["../../../src/components/Sparkline/sparkline-geometry.ts"],"sourcesContent":["/** A point in the sparkline's own coordinate space. */\nexport interface SparkPoint {\n x: number;\n y: number;\n /** The datum this point came from. */\n value: number;\n /** Its position in the input series. */\n index: number;\n}\n\nexport interface SparkGeometryOptions {\n values: readonly number[];\n width: number;\n height: number;\n /** Room reserved on every side for the end marker's ring, so it is never clipped. */\n padding?: number;\n /** Force the low end of the value axis. Defaults to the series minimum. */\n min?: number;\n /** Force the high end. Defaults to the series maximum. */\n max?: number;\n}\n\n/**\n * Project a series onto the drawing box.\n *\n * `y` is inverted — SVG grows downward and a chart grows upward — and a flat series\n * is centred rather than pinned to an edge, which is the honest reading of \"no\n * variation\" and avoids dividing by a zero-height domain.\n *\n * Non-finite values are dropped rather than drawn: a `NaN` in the middle of a path\n * silently voids the whole `d` attribute and the sparkline disappears with no error.\n *\n * @param options - The series and the box to fit it in.\n * @returns The projected points, in input order.\n */\nexport function sparkPoints({\n values,\n width,\n height,\n padding = 2,\n min,\n max,\n}: SparkGeometryOptions): SparkPoint[] {\n const usable = values\n .map((value, index) => ({ value, index }))\n .filter((item) => Number.isFinite(item.value));\n if (usable.length === 0 || width <= 0 || height <= 0) return [];\n\n const numbers = usable.map((item) => item.value);\n const lo = min ?? Math.min(...numbers);\n const hi = max ?? Math.max(...numbers);\n const span = hi - lo;\n\n const innerW = Math.max(0, width - padding * 2);\n const innerH = Math.max(0, height - padding * 2);\n const lastIndex = usable.length - 1;\n\n return usable.map((item, i) => {\n const t = lastIndex === 0 ? 0.5 : i / lastIndex;\n const v = span === 0 ? 0.5 : (item.value - lo) / span;\n return {\n x: padding + t * innerW,\n y: padding + (1 - Math.min(1, Math.max(0, v))) * innerH,\n value: item.value,\n index: item.index,\n };\n });\n}\n\n/** An SVG `d` for a polyline through the points. */\nexport function linePath(points: readonly SparkPoint[]): string {\n if (points.length === 0) return \"\";\n if (points.length === 1) {\n // A lone point has no line; emit a zero-length segment so the round cap\n // still paints a dot rather than nothing at all.\n const [only] = points;\n return `M ${only.x} ${only.y} L ${only.x} ${only.y}`;\n }\n return points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n}\n\n/**\n * An SVG `d` for the area under the line, closed along the baseline.\n *\n * @param points - The projected points.\n * @param baselineY - Where the fill closes, in the same space as the points.\n */\nexport function areaPath(points: readonly SparkPoint[], baselineY: number): string {\n if (points.length === 0) return \"\";\n const line = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n const first = points[0];\n const last = points[points.length - 1];\n return `${line} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;\n}\n\n/** Bar rectangles growing from the baseline, with the band's leftover left as air. */\nexport function barRects(\n points: readonly SparkPoint[],\n { width, baselineY, gap = 2 }: { width: number; baselineY: number; gap?: number },\n): { x: number; y: number; width: number; height: number; point: SparkPoint }[] {\n if (points.length === 0) return [];\n const band = width / points.length;\n // Never fill the slot: the gap between bars is what separates them, not a stroke.\n const barWidth = Math.max(1, Math.min(24, band - gap));\n return points.map((point) => {\n /*\n * The minimum value sits on the baseline, where the raw height is 0. It still\n * needs a visible sliver — but growing *up* from the baseline, not down: the\n * naive `Math.max(1, …)` on height alone leaves the bar hanging one pixel\n * below the axis it is supposed to stand on.\n */\n const height = Math.max(1, Math.abs(baselineY - point.y));\n return {\n x: point.x - barWidth / 2,\n y: Math.min(point.y, baselineY - height),\n width: barWidth,\n height,\n point,\n };\n });\n}\n\n/**\n * A one-sentence description of the series, for the chart's accessible name.\n *\n * A sparkline has no axes and no legend, so without this it is an unlabelled image:\n * a screen reader reaches it and reads nothing. Direction is stated in words rather\n * than implied by the shape.\n *\n * @param values - The series, in order.\n * @param format - How to render a single value.\n * @returns Text suitable for `aria-label`.\n */\nexport function describeSeries(\n values: readonly number[],\n format: (value: number) => string = String,\n): string {\n const usable = values.filter((v) => Number.isFinite(v));\n if (usable.length === 0) return \"Sem dados\";\n if (usable.length === 1) return `Valor único: ${format(usable[0])}`;\n\n const first = usable[0];\n const last = usable[usable.length - 1];\n const direction = last > first ? \"subindo\" : last < first ? \"descendo\" : \"estável\";\n return (\n `${usable.length} pontos, ${direction}. ` +\n `Início ${format(first)}, fim ${format(last)}. ` +\n `Mínimo ${format(Math.min(...usable))}, máximo ${format(Math.max(...usable))}.`\n );\n}\n"],"mappings":";AAmCA,SAAgBA,EAAY,EACxB,WACA,UACA,WACA,aAAU,GACV,QACA,UACmC;CACnC,IAAMC,IAASC,EACV,KAAK,GAAO,OAAW;EAAE;EAAO;CAAM,EAAE,CAAC,CACzC,QAAQ,MAAS,OAAO,SAASC,EAAK,KAAK,CAAC;CACjD,IAAIF,EAAO,WAAW,KAAKG,KAAS,KAAKC,KAAU,GAAG,OAAO,CAAC;CAE9D,IAAMC,IAAUL,EAAO,KAAK,MAASE,EAAK,KAAK,GACzCI,IAAKC,KAAO,KAAK,IAAI,GAAGF,CAAO,GAE/BG,KADKC,KAAO,KAAK,IAAI,GAAGJ,CAAO,KACnBC,GAEZI,IAAS,KAAK,IAAI,GAAGP,IAAQQ,IAAU,CAAC,GACxCC,IAAS,KAAK,IAAI,GAAGR,IAASO,IAAU,CAAC,GACzCE,IAAYb,EAAO,SAAS;CAElC,OAAOA,EAAO,KAAK,GAAM,MAAM;EAC3B,IAAMc,IAAID,MAAc,IAAI,KAAME,IAAIF,GAChCG,IAAIR,MAAS,IAAI,MAAON,EAAK,QAAQI,KAAME;EACjD,OAAO;GACH,GAAGG,IAAUG,IAAIJ;GACjB,GAAGC,KAAW,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGK,CAAC,CAAC,KAAKJ;GACjD,OAAOV,EAAK;GACZ,OAAOA,EAAK;EAChB;CACJ,CAAC;AACL;AAGA,SAAgBe,EAAS,GAAuC;CAC5D,IAAIC,EAAO,WAAW,GAAG,OAAO;CAChC,IAAIA,EAAO,WAAW,GAAG;EAGrB,IAAM,CAACC,KAAQD;EACf,OAAO,KAAKC,EAAK,EAAE,GAAGA,EAAK,EAAE,KAAKA,EAAK,EAAE,GAAGA,EAAK;CACrD;CACA,OAAOD,EAAO,KAAK,GAAG,MAAM,GAAGH,MAAM,IAAI,MAAM,IAAI,GAAGK,EAAE,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG;AAChF;AAQA,SAAgBC,EAAS,GAA+B,GAA2B;CAC/E,IAAIH,EAAO,WAAW,GAAG,OAAO;CAChC,IAAMI,IAAOJ,EAAO,KAAK,GAAG,MAAM,GAAGH,MAAM,IAAI,MAAM,IAAI,GAAGK,EAAE,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAC5EG,IAAQL,EAAO;CAErB,OAAO,GAAGI,EAAK,KADFJ,EAAOA,EAAO,SAAS,EAChB,CAAK,EAAE,GAAGM,EAAU,KAAKD,EAAM,EAAE,GAAGC,EAAU;AACtE;AAGA,SAAgBC,EACZ,GACA,EAAE,UAAO,cAAW,SAAM,KACkD;CAC5E,IAAIP,EAAO,WAAW,GAAG,OAAO,CAAC;CACjC,IAAMQ,IAAOvB,IAAQe,EAAO,QAEtBS,IAAW,KAAK,IAAI,GAAG,KAAK,IAAI,IAAID,IAAOE,CAAG,CAAC;CACrD,OAAOV,EAAO,KAAK,MAAU;EAOzB,IAAMd,IAAS,KAAK,IAAI,GAAG,KAAK,IAAIoB,IAAYK,EAAM,CAAC,CAAC;EACxD,OAAO;GACH,GAAGA,EAAM,IAAIF,IAAW;GACxB,GAAG,KAAK,IAAIE,EAAM,GAAGL,IAAYpB,CAAM;GACvC,OAAOuB;GACP;GACA;EACJ;CACJ,CAAC;AACL;AAaA,SAAgBG,EACZ,GACA,IAAoC,QAC9B;CACN,IAAM9B,IAASC,EAAO,QAAQ,MAAM,OAAO,SAASe,CAAC,CAAC;CACtD,IAAIhB,EAAO,WAAW,GAAG,OAAO;CAChC,IAAIA,EAAO,WAAW,GAAG,OAAO,gBAAgB+B,EAAO/B,EAAO,EAAE;CAEhE,IAAMuB,IAAQvB,EAAO,IACfgC,IAAOhC,EAAOA,EAAO,SAAS,IAC9BiC,IAAYD,IAAOT,IAAQ,YAAYS,IAAOT,IAAQ,aAAa;CACzE,OACI,GAAGvB,EAAO,OAAO,WAAWiC,EAAU,WAC5BF,EAAOR,CAAK,EAAE,QAAQQ,EAAOC,CAAI,EAAE,WACnCD,EAAO,KAAK,IAAI,GAAG/B,CAAM,CAAC,EAAE,WAAW+B,EAAO,KAAK,IAAI,GAAG/B,CAAM,CAAC,EAAE;AAErF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.cjs","names":[],"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps {\n size?: SpinnerSize;\n className?: string;\n /** Accessible label announced by screen readers. */\n label?: string;\n /**\n * Visible caption rendered under the spinner. When set, the spinner and\n * caption are wrapped in a centered column.\n */\n caption?: ReactNode;\n /**\n * Center the spinner inside a full-area overlay (fills the nearest\n * positioned ancestor; pair with a relative container or a route fallback).\n * Implies the wrapped layout.\n */\n overlay?: boolean;\n}\n\n/**\n * Loading spinner with preset sizes (xs..xl). Provide `label` for screen\n * readers, `caption` for a visible message, and `overlay` to center it inside a\n * full-area container (e.g. a Suspense / route fallback).\n *\n * @example\n * <Spinner />\n * <Spinner size=\"lg\" caption=\"Carregando…\" overlay />\n */\nexport function Spinner({\n size = \"md\",\n className,\n label = \"Carregando\",\n caption,\n overlay = false,\n}: SpinnerProps) {\n const dot = <span aria-hidden className={cn(styles.spinner, styles[size])} />;\n\n if (!overlay && caption === undefined) {\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cn(styles.spinner, styles[size], className)}\n />\n );\n }\n\n return (\n <div\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n className={cn(styles.wrap, overlay && styles.overlay, className)}\n >\n {dot}\n {caption !== undefined && <span className={styles.caption}>{caption}</span>}\n </div>\n );\n}\n"],"mappings":"2GAiCA,SAAgB,EAAQ,CACpB,OAAO,KACP,YACA,QAAQ,aACR,UACA,UAAU,IACG,CACb,IAAM,GAAM,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,cAAA,GAAY,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,EAAA,QAAO,EAAK,CAAI,CAAA,EAY5E,MAVI,CAAC,GAAW,IAAY,IAAA,IAEpB,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,KAAK,SACL,aAAY,EACZ,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,EAAA,QAAO,GAAO,CAAS,CACxD,CAAA,GAKL,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,KAAK,SACL,aAAY,EACZ,YAAU,SACV,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,GAAW,EAAA,QAAO,QAAS,CAAS,EAJnE,SAAA,CAMK,EACA,IAAY,IAAA,KAAa,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAU,SAAA,CAAc,CAAA,CACzE,GAEb"}
1
+ {"version":3,"file":"Spinner.cjs","names":["cn","styles","require_cn","require_Spinner_module","react_jsx_runtime","Spinner","dot","size","overlay","caption","label","className"],"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps {\n size?: SpinnerSize;\n className?: string;\n /** Accessible label announced by screen readers. */\n label?: string;\n /**\n * Visible caption rendered under the spinner. When set, the spinner and\n * caption are wrapped in a centered column.\n */\n caption?: ReactNode;\n /**\n * Center the spinner inside a full-area overlay (fills the nearest\n * positioned ancestor; pair with a relative container or a route fallback).\n * Implies the wrapped layout.\n */\n overlay?: boolean;\n}\n\n/**\n * Loading spinner with preset sizes (xs..xl). Provide `label` for screen\n * readers, `caption` for a visible message, and `overlay` to center it inside a\n * full-area container (e.g. a Suspense / route fallback).\n *\n * @example\n * <Spinner />\n * <Spinner size=\"lg\" caption=\"Carregando…\" overlay />\n */\nexport function Spinner({\n size = \"md\",\n className,\n label = \"Carregando\",\n caption,\n overlay = false,\n}: SpinnerProps) {\n const dot = <span aria-hidden className={cn(styles.spinner, styles[size])} />;\n\n if (!overlay && caption === undefined) {\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cn(styles.spinner, styles[size], className)}\n />\n );\n }\n\n return (\n <div\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n className={cn(styles.wrap, overlay && styles.overlay, className)}\n >\n {dot}\n {caption !== undefined && <span className={styles.caption}>{caption}</span>}\n </div>\n );\n}\n"],"mappings":"A,2GAiCA,SAAgBK,EAAQ,CACpB,OAAO,KACP,YACA,QAAQ,aACR,UACA,UAAU,IACG,CACb,IAAMC,GAAM,EAAAF,EAAA,IAAA,CAAC,OAAD,CAAM,cAAA,GAAY,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,QAASA,EAAAA,QAAOM,EAAK,CAAI,CAAA,EAY5E,MAVI,CAACC,GAAWC,IAAY,IAAA,IAEpB,EAAAL,EAAA,IAAA,CAAC,OAAD,CACI,KAAK,SACL,aAAYM,EACZ,UAAWV,EAAAA,GAAGC,EAAAA,QAAO,QAASA,EAAAA,QAAOM,GAAOI,CAAS,CACxD,CAAA,GAKL,EAAAP,EAAA,KAAA,CAAC,MAAD,CACI,KAAK,SACL,aAAYM,EACZ,YAAU,SACV,UAAWV,EAAAA,GAAGC,EAAAA,QAAO,KAAMO,GAAWP,EAAAA,QAAO,QAASU,CAAS,EAJnE,SAAA,CAMKL,EACAG,IAAY,IAAA,KAAa,EAAAL,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,QAAU,SAAAQ,CAAc,CAAA,CACzE,C,EAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.js","names":[],"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps {\n size?: SpinnerSize;\n className?: string;\n /** Accessible label announced by screen readers. */\n label?: string;\n /**\n * Visible caption rendered under the spinner. When set, the spinner and\n * caption are wrapped in a centered column.\n */\n caption?: ReactNode;\n /**\n * Center the spinner inside a full-area overlay (fills the nearest\n * positioned ancestor; pair with a relative container or a route fallback).\n * Implies the wrapped layout.\n */\n overlay?: boolean;\n}\n\n/**\n * Loading spinner with preset sizes (xs..xl). Provide `label` for screen\n * readers, `caption` for a visible message, and `overlay` to center it inside a\n * full-area container (e.g. a Suspense / route fallback).\n *\n * @example\n * <Spinner />\n * <Spinner size=\"lg\" caption=\"Carregando…\" overlay />\n */\nexport function Spinner({\n size = \"md\",\n className,\n label = \"Carregando\",\n caption,\n overlay = false,\n}: SpinnerProps) {\n const dot = <span aria-hidden className={cn(styles.spinner, styles[size])} />;\n\n if (!overlay && caption === undefined) {\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cn(styles.spinner, styles[size], className)}\n />\n );\n }\n\n return (\n <div\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n className={cn(styles.wrap, overlay && styles.overlay, className)}\n >\n {dot}\n {caption !== undefined && <span className={styles.caption}>{caption}</span>}\n </div>\n );\n}\n"],"mappings":";;;;AAiCA,SAAgB,EAAQ,EACpB,UAAO,MACP,cACA,WAAQ,cACR,YACA,aAAU,MACG;CACb,IAAM,IAAM,kBAAC,QAAD;EAAM,eAAA;EAAY,WAAW,EAAG,EAAO,SAAS,EAAO,EAAK;CAAI,CAAA;CAY5E,OAVI,CAAC,KAAW,MAAY,KAAA,IAEpB,kBAAC,QAAD;EACI,MAAK;EACL,cAAY;EACZ,WAAW,EAAG,EAAO,SAAS,EAAO,IAAO,CAAS;CACxD,CAAA,IAKL,kBAAC,OAAD;EACI,MAAK;EACL,cAAY;EACZ,aAAU;EACV,WAAW,EAAG,EAAO,MAAM,KAAW,EAAO,SAAS,CAAS;EAJnE,UAAA,CAMK,GACA,MAAY,KAAA,KAAa,kBAAC,QAAD;GAAM,WAAW,EAAO;GAAU,UAAA;EAAc,CAAA,CACzE;;AAEb"}
1
+ {"version":3,"file":"Spinner.js","names":["styles","Spinner_module_default","Spinner","dot","cn","size","overlay","caption","label","className"],"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps {\n size?: SpinnerSize;\n className?: string;\n /** Accessible label announced by screen readers. */\n label?: string;\n /**\n * Visible caption rendered under the spinner. When set, the spinner and\n * caption are wrapped in a centered column.\n */\n caption?: ReactNode;\n /**\n * Center the spinner inside a full-area overlay (fills the nearest\n * positioned ancestor; pair with a relative container or a route fallback).\n * Implies the wrapped layout.\n */\n overlay?: boolean;\n}\n\n/**\n * Loading spinner with preset sizes (xs..xl). Provide `label` for screen\n * readers, `caption` for a visible message, and `overlay` to center it inside a\n * full-area container (e.g. a Suspense / route fallback).\n *\n * @example\n * <Spinner />\n * <Spinner size=\"lg\" caption=\"Carregando…\" overlay />\n */\nexport function Spinner({\n size = \"md\",\n className,\n label = \"Carregando\",\n caption,\n overlay = false,\n}: SpinnerProps) {\n const dot = <span aria-hidden className={cn(styles.spinner, styles[size])} />;\n\n if (!overlay && caption === undefined) {\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cn(styles.spinner, styles[size], className)}\n />\n );\n }\n\n return (\n <div\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n className={cn(styles.wrap, overlay && styles.overlay, className)}\n >\n {dot}\n {caption !== undefined && <span className={styles.caption}>{caption}</span>}\n </div>\n );\n}\n"],"mappings":";;;;AAiCA,SAAgBE,EAAQ,EACpB,UAAO,MACP,cACA,WAAQ,cACR,YACA,aAAU,MACG;CACb,IAAMC,IAAM,kBAAC,QAAD;EAAM,eAAA;EAAY,WAAWC,EAAGJ,EAAO,SAASA,EAAOK,EAAK;CAAI,CAAA;CAY5E,OAVI,CAACC,KAAWC,MAAY,KAAA,IAEpB,kBAAC,QAAD;EACI,MAAK;EACL,cAAYC;EACZ,WAAWJ,EAAGJ,EAAO,SAASA,EAAOK,IAAOI,CAAS;CACxD,CAAA,IAKL,kBAAC,OAAD;EACI,MAAK;EACL,cAAYD;EACZ,aAAU;EACV,WAAWJ,EAAGJ,EAAO,MAAMM,KAAWN,EAAO,SAASS,CAAS;EAJnE,UAAA,CAMKN,GACAI,MAAY,KAAA,KAAa,kBAAC,QAAD;GAAM,WAAWP,EAAO;GAAU,UAAAO;EAAc,CAAA,CACzE;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.module.cjs","names":[],"sources":["../../../src/components/Spinner/Spinner.module.css"],"sourcesContent":[".spinner {\n display: inline-block;\n border: 2px solid var(--tempest-surface-2);\n border-top-color: var(--tempest-primary);\n border-radius: 50%;\n animation: tempest-spinner 0.7s linear infinite;\n flex-shrink: 0;\n}\n\n.xs {\n width: 10px;\n height: 10px;\n border-width: 1.5px;\n}\n.sm {\n width: 14px;\n height: 14px;\n border-width: 2px;\n}\n.md {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n.lg {\n width: 32px;\n height: 32px;\n border-width: 3px;\n}\n.xl {\n width: 48px;\n height: 48px;\n border-width: 4px;\n}\n\n.wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n min-height: 60vh;\n}\n\n.caption {\n font-size: var(--tempest-text-sm);\n}\n\n@keyframes tempest-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Spinner.module.cjs","names":["spinner","tempestSpinner","xs","sm","md","lg","xl","wrap","overlay","caption","Spinner_module_default"],"sources":["../../../src/components/Spinner/Spinner.module.css"],"sourcesContent":[".spinner {\n display: inline-block;\n border: 2px solid var(--tempest-surface-2);\n border-top-color: var(--tempest-primary);\n border-radius: 50%;\n animation: tempest-spinner 0.7s linear infinite;\n flex-shrink: 0;\n}\n\n.xs {\n width: 10px;\n height: 10px;\n border-width: 1.5px;\n}\n.sm {\n width: 14px;\n height: 14px;\n border-width: 2px;\n}\n.md {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n.lg {\n width: 32px;\n height: 32px;\n border-width: 3px;\n}\n.xl {\n width: 48px;\n height: 48px;\n border-width: 4px;\n}\n\n.wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n min-height: 60vh;\n}\n\n.caption {\n font-size: var(--tempest-text-sm);\n}\n\n@keyframes tempest-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.module.js","names":[],"sources":["../../../src/components/Spinner/Spinner.module.css"],"sourcesContent":[".spinner {\n display: inline-block;\n border: 2px solid var(--tempest-surface-2);\n border-top-color: var(--tempest-primary);\n border-radius: 50%;\n animation: tempest-spinner 0.7s linear infinite;\n flex-shrink: 0;\n}\n\n.xs {\n width: 10px;\n height: 10px;\n border-width: 1.5px;\n}\n.sm {\n width: 14px;\n height: 14px;\n border-width: 2px;\n}\n.md {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n.lg {\n width: 32px;\n height: 32px;\n border-width: 3px;\n}\n.xl {\n width: 48px;\n height: 48px;\n border-width: 4px;\n}\n\n.wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n min-height: 60vh;\n}\n\n.caption {\n font-size: var(--tempest-text-sm);\n}\n\n@keyframes tempest-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Spinner.module.js","names":["spinner","tempestSpinner","xs","sm","md","lg","xl","wrap","overlay","caption","Spinner_module_default"],"sources":["../../../src/components/Spinner/Spinner.module.css"],"sourcesContent":[".spinner {\n display: inline-block;\n border: 2px solid var(--tempest-surface-2);\n border-top-color: var(--tempest-primary);\n border-radius: 50%;\n animation: tempest-spinner 0.7s linear infinite;\n flex-shrink: 0;\n}\n\n.xs {\n width: 10px;\n height: 10px;\n border-width: 1.5px;\n}\n.sm {\n width: 14px;\n height: 14px;\n border-width: 2px;\n}\n.md {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n.lg {\n width: 32px;\n height: 32px;\n border-width: 3px;\n}\n.xl {\n width: 48px;\n height: 48px;\n border-width: 4px;\n}\n\n.wrap {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-3);\n color: var(--tempest-text-muted);\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n min-height: 60vh;\n}\n\n.caption {\n font-size: var(--tempest-text-sm);\n}\n\n@keyframes tempest-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Stat.cjs","names":[],"sources":["../../../src/components/Stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Revenue\", \"Active users\"). */\n label: ReactNode;\n /** Metric value (e.g. \"R$ 12.345\", \"1.2k\"). */\n value: ReactNode;\n /** Optional comparison delta — when set, renders alongside the value. */\n delta?: ReactNode;\n /** Trend direction for the delta. Default inferred from delta string. */\n trend?: StatTrend;\n /** Optional supporting context line below the value. */\n hint?: ReactNode;\n /** Optional leading icon. */\n icon?: ReactNode;\n}\n\nfunction inferTrend(delta: ReactNode | undefined): StatTrend | undefined {\n if (typeof delta !== \"string\") return undefined;\n const trimmed = delta.trim();\n if (trimmed.startsWith(\"+\")) return \"up\";\n if (trimmed.startsWith(\"-\") || trimmed.startsWith(\"−\")) return \"down\";\n return undefined;\n}\n\n/**\n * KPI card. Dashboard widget showing a label + big value + optional\n * delta/trend and hint.\n *\n * @example\n * <Stat label=\"Receita\" value=\"R$ 12.345\" delta=\"+12,4%\" trend=\"up\" hint=\"vs. mês anterior\" />\n */\nexport function Stat({ label, value, delta, trend, hint, icon, className, ...props }: StatProps) {\n const resolvedTrend: StatTrend | undefined = trend ?? inferTrend(delta);\n return (\n <div className={cn(styles.stat, className)} {...props}>\n <div className={styles.header}>\n {icon && <span className={styles.icon}>{icon}</span>}\n <span className={styles.label}>{label}</span>\n </div>\n <div className={styles.row}>\n <span className={styles.value}>{value}</span>\n {delta !== undefined && (\n <span\n className={cn(\n styles.delta,\n resolvedTrend === \"up\" && styles.up,\n resolvedTrend === \"down\" && styles.down,\n resolvedTrend === \"flat\" && styles.flat,\n )}\n >\n {delta}\n </span>\n )}\n </div>\n {hint && <p className={styles.hint}>{hint}</p>}\n </div>\n );\n}\n"],"mappings":"wGAqBA,SAAS,EAAW,EAAqD,CACrE,GAAI,OAAO,GAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,EAAQ,WAAW,GAAG,EAAG,MAAO,KACpC,GAAI,EAAQ,WAAW,GAAG,GAAK,EAAQ,WAAW,GAAG,EAAG,MAAO,MAEnE,CASA,SAAgB,EAAK,CAAE,QAAO,QAAO,QAAO,QAAO,OAAM,OAAM,YAAW,GAAG,GAAoB,CAC7F,IAAM,EAAuC,GAAS,EAAW,CAAK,EACtE,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,CAAS,EAAG,GAAI,EAAhD,SAAA,EACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAvB,SAAA,CACK,IAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,SAAA,CAAW,CAAA,GACnD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAY,CAAA,CAC3C,KACL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,IAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAY,CAAA,EAC3C,IAAU,IAAA,KACP,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,UAAW,EAAA,GACP,EAAA,QAAO,MACP,IAAkB,MAAQ,EAAA,QAAO,GACjC,IAAkB,QAAU,EAAA,QAAO,KACnC,IAAkB,QAAU,EAAA,QAAO,IACvC,EAEC,SAAA,CACC,CAAA,CAET,IACJ,IAAQ,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,KAAO,SAAA,CAAQ,CAAA,CAC5C,GAEb"}
1
+ {"version":3,"file":"Stat.cjs","names":["cn","styles","require_cn","require_Stat_module","react_jsx_runtime","inferTrend","delta","trimmed","Stat","props","resolvedTrend","trend","className","icon","label","value","hint"],"sources":["../../../src/components/Stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Revenue\", \"Active users\"). */\n label: ReactNode;\n /** Metric value (e.g. \"R$ 12.345\", \"1.2k\"). */\n value: ReactNode;\n /** Optional comparison delta — when set, renders alongside the value. */\n delta?: ReactNode;\n /** Trend direction for the delta. Default inferred from delta string. */\n trend?: StatTrend;\n /** Optional supporting context line below the value. */\n hint?: ReactNode;\n /** Optional leading icon. */\n icon?: ReactNode;\n}\n\nfunction inferTrend(delta: ReactNode | undefined): StatTrend | undefined {\n if (typeof delta !== \"string\") return undefined;\n const trimmed = delta.trim();\n if (trimmed.startsWith(\"+\")) return \"up\";\n if (trimmed.startsWith(\"-\") || trimmed.startsWith(\"−\")) return \"down\";\n return undefined;\n}\n\n/**\n * KPI card. Dashboard widget showing a label + big value + optional\n * delta/trend and hint.\n *\n * @example\n * <Stat label=\"Receita\" value=\"R$ 12.345\" delta=\"+12,4%\" trend=\"up\" hint=\"vs. mês anterior\" />\n */\nexport function Stat({ label, value, delta, trend, hint, icon, className, ...props }: StatProps) {\n const resolvedTrend: StatTrend | undefined = trend ?? inferTrend(delta);\n return (\n <div className={cn(styles.stat, className)} {...props}>\n <div className={styles.header}>\n {icon && <span className={styles.icon}>{icon}</span>}\n <span className={styles.label}>{label}</span>\n </div>\n <div className={styles.row}>\n <span className={styles.value}>{value}</span>\n {delta !== undefined && (\n <span\n className={cn(\n styles.delta,\n resolvedTrend === \"up\" && styles.up,\n resolvedTrend === \"down\" && styles.down,\n resolvedTrend === \"flat\" && styles.flat,\n )}\n >\n {delta}\n </span>\n )}\n </div>\n {hint && <p className={styles.hint}>{hint}</p>}\n </div>\n );\n}\n"],"mappings":"A,wGAqBA,SAASK,EAAW,EAAqD,CACrE,GAAI,OAAOC,GAAU,SAAU,OAC/B,IAAMC,EAAUD,EAAM,KAAK,EAC3B,GAAIC,EAAQ,WAAW,GAAG,EAAG,MAAO,KACpC,GAAIA,EAAQ,WAAW,GAAG,GAAKA,EAAQ,WAAW,GAAG,EAAG,MAAO,MAEnE,CASA,SAAgBC,EAAK,CAAE,QAAO,QAAO,QAAO,QAAO,OAAM,OAAM,YAAW,GAAGC,GAAoB,CAC7F,IAAMC,EAAuCC,GAASN,EAAWC,CAAK,EACtE,OACI,EAAAF,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,GAAGC,EAAAA,QAAO,KAAMW,CAAS,EAAG,GAAIH,EAAhD,SAAA,EACI,EAAAL,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWH,EAAAA,QAAO,OAAvB,SAAA,CACKY,IAAQ,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,KAAO,SAAAY,CAAW,CAAA,GACnD,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAa,CAAY,CAAA,CAC3C,C,IACL,EAAAV,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWH,EAAAA,QAAO,IAAvB,SAAA,EACI,EAAAG,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAc,CAAY,CAAA,EAC3CT,IAAU,IAAA,KACP,EAAAF,EAAA,IAAA,CAAC,OAAD,CACI,UAAWJ,EAAAA,GACPC,EAAAA,QAAO,MACPS,IAAkB,MAAQT,EAAAA,QAAO,GACjCS,IAAkB,QAAUT,EAAAA,QAAO,KACnCS,IAAkB,QAAUT,EAAAA,QAAO,IACvC,EAEC,SAAAK,CACC,CAAA,CAET,C,GACJU,IAAQ,EAAAZ,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWH,EAAAA,QAAO,KAAO,SAAAe,CAAQ,CAAA,CAC5C,C,EAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Stat.js","names":[],"sources":["../../../src/components/Stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Revenue\", \"Active users\"). */\n label: ReactNode;\n /** Metric value (e.g. \"R$ 12.345\", \"1.2k\"). */\n value: ReactNode;\n /** Optional comparison delta — when set, renders alongside the value. */\n delta?: ReactNode;\n /** Trend direction for the delta. Default inferred from delta string. */\n trend?: StatTrend;\n /** Optional supporting context line below the value. */\n hint?: ReactNode;\n /** Optional leading icon. */\n icon?: ReactNode;\n}\n\nfunction inferTrend(delta: ReactNode | undefined): StatTrend | undefined {\n if (typeof delta !== \"string\") return undefined;\n const trimmed = delta.trim();\n if (trimmed.startsWith(\"+\")) return \"up\";\n if (trimmed.startsWith(\"-\") || trimmed.startsWith(\"−\")) return \"down\";\n return undefined;\n}\n\n/**\n * KPI card. Dashboard widget showing a label + big value + optional\n * delta/trend and hint.\n *\n * @example\n * <Stat label=\"Receita\" value=\"R$ 12.345\" delta=\"+12,4%\" trend=\"up\" hint=\"vs. mês anterior\" />\n */\nexport function Stat({ label, value, delta, trend, hint, icon, className, ...props }: StatProps) {\n const resolvedTrend: StatTrend | undefined = trend ?? inferTrend(delta);\n return (\n <div className={cn(styles.stat, className)} {...props}>\n <div className={styles.header}>\n {icon && <span className={styles.icon}>{icon}</span>}\n <span className={styles.label}>{label}</span>\n </div>\n <div className={styles.row}>\n <span className={styles.value}>{value}</span>\n {delta !== undefined && (\n <span\n className={cn(\n styles.delta,\n resolvedTrend === \"up\" && styles.up,\n resolvedTrend === \"down\" && styles.down,\n resolvedTrend === \"flat\" && styles.flat,\n )}\n >\n {delta}\n </span>\n )}\n </div>\n {hint && <p className={styles.hint}>{hint}</p>}\n </div>\n );\n}\n"],"mappings":";;;;AAqBA,SAAS,EAAW,GAAqD;CACrE,IAAI,OAAO,KAAU,UAAU;CAC/B,IAAM,IAAU,EAAM,KAAK;CAC3B,IAAI,EAAQ,WAAW,GAAG,GAAG,OAAO;CACpC,IAAI,EAAQ,WAAW,GAAG,KAAK,EAAQ,WAAW,GAAG,GAAG,OAAO;AAEnE;AASA,SAAgB,EAAK,EAAE,UAAO,UAAO,UAAO,UAAO,SAAM,SAAM,cAAW,GAAG,KAAoB;CAC7F,IAAM,IAAuC,KAAS,EAAW,CAAK;CACtE,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,MAAM,CAAS;EAAG,GAAI;EAAhD,UAAA;GACI,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAvB,UAAA,CACK,KAAQ,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAO,UAAA;IAAW,CAAA,GACnD,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAQ,UAAA;IAAY,CAAA,CAC3C;;GACL,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAvB,UAAA,CACI,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAQ,UAAA;IAAY,CAAA,GAC3C,MAAU,KAAA,KACP,kBAAC,QAAD;KACI,WAAW,EACP,EAAO,OACP,MAAkB,QAAQ,EAAO,IACjC,MAAkB,UAAU,EAAO,MACnC,MAAkB,UAAU,EAAO,IACvC;KAEC,UAAA;IACC,CAAA,CAET;;GACJ,KAAQ,kBAAC,KAAD;IAAG,WAAW,EAAO;IAAO,UAAA;GAAQ,CAAA;EAC5C;;AAEb"}
1
+ {"version":3,"file":"Stat.js","names":["styles","Stat_module_default","inferTrend","delta","trimmed","Stat","props","resolvedTrend","trend","cn","className","icon","label","value","hint"],"sources":["../../../src/components/Stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Revenue\", \"Active users\"). */\n label: ReactNode;\n /** Metric value (e.g. \"R$ 12.345\", \"1.2k\"). */\n value: ReactNode;\n /** Optional comparison delta — when set, renders alongside the value. */\n delta?: ReactNode;\n /** Trend direction for the delta. Default inferred from delta string. */\n trend?: StatTrend;\n /** Optional supporting context line below the value. */\n hint?: ReactNode;\n /** Optional leading icon. */\n icon?: ReactNode;\n}\n\nfunction inferTrend(delta: ReactNode | undefined): StatTrend | undefined {\n if (typeof delta !== \"string\") return undefined;\n const trimmed = delta.trim();\n if (trimmed.startsWith(\"+\")) return \"up\";\n if (trimmed.startsWith(\"-\") || trimmed.startsWith(\"−\")) return \"down\";\n return undefined;\n}\n\n/**\n * KPI card. Dashboard widget showing a label + big value + optional\n * delta/trend and hint.\n *\n * @example\n * <Stat label=\"Receita\" value=\"R$ 12.345\" delta=\"+12,4%\" trend=\"up\" hint=\"vs. mês anterior\" />\n */\nexport function Stat({ label, value, delta, trend, hint, icon, className, ...props }: StatProps) {\n const resolvedTrend: StatTrend | undefined = trend ?? inferTrend(delta);\n return (\n <div className={cn(styles.stat, className)} {...props}>\n <div className={styles.header}>\n {icon && <span className={styles.icon}>{icon}</span>}\n <span className={styles.label}>{label}</span>\n </div>\n <div className={styles.row}>\n <span className={styles.value}>{value}</span>\n {delta !== undefined && (\n <span\n className={cn(\n styles.delta,\n resolvedTrend === \"up\" && styles.up,\n resolvedTrend === \"down\" && styles.down,\n resolvedTrend === \"flat\" && styles.flat,\n )}\n >\n {delta}\n </span>\n )}\n </div>\n {hint && <p className={styles.hint}>{hint}</p>}\n </div>\n );\n}\n"],"mappings":";;;;AAqBA,SAASE,EAAW,GAAqD;CACrE,IAAI,OAAOC,KAAU,UAAU;CAC/B,IAAMC,IAAUD,EAAM,KAAK;CAC3B,IAAIC,EAAQ,WAAW,GAAG,GAAG,OAAO;CACpC,IAAIA,EAAQ,WAAW,GAAG,KAAKA,EAAQ,WAAW,GAAG,GAAG,OAAO;AAEnE;AASA,SAAgBC,EAAK,EAAE,UAAO,UAAO,UAAO,UAAO,SAAM,SAAM,cAAW,GAAGC,KAAoB;CAC7F,IAAMC,IAAuCC,KAASN,EAAWC,CAAK;CACtE,OACI,kBAAC,OAAD;EAAK,WAAWM,EAAGT,EAAO,MAAMU,CAAS;EAAG,GAAIJ;EAAhD,UAAA;GACI,kBAAC,OAAD;IAAK,WAAWN,EAAO;IAAvB,UAAA,CACKW,KAAQ,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAO,UAAAW;IAAW,CAAA,GACnD,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAQ,UAAAY;IAAY,CAAA,CAC3C;;GACL,kBAAC,OAAD;IAAK,WAAWZ,EAAO;IAAvB,UAAA,CACI,kBAAC,QAAD;KAAM,WAAWA,EAAO;KAAQ,UAAAa;IAAY,CAAA,GAC3CV,MAAU,KAAA,KACP,kBAAC,QAAD;KACI,WAAWM,EACPT,EAAO,OACPO,MAAkB,QAAQP,EAAO,IACjCO,MAAkB,UAAUP,EAAO,MACnCO,MAAkB,UAAUP,EAAO,IACvC;KAEC,UAAAG;IACC,CAAA,CAET;;GACJW,KAAQ,kBAAC,KAAD;IAAG,WAAWd,EAAO;IAAO,UAAAc;GAAQ,CAAA;EAC5C;;AAEb"}