tempest-react-sdk 0.77.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 (1623) hide show
  1. package/README.md +6 -6
  2. package/bin/lib/alias/collect.mjs +20 -3
  3. package/bin/lib/alias/index.mjs +12 -1
  4. package/bin/lib/alias/index.test.mjs +24 -0
  5. package/bin/lib/css/analyze.test.mjs +21 -1
  6. package/bin/lib/css/collect.mjs +14 -0
  7. package/bin/lib/css/extract.mjs +63 -5
  8. package/bin/lib/css/extract.test.mjs +110 -1
  9. package/bin/lib/css/fix.e2e.test.mjs +50 -0
  10. package/bin/lib/css/index.mjs +6 -1
  11. package/bin/lib/fs/contain.mjs +50 -0
  12. package/bin/lib/icons/generate.mjs +28 -3
  13. package/bin/lib/icons/generate.test.mjs +57 -1
  14. package/bin/lib/openapi/escape.mjs +20 -6
  15. package/bin/lib/openapi/generate.encode.test.mjs +120 -0
  16. package/bin/lib/openapi/generate.hostile.test.mjs +38 -9
  17. package/bin/lib/openapi/generate.mjs +203 -64
  18. package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
  19. package/bin/lib/openapi/generate.test.mjs +270 -3
  20. package/bin/lib/openapi/schema-to-zod.mjs +5 -3
  21. package/bin/tempest-gen.test.mjs +188 -0
  22. package/bin/tempest.mjs +120 -44
  23. package/dist/access/Can.cjs.map +1 -1
  24. package/dist/access/Can.js.map +1 -1
  25. package/dist/access/access-control-context.cjs.map +1 -1
  26. package/dist/access/access-control-context.js.map +1 -1
  27. package/dist/access/create-role-access-control.cjs.map +1 -1
  28. package/dist/access/create-role-access-control.js.map +1 -1
  29. package/dist/access/permissions-from-token.cjs.map +1 -1
  30. package/dist/access/permissions-from-token.js.map +1 -1
  31. package/dist/access/use-can.cjs.map +1 -1
  32. package/dist/access/use-can.js.map +1 -1
  33. package/dist/app/AppProviders.cjs.map +1 -1
  34. package/dist/app/AppProviders.js.map +1 -1
  35. package/dist/audio/audio-bus.cjs.map +1 -1
  36. package/dist/audio/audio-bus.js.map +1 -1
  37. package/dist/audio/audio-output.cjs.map +1 -1
  38. package/dist/audio/audio-output.js.map +1 -1
  39. package/dist/audio/audio-player.cjs.map +1 -1
  40. package/dist/audio/audio-player.js.map +1 -1
  41. package/dist/audio/audio-recorder.cjs.map +1 -1
  42. package/dist/audio/audio-recorder.js.map +1 -1
  43. package/dist/audio/duration.cjs.map +1 -1
  44. package/dist/audio/duration.js.map +1 -1
  45. package/dist/audio/level-meter.cjs.map +1 -1
  46. package/dist/audio/level-meter.js.map +1 -1
  47. package/dist/audio/media-access.cjs.map +1 -1
  48. package/dist/audio/media-access.js.map +1 -1
  49. package/dist/audio/noise-floor.cjs.map +1 -1
  50. package/dist/audio/noise-floor.js.map +1 -1
  51. package/dist/audio/sfx-pool.cjs.map +1 -1
  52. package/dist/audio/sfx-pool.js.map +1 -1
  53. package/dist/audio/use-audio-bus.cjs.map +1 -1
  54. package/dist/audio/use-audio-bus.js.map +1 -1
  55. package/dist/audio/use-audio-recorder.cjs.map +1 -1
  56. package/dist/audio/use-audio-recorder.js.map +1 -1
  57. package/dist/audio/use-audio.cjs.map +1 -1
  58. package/dist/audio/use-audio.js.map +1 -1
  59. package/dist/audio/use-microphone.cjs +1 -1
  60. package/dist/audio/use-microphone.cjs.map +1 -1
  61. package/dist/audio/use-microphone.js +1 -5
  62. package/dist/audio/use-microphone.js.map +1 -1
  63. package/dist/audio/use-sfx-pool.cjs.map +1 -1
  64. package/dist/audio/use-sfx-pool.js.map +1 -1
  65. package/dist/audio/voice-activity.cjs.map +1 -1
  66. package/dist/audio/voice-activity.js.map +1 -1
  67. package/dist/audio/voice-chain-stages.cjs.map +1 -1
  68. package/dist/audio/voice-chain-stages.js.map +1 -1
  69. package/dist/audio/voice-chain.cjs.map +1 -1
  70. package/dist/audio/voice-chain.js.map +1 -1
  71. package/dist/audio/wav.cjs.map +1 -1
  72. package/dist/audio/wav.js.map +1 -1
  73. package/dist/auth/AuthGuard.cjs.map +1 -1
  74. package/dist/auth/AuthGuard.js.map +1 -1
  75. package/dist/auth/create-auth-store.cjs.map +1 -1
  76. package/dist/auth/create-auth-store.js.map +1 -1
  77. package/dist/auth/create-tempest-auth.cjs +1 -1
  78. package/dist/auth/create-tempest-auth.cjs.map +1 -1
  79. package/dist/auth/create-tempest-auth.js +185 -114
  80. package/dist/auth/create-tempest-auth.js.map +1 -1
  81. package/dist/auth/jwt.cjs.map +1 -1
  82. package/dist/auth/jwt.js.map +1 -1
  83. package/dist/auth/lazy-with-retry.cjs.map +1 -1
  84. package/dist/auth/lazy-with-retry.js.map +1 -1
  85. package/dist/auth/passkey.cjs.map +1 -1
  86. package/dist/auth/passkey.js.map +1 -1
  87. package/dist/auth/refresh-queue.cjs.map +1 -1
  88. package/dist/auth/refresh-queue.js.map +1 -1
  89. package/dist/auth/use-passkey.cjs +1 -1
  90. package/dist/auth/use-passkey.cjs.map +1 -1
  91. package/dist/auth/use-passkey.js +1 -1
  92. package/dist/auth/use-passkey.js.map +1 -1
  93. package/dist/br/BrazilMap.cjs.map +1 -1
  94. package/dist/br/BrazilMap.js.map +1 -1
  95. package/dist/br/BrazilMap.module.cjs.map +1 -1
  96. package/dist/br/BrazilMap.module.js.map +1 -1
  97. package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
  98. package/dist/br/BrazilStateCitySelect.js.map +1 -1
  99. package/dist/br/BrazilStateMap.cjs.map +1 -1
  100. package/dist/br/BrazilStateMap.js.map +1 -1
  101. package/dist/br/MapLegend.cjs.map +1 -1
  102. package/dist/br/MapLegend.js.map +1 -1
  103. package/dist/br/MapLegend.module.cjs.map +1 -1
  104. package/dist/br/MapLegend.module.js.map +1 -1
  105. package/dist/br/MapMarkers.cjs.map +1 -1
  106. package/dist/br/MapMarkers.js.map +1 -1
  107. package/dist/br/MapTooltip.cjs.map +1 -1
  108. package/dist/br/MapTooltip.js.map +1 -1
  109. package/dist/br/MunicipalitySearch.cjs +1 -1
  110. package/dist/br/MunicipalitySearch.cjs.map +1 -1
  111. package/dist/br/MunicipalitySearch.js +2 -5
  112. package/dist/br/MunicipalitySearch.js.map +1 -1
  113. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  114. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  115. package/dist/br/PixQRCode.cjs.map +1 -1
  116. package/dist/br/PixQRCode.js.map +1 -1
  117. package/dist/br/PixQRCode.module.cjs.map +1 -1
  118. package/dist/br/PixQRCode.module.js.map +1 -1
  119. package/dist/br/boleto.cjs.map +1 -1
  120. package/dist/br/boleto.js.map +1 -1
  121. package/dist/br/br-geo.cjs.map +1 -1
  122. package/dist/br/br-geo.js.map +1 -1
  123. package/dist/br/data/br-centroids.cjs.map +1 -1
  124. package/dist/br/data/br-centroids.js.map +1 -1
  125. package/dist/br/data/br-locations.cjs.map +1 -1
  126. package/dist/br/data/br-locations.js.map +1 -1
  127. package/dist/br/data/br-uf-geo.cjs.map +1 -1
  128. package/dist/br/data/br-uf-geo.js.map +1 -1
  129. package/dist/br/data/mun/AC.cjs.map +1 -1
  130. package/dist/br/data/mun/AC.js.map +1 -1
  131. package/dist/br/data/mun/AL.cjs.map +1 -1
  132. package/dist/br/data/mun/AL.js.map +1 -1
  133. package/dist/br/data/mun/AM.cjs.map +1 -1
  134. package/dist/br/data/mun/AM.js.map +1 -1
  135. package/dist/br/data/mun/AP.cjs.map +1 -1
  136. package/dist/br/data/mun/AP.js.map +1 -1
  137. package/dist/br/data/mun/BA.cjs.map +1 -1
  138. package/dist/br/data/mun/BA.js.map +1 -1
  139. package/dist/br/data/mun/CE.cjs.map +1 -1
  140. package/dist/br/data/mun/CE.js.map +1 -1
  141. package/dist/br/data/mun/DF.cjs.map +1 -1
  142. package/dist/br/data/mun/DF.js.map +1 -1
  143. package/dist/br/data/mun/ES.cjs.map +1 -1
  144. package/dist/br/data/mun/ES.js.map +1 -1
  145. package/dist/br/data/mun/GO.cjs.map +1 -1
  146. package/dist/br/data/mun/GO.js.map +1 -1
  147. package/dist/br/data/mun/MA.cjs.map +1 -1
  148. package/dist/br/data/mun/MA.js.map +1 -1
  149. package/dist/br/data/mun/MG.cjs.map +1 -1
  150. package/dist/br/data/mun/MG.js.map +1 -1
  151. package/dist/br/data/mun/MS.cjs.map +1 -1
  152. package/dist/br/data/mun/MS.js.map +1 -1
  153. package/dist/br/data/mun/MT.cjs.map +1 -1
  154. package/dist/br/data/mun/MT.js.map +1 -1
  155. package/dist/br/data/mun/PA.cjs.map +1 -1
  156. package/dist/br/data/mun/PA.js.map +1 -1
  157. package/dist/br/data/mun/PB.cjs.map +1 -1
  158. package/dist/br/data/mun/PB.js.map +1 -1
  159. package/dist/br/data/mun/PE.cjs.map +1 -1
  160. package/dist/br/data/mun/PE.js.map +1 -1
  161. package/dist/br/data/mun/PI.cjs.map +1 -1
  162. package/dist/br/data/mun/PI.js.map +1 -1
  163. package/dist/br/data/mun/PR.cjs.map +1 -1
  164. package/dist/br/data/mun/PR.js.map +1 -1
  165. package/dist/br/data/mun/RJ.cjs.map +1 -1
  166. package/dist/br/data/mun/RJ.js.map +1 -1
  167. package/dist/br/data/mun/RN.cjs.map +1 -1
  168. package/dist/br/data/mun/RN.js.map +1 -1
  169. package/dist/br/data/mun/RO.cjs.map +1 -1
  170. package/dist/br/data/mun/RO.js.map +1 -1
  171. package/dist/br/data/mun/RR.cjs.map +1 -1
  172. package/dist/br/data/mun/RR.js.map +1 -1
  173. package/dist/br/data/mun/RS.cjs.map +1 -1
  174. package/dist/br/data/mun/RS.js.map +1 -1
  175. package/dist/br/data/mun/SC.cjs.map +1 -1
  176. package/dist/br/data/mun/SC.js.map +1 -1
  177. package/dist/br/data/mun/SE.cjs.map +1 -1
  178. package/dist/br/data/mun/SE.js.map +1 -1
  179. package/dist/br/data/mun/SP.cjs.map +1 -1
  180. package/dist/br/data/mun/SP.js.map +1 -1
  181. package/dist/br/data/mun/TO.cjs.map +1 -1
  182. package/dist/br/data/mun/TO.js.map +1 -1
  183. package/dist/br/geocode.cjs.map +1 -1
  184. package/dist/br/geocode.js.map +1 -1
  185. package/dist/br/holidays.cjs.map +1 -1
  186. package/dist/br/holidays.js.map +1 -1
  187. package/dist/br/locations.cjs.map +1 -1
  188. package/dist/br/locations.js.map +1 -1
  189. package/dist/br/nfe.cjs.map +1 -1
  190. package/dist/br/nfe.js.map +1 -1
  191. package/dist/br/pix.cjs +1 -1
  192. package/dist/br/pix.cjs.map +1 -1
  193. package/dist/br/pix.js +108 -71
  194. package/dist/br/pix.js.map +1 -1
  195. package/dist/br/regions.cjs.map +1 -1
  196. package/dist/br/regions.js.map +1 -1
  197. package/dist/br/scales.cjs.map +1 -1
  198. package/dist/br/scales.js.map +1 -1
  199. package/dist/br/state-geo.cjs.map +1 -1
  200. package/dist/br/state-geo.js.map +1 -1
  201. package/dist/br/svg-utils.cjs.map +1 -1
  202. package/dist/br/svg-utils.js.map +1 -1
  203. package/dist/br/use-map-hover.cjs.map +1 -1
  204. package/dist/br/use-map-hover.js.map +1 -1
  205. package/dist/br/use-map-zoom.cjs.map +1 -1
  206. package/dist/br/use-map-zoom.js.map +1 -1
  207. package/dist/br/whatsapp.cjs.map +1 -1
  208. package/dist/br/whatsapp.js.map +1 -1
  209. package/dist/br.cjs.map +1 -1
  210. package/dist/br.d.ts +16 -5
  211. package/dist/br.js.map +1 -1
  212. package/dist/capture/barcode.cjs.map +1 -1
  213. package/dist/capture/barcode.js.map +1 -1
  214. package/dist/capture/media-recorder.cjs.map +1 -1
  215. package/dist/capture/media-recorder.js.map +1 -1
  216. package/dist/capture/use-barcode-scanner.cjs.map +1 -1
  217. package/dist/capture/use-barcode-scanner.js.map +1 -1
  218. package/dist/capture/use-screen-capture.cjs +1 -1
  219. package/dist/capture/use-screen-capture.cjs.map +1 -1
  220. package/dist/capture/use-screen-capture.js +1 -7
  221. package/dist/capture/use-screen-capture.js.map +1 -1
  222. package/dist/capture/use-speech-recognition.cjs +1 -1
  223. package/dist/capture/use-speech-recognition.cjs.map +1 -1
  224. package/dist/capture/use-speech-recognition.js +35 -36
  225. package/dist/capture/use-speech-recognition.js.map +1 -1
  226. package/dist/capture/use-torch.cjs.map +1 -1
  227. package/dist/capture/use-torch.js.map +1 -1
  228. package/dist/capture/use-video-recorder.cjs.map +1 -1
  229. package/dist/capture/use-video-recorder.js.map +1 -1
  230. package/dist/capture/video-recorder.cjs.map +1 -1
  231. package/dist/capture/video-recorder.js.map +1 -1
  232. package/dist/charts/AreaChart.cjs.map +1 -1
  233. package/dist/charts/AreaChart.js.map +1 -1
  234. package/dist/charts/BarChart.cjs.map +1 -1
  235. package/dist/charts/BarChart.js.map +1 -1
  236. package/dist/charts/LineChart.cjs.map +1 -1
  237. package/dist/charts/LineChart.js.map +1 -1
  238. package/dist/charts/PieChart.cjs.map +1 -1
  239. package/dist/charts/PieChart.js.map +1 -1
  240. package/dist/charts/RadarChart.cjs.map +1 -1
  241. package/dist/charts/RadarChart.js.map +1 -1
  242. package/dist/charts/palette.cjs.map +1 -1
  243. package/dist/charts/palette.js.map +1 -1
  244. package/dist/charts/scales.cjs.map +1 -1
  245. package/dist/charts/scales.js.map +1 -1
  246. package/dist/charts/types.cjs.map +1 -1
  247. package/dist/charts/types.js.map +1 -1
  248. package/dist/charts/use-chart-colors.cjs.map +1 -1
  249. package/dist/charts/use-chart-colors.js.map +1 -1
  250. package/dist/components/AIChat/AIChat.cjs +1 -1
  251. package/dist/components/AIChat/AIChat.cjs.map +1 -1
  252. package/dist/components/AIChat/AIChat.js +1 -5
  253. package/dist/components/AIChat/AIChat.js.map +1 -1
  254. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  255. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  256. package/dist/components/AIChat/AIChatComposer.cjs +1 -1
  257. package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
  258. package/dist/components/AIChat/AIChatComposer.js +1 -7
  259. package/dist/components/AIChat/AIChatComposer.js.map +1 -1
  260. package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
  261. package/dist/components/AIChat/AIChatTurn.js.map +1 -1
  262. package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
  263. package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
  264. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  265. package/dist/components/Accordion/Accordion.js.map +1 -1
  266. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  267. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  268. package/dist/components/Alert/Alert.cjs.map +1 -1
  269. package/dist/components/Alert/Alert.js.map +1 -1
  270. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  271. package/dist/components/Alert/Alert.module.js.map +1 -1
  272. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  273. package/dist/components/AppBar/AppBar.js.map +1 -1
  274. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  275. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  276. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  277. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  278. package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
  279. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  280. package/dist/components/AppShell/AppShell.cjs.map +1 -1
  281. package/dist/components/AppShell/AppShell.js.map +1 -1
  282. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  283. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  284. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
  285. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  286. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  287. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  288. package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
  289. package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
  290. package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
  291. package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
  292. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  293. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  294. package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
  295. package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
  296. package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
  297. package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
  298. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  299. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  300. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  301. package/dist/components/Avatar/Avatar.js.map +1 -1
  302. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  303. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  304. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
  305. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
  306. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  307. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  308. package/dist/components/Badge/Badge.cjs.map +1 -1
  309. package/dist/components/Badge/Badge.js.map +1 -1
  310. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  311. package/dist/components/Badge/Badge.module.js.map +1 -1
  312. package/dist/components/Banner/Banner.cjs.map +1 -1
  313. package/dist/components/Banner/Banner.js.map +1 -1
  314. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  315. package/dist/components/Banner/Banner.module.js.map +1 -1
  316. package/dist/components/BarList/BarList.cjs.map +1 -1
  317. package/dist/components/BarList/BarList.js.map +1 -1
  318. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  319. package/dist/components/BarList/BarList.module.js.map +1 -1
  320. package/dist/components/BarList/bar-list-model.cjs.map +1 -1
  321. package/dist/components/BarList/bar-list-model.js.map +1 -1
  322. package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
  323. package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
  324. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  325. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  326. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
  327. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  328. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  329. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  330. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  331. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  332. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  333. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  334. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  335. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  336. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  337. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  338. package/dist/components/Button/Button.cjs.map +1 -1
  339. package/dist/components/Button/Button.js.map +1 -1
  340. package/dist/components/Button/Button.module.cjs.map +1 -1
  341. package/dist/components/Button/Button.module.js.map +1 -1
  342. package/dist/components/Button/ButtonContent.cjs.map +1 -1
  343. package/dist/components/Button/ButtonContent.js.map +1 -1
  344. package/dist/components/Button/ButtonSlot.cjs.map +1 -1
  345. package/dist/components/Button/ButtonSlot.js.map +1 -1
  346. package/dist/components/Button/button-class.cjs.map +1 -1
  347. package/dist/components/Button/button-class.js.map +1 -1
  348. package/dist/components/Button/link-rel.cjs.map +1 -1
  349. package/dist/components/Button/link-rel.js.map +1 -1
  350. package/dist/components/Button/slot.cjs.map +1 -1
  351. package/dist/components/Button/slot.js.map +1 -1
  352. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  353. package/dist/components/Calendar/Calendar.js.map +1 -1
  354. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  355. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  356. package/dist/components/Card/Card.cjs.map +1 -1
  357. package/dist/components/Card/Card.js.map +1 -1
  358. package/dist/components/Card/Card.module.cjs.map +1 -1
  359. package/dist/components/Card/Card.module.js.map +1 -1
  360. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  361. package/dist/components/Carousel/Carousel.js.map +1 -1
  362. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  363. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  364. package/dist/components/Center/Center.cjs.map +1 -1
  365. package/dist/components/Center/Center.js.map +1 -1
  366. package/dist/components/Center/Center.module.cjs.map +1 -1
  367. package/dist/components/Center/Center.module.js.map +1 -1
  368. package/dist/components/Chat/Chat.cjs.map +1 -1
  369. package/dist/components/Chat/Chat.js.map +1 -1
  370. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  371. package/dist/components/Chat/Chat.module.js.map +1 -1
  372. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
  373. package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
  374. package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
  375. package/dist/components/Chat/ChatAttachments.js.map +1 -1
  376. package/dist/components/Chat/ChatBubble.cjs.map +1 -1
  377. package/dist/components/Chat/ChatBubble.js.map +1 -1
  378. package/dist/components/Chat/ChatComposer.cjs.map +1 -1
  379. package/dist/components/Chat/ChatComposer.js.map +1 -1
  380. package/dist/components/Chat/chat-groups.cjs +1 -1
  381. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  382. package/dist/components/Chat/chat-groups.js +2 -6
  383. package/dist/components/Chat/chat-groups.js.map +1 -1
  384. package/dist/components/Chat/chat-receipt.cjs.map +1 -1
  385. package/dist/components/Chat/chat-receipt.js.map +1 -1
  386. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  387. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  388. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  389. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  390. package/dist/components/ChipInput/ChipInput.cjs +1 -1
  391. package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
  392. package/dist/components/ChipInput/ChipInput.js +2 -12
  393. package/dist/components/ChipInput/ChipInput.js.map +1 -1
  394. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  395. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  396. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
  397. package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
  398. package/dist/components/CodeBlock/CodeBlock.cjs +1 -1
  399. package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
  400. package/dist/components/CodeBlock/CodeBlock.js +1 -1
  401. package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
  402. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  403. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  404. package/dist/components/CodeBlock/tokenize.cjs +1 -1
  405. package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
  406. package/dist/components/CodeBlock/tokenize.js +54 -25
  407. package/dist/components/CodeBlock/tokenize.js.map +1 -1
  408. package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
  409. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  410. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  411. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  412. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  413. package/dist/components/Combobox/Combobox.js.map +1 -1
  414. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  415. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  416. package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
  417. package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
  418. package/dist/components/Command/Command.cjs +1 -1
  419. package/dist/components/Command/Command.cjs.map +1 -1
  420. package/dist/components/Command/Command.js +4 -11
  421. package/dist/components/Command/Command.js.map +1 -1
  422. package/dist/components/Command/Command.module.cjs.map +1 -1
  423. package/dist/components/Command/Command.module.js.map +1 -1
  424. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
  425. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
  426. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  427. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  428. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  429. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  430. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  431. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  432. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  433. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  434. package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
  435. package/dist/components/CopyButton/CopyButton.js.map +1 -1
  436. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  437. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  438. package/dist/components/DataList/DataList.cjs.map +1 -1
  439. package/dist/components/DataList/DataList.js.map +1 -1
  440. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  441. package/dist/components/DataList/DataList.module.js.map +1 -1
  442. package/dist/components/DataTable/DataTable.cjs +1 -1
  443. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  444. package/dist/components/DataTable/DataTable.js +6 -14
  445. package/dist/components/DataTable/DataTable.js.map +1 -1
  446. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  447. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  448. package/dist/components/DataTable/EditableCell.cjs +1 -1
  449. package/dist/components/DataTable/EditableCell.cjs.map +1 -1
  450. package/dist/components/DataTable/EditableCell.js +1 -9
  451. package/dist/components/DataTable/EditableCell.js.map +1 -1
  452. package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
  453. package/dist/components/DataTable/LoadingRows.js.map +1 -1
  454. package/dist/components/DataTable/edit-labels.cjs.map +1 -1
  455. package/dist/components/DataTable/edit-labels.js.map +1 -1
  456. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  457. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  458. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  459. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  460. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  461. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  462. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  463. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  464. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
  465. package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
  466. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  467. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  468. package/dist/components/Divider/Divider.cjs.map +1 -1
  469. package/dist/components/Divider/Divider.js.map +1 -1
  470. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  471. package/dist/components/Divider/Divider.module.js.map +1 -1
  472. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  473. package/dist/components/Drawer/Drawer.js.map +1 -1
  474. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  475. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  476. package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
  477. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
  478. package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
  479. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  480. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  481. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  482. package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
  483. package/dist/components/Dropzone/Dropzone.js.map +1 -1
  484. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  485. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  486. package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
  487. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  488. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  489. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  490. package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
  491. package/dist/components/ErrorState/ErrorState.js.map +1 -1
  492. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  493. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  494. package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
  495. package/dist/components/ErrorText/ErrorText.js.map +1 -1
  496. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  497. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  498. package/dist/components/FileUpload/FileUpload.cjs +1 -1
  499. package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
  500. package/dist/components/FileUpload/FileUpload.js +7 -17
  501. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  502. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  503. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  504. package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
  505. package/dist/components/FilterBar/FilterBar.js.map +1 -1
  506. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  507. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  508. package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
  509. package/dist/components/FilterBar/filter-apply.js.map +1 -1
  510. package/dist/components/FilterBar/filter-model.cjs.map +1 -1
  511. package/dist/components/FilterBar/filter-model.js.map +1 -1
  512. package/dist/components/FilterBar/filter-query.cjs +1 -1
  513. package/dist/components/FilterBar/filter-query.cjs.map +1 -1
  514. package/dist/components/FilterBar/filter-query.js +2 -5
  515. package/dist/components/FilterBar/filter-query.js.map +1 -1
  516. package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
  517. package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
  518. package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
  519. package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
  520. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
  521. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
  522. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  523. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  524. package/dist/components/For/For.cjs.map +1 -1
  525. package/dist/components/For/For.js.map +1 -1
  526. package/dist/components/Form/Form.cjs.map +1 -1
  527. package/dist/components/Form/Form.js.map +1 -1
  528. package/dist/components/Form/Form.module.cjs.map +1 -1
  529. package/dist/components/Form/Form.module.js.map +1 -1
  530. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  531. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  532. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  533. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  534. package/dist/components/Image/Image.cjs.map +1 -1
  535. package/dist/components/Image/Image.js.map +1 -1
  536. package/dist/components/Image/Image.module.cjs.map +1 -1
  537. package/dist/components/Image/Image.module.js.map +1 -1
  538. package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
  539. package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
  540. package/dist/components/ImageCropper/ImageCropper.js +4 -8
  541. package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
  542. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  543. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  544. package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
  545. package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
  546. package/dist/components/Input/Input.cjs.map +1 -1
  547. package/dist/components/Input/Input.js.map +1 -1
  548. package/dist/components/Input/Input.module.cjs.map +1 -1
  549. package/dist/components/Input/Input.module.js.map +1 -1
  550. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
  551. package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
  552. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  553. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  554. package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
  555. package/dist/components/InstallButton/InstallButton.js.map +1 -1
  556. package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
  557. package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
  558. package/dist/components/InstallButton/install-hints.cjs.map +1 -1
  559. package/dist/components/InstallButton/install-hints.js.map +1 -1
  560. package/dist/components/Kanban/Kanban.cjs.map +1 -1
  561. package/dist/components/Kanban/Kanban.js.map +1 -1
  562. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  563. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  564. package/dist/components/Kbd/Kbd.cjs.map +1 -1
  565. package/dist/components/Kbd/Kbd.js.map +1 -1
  566. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  567. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  568. package/dist/components/Label/Label.cjs.map +1 -1
  569. package/dist/components/Label/Label.js.map +1 -1
  570. package/dist/components/Label/Label.module.cjs.map +1 -1
  571. package/dist/components/Label/Label.module.js.map +1 -1
  572. package/dist/components/Layout/Layout.cjs.map +1 -1
  573. package/dist/components/Layout/Layout.js.map +1 -1
  574. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  575. package/dist/components/Layout/Layout.module.js.map +1 -1
  576. package/dist/components/Lightbox/Lightbox.cjs +1 -1
  577. package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
  578. package/dist/components/Lightbox/Lightbox.js +1 -1
  579. package/dist/components/Lightbox/Lightbox.js.map +1 -1
  580. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  581. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  582. package/dist/components/ListTile/ListTile.cjs.map +1 -1
  583. package/dist/components/ListTile/ListTile.js.map +1 -1
  584. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  585. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  586. package/dist/components/Markdown/Markdown.cjs.map +1 -1
  587. package/dist/components/Markdown/Markdown.js.map +1 -1
  588. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  589. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  590. package/dist/components/Markdown/markdown-parse.cjs +6 -6
  591. package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
  592. package/dist/components/Markdown/markdown-parse.js +94 -96
  593. package/dist/components/Markdown/markdown-parse.js.map +1 -1
  594. package/dist/components/Masonry/Masonry.cjs.map +1 -1
  595. package/dist/components/Masonry/Masonry.js.map +1 -1
  596. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  597. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  598. package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
  599. package/dist/components/Masonry/masonry-layout.js.map +1 -1
  600. package/dist/components/Menubar/Menubar.cjs.map +1 -1
  601. package/dist/components/Menubar/Menubar.js.map +1 -1
  602. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  603. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  604. package/dist/components/Modal/Modal.cjs.map +1 -1
  605. package/dist/components/Modal/Modal.js.map +1 -1
  606. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  607. package/dist/components/Modal/Modal.module.js.map +1 -1
  608. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
  609. package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
  610. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  611. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  612. package/dist/components/Money/Money.cjs.map +1 -1
  613. package/dist/components/Money/Money.js.map +1 -1
  614. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
  615. package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
  616. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  617. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  618. package/dist/components/NProgress/NProgress.cjs.map +1 -1
  619. package/dist/components/NProgress/NProgress.js.map +1 -1
  620. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  621. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  622. package/dist/components/Navbar/Navbar.cjs.map +1 -1
  623. package/dist/components/Navbar/Navbar.js.map +1 -1
  624. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  625. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  626. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
  627. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
  628. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  629. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  630. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
  631. package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
  632. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  633. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  634. package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
  635. package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
  636. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  637. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  638. package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
  639. package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
  640. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
  641. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
  642. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  643. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  644. package/dist/components/Page/Page.cjs.map +1 -1
  645. package/dist/components/Page/Page.js.map +1 -1
  646. package/dist/components/Page/Page.module.cjs.map +1 -1
  647. package/dist/components/Page/Page.module.js.map +1 -1
  648. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  649. package/dist/components/Pagination/Pagination.js.map +1 -1
  650. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  651. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  652. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
  653. package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
  654. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  655. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  656. package/dist/components/PinInput/PinInput.cjs.map +1 -1
  657. package/dist/components/PinInput/PinInput.js.map +1 -1
  658. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  659. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  660. package/dist/components/Popover/Popover.cjs.map +1 -1
  661. package/dist/components/Popover/Popover.js.map +1 -1
  662. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  663. package/dist/components/Popover/Popover.module.js.map +1 -1
  664. package/dist/components/Portal/Portal.cjs.map +1 -1
  665. package/dist/components/Portal/Portal.js.map +1 -1
  666. package/dist/components/Portal/anchor-position.cjs.map +1 -1
  667. package/dist/components/Portal/anchor-position.js.map +1 -1
  668. package/dist/components/Portal/escape-layer.cjs.map +1 -1
  669. package/dist/components/Portal/escape-layer.js.map +1 -1
  670. package/dist/components/Portal/portal-host.cjs.map +1 -1
  671. package/dist/components/Portal/portal-host.js.map +1 -1
  672. package/dist/components/Portal/tab-bridge.cjs +1 -1
  673. package/dist/components/Portal/tab-bridge.cjs.map +1 -1
  674. package/dist/components/Portal/tab-bridge.js +1 -5
  675. package/dist/components/Portal/tab-bridge.js.map +1 -1
  676. package/dist/components/Progress/Progress.cjs.map +1 -1
  677. package/dist/components/Progress/Progress.js.map +1 -1
  678. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  679. package/dist/components/Progress/Progress.module.js.map +1 -1
  680. package/dist/components/QRCode/QRCode.cjs.map +1 -1
  681. package/dist/components/QRCode/QRCode.js.map +1 -1
  682. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  683. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  684. package/dist/components/QRCode/qr-encode.cjs +1 -1
  685. package/dist/components/QRCode/qr-encode.cjs.map +1 -1
  686. package/dist/components/QRCode/qr-encode.js +7 -13
  687. package/dist/components/QRCode/qr-encode.js.map +1 -1
  688. package/dist/components/QRCode/qr-tables.cjs.map +1 -1
  689. package/dist/components/QRCode/qr-tables.js.map +1 -1
  690. package/dist/components/Radio/Radio.cjs.map +1 -1
  691. package/dist/components/Radio/Radio.js.map +1 -1
  692. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  693. package/dist/components/Radio/Radio.module.js.map +1 -1
  694. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
  695. package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
  696. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  697. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  698. package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
  699. package/dist/components/RatingStars/RatingStars.js.map +1 -1
  700. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  701. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  702. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
  703. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
  704. package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
  705. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
  706. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  707. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  708. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
  709. package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
  710. package/dist/components/Resizable/Resizable.cjs +1 -1
  711. package/dist/components/Resizable/Resizable.cjs.map +1 -1
  712. package/dist/components/Resizable/Resizable.js +1 -9
  713. package/dist/components/Resizable/Resizable.js.map +1 -1
  714. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  715. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  716. package/dist/components/Responsive/Responsive.cjs.map +1 -1
  717. package/dist/components/Responsive/Responsive.js.map +1 -1
  718. package/dist/components/Reveal/Reveal.cjs.map +1 -1
  719. package/dist/components/Reveal/Reveal.js.map +1 -1
  720. package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
  721. package/dist/components/Reveal/Reveal.module.js.map +1 -1
  722. package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
  723. package/dist/components/Reveal/reveal-threshold.js.map +1 -1
  724. package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
  725. package/dist/components/SafeArea/SafeArea.js.map +1 -1
  726. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  727. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  728. package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
  729. package/dist/components/Scheduler/Scheduler.js.map +1 -1
  730. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  731. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  732. package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
  733. package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
  734. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
  735. package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
  736. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  737. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  738. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  739. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  740. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  741. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  742. package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
  743. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  744. package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
  745. package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
  746. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  747. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  748. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  749. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  750. package/dist/components/Select/CaretIcon.cjs.map +1 -1
  751. package/dist/components/Select/CaretIcon.js.map +1 -1
  752. package/dist/components/Select/Select.cjs.map +1 -1
  753. package/dist/components/Select/Select.js.map +1 -1
  754. package/dist/components/Select/Select.module.cjs.map +1 -1
  755. package/dist/components/Select/Select.module.js.map +1 -1
  756. package/dist/components/Select/options.cjs.map +1 -1
  757. package/dist/components/Select/options.js.map +1 -1
  758. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  759. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  760. package/dist/components/Sidebar/Sidebar.js +13 -23
  761. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  762. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  763. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  764. package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
  765. package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
  766. package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
  767. package/dist/components/Sidebar/active-nav-key.js.map +1 -1
  768. package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
  769. package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
  770. package/dist/components/SignaturePad/SignaturePad.js +1 -5
  771. package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
  772. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  773. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  774. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  775. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  776. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  777. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  778. package/dist/components/Slider/Slider.cjs.map +1 -1
  779. package/dist/components/Slider/Slider.js.map +1 -1
  780. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  781. package/dist/components/Slider/Slider.module.js.map +1 -1
  782. package/dist/components/Spacer/Spacer.cjs.map +1 -1
  783. package/dist/components/Spacer/Spacer.js.map +1 -1
  784. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  785. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  786. package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
  787. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  788. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  789. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  790. package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
  791. package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
  792. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  793. package/dist/components/Spinner/Spinner.js.map +1 -1
  794. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  795. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  796. package/dist/components/Stat/Stat.cjs.map +1 -1
  797. package/dist/components/Stat/Stat.js.map +1 -1
  798. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  799. package/dist/components/Stat/Stat.module.js.map +1 -1
  800. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  801. package/dist/components/Stepper/Stepper.js.map +1 -1
  802. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  803. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  804. package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
  805. package/dist/components/StepperInput/StepperInput.js.map +1 -1
  806. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  807. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  808. package/dist/components/Switch/Switch.cjs.map +1 -1
  809. package/dist/components/Switch/Switch.js.map +1 -1
  810. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  811. package/dist/components/Switch/Switch.module.js.map +1 -1
  812. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
  813. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
  814. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  815. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  816. package/dist/components/Table/Table.cjs.map +1 -1
  817. package/dist/components/Table/Table.js.map +1 -1
  818. package/dist/components/Table/Table.module.cjs.map +1 -1
  819. package/dist/components/Table/Table.module.js.map +1 -1
  820. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  821. package/dist/components/Tabs/Tabs.js.map +1 -1
  822. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  823. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  824. package/dist/components/Tag/Tag.cjs.map +1 -1
  825. package/dist/components/Tag/Tag.js.map +1 -1
  826. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  827. package/dist/components/Tag/Tag.module.js.map +1 -1
  828. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  829. package/dist/components/Textarea/Textarea.js.map +1 -1
  830. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  831. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  832. package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
  833. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  834. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  835. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  836. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  837. package/dist/components/Timeline/Timeline.js.map +1 -1
  838. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  839. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  840. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  841. package/dist/components/Toast/Toast.module.js.map +1 -1
  842. package/dist/components/Toast/ToastProvider.cjs.map +1 -1
  843. package/dist/components/Toast/ToastProvider.js.map +1 -1
  844. package/dist/components/Toggle/Toggle.cjs.map +1 -1
  845. package/dist/components/Toggle/Toggle.js.map +1 -1
  846. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  847. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  848. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  849. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  850. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  851. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  852. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  853. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  854. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  855. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  856. package/dist/components/Tour/Tour.cjs +1 -1
  857. package/dist/components/Tour/Tour.cjs.map +1 -1
  858. package/dist/components/Tour/Tour.js +1 -5
  859. package/dist/components/Tour/Tour.js.map +1 -1
  860. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  861. package/dist/components/Tour/Tour.module.js.map +1 -1
  862. package/dist/components/Tour/tour-position.cjs.map +1 -1
  863. package/dist/components/Tour/tour-position.js.map +1 -1
  864. package/dist/components/Transfer/Transfer.cjs.map +1 -1
  865. package/dist/components/Transfer/Transfer.js.map +1 -1
  866. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  867. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  868. package/dist/components/Transfer/transfer-state.cjs.map +1 -1
  869. package/dist/components/Transfer/transfer-state.js.map +1 -1
  870. package/dist/components/TreeView/TreeView.cjs.map +1 -1
  871. package/dist/components/TreeView/TreeView.js.map +1 -1
  872. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  873. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  874. package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
  875. package/dist/components/TruncateText/TruncateText.js.map +1 -1
  876. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  877. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  878. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
  879. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
  880. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  881. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  882. package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
  883. package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
  884. package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
  885. package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
  886. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  887. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  888. package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
  889. package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
  890. package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
  891. package/dist/components/VirtualList/VirtualList.js.map +1 -1
  892. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  893. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  894. package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
  895. package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
  896. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  897. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  898. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  899. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  900. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  901. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  902. package/dist/components/Wizard/Wizard.cjs +1 -1
  903. package/dist/components/Wizard/Wizard.cjs.map +1 -1
  904. package/dist/components/Wizard/Wizard.js +4 -11
  905. package/dist/components/Wizard/Wizard.js.map +1 -1
  906. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  907. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  908. package/dist/data/create-data-provider.cjs.map +1 -1
  909. package/dist/data/create-data-provider.js.map +1 -1
  910. package/dist/data/data-provider-context.cjs.map +1 -1
  911. package/dist/data/data-provider-context.js.map +1 -1
  912. package/dist/data/use-resource.cjs.map +1 -1
  913. package/dist/data/use-resource.js.map +1 -1
  914. package/dist/editor/RichTextEditor.cjs.map +1 -1
  915. package/dist/editor/RichTextEditor.js.map +1 -1
  916. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  917. package/dist/editor/RichTextEditor.module.js.map +1 -1
  918. package/dist/editor.js +1 -2
  919. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
  920. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  921. package/dist/error-boundary/use-error-handler.cjs.map +1 -1
  922. package/dist/error-boundary/use-error-handler.js.map +1 -1
  923. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
  924. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
  925. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
  926. package/dist/feature-flags/growthbook-adapter.js.map +1 -1
  927. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
  928. package/dist/feature-flags/in-memory-adapter.js.map +1 -1
  929. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
  930. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
  931. package/dist/forms/FormField.cjs.map +1 -1
  932. package/dist/forms/FormField.js.map +1 -1
  933. package/dist/forms/br-validators.cjs.map +1 -1
  934. package/dist/forms/br-validators.js.map +1 -1
  935. package/dist/forms/masked-inputs.cjs.map +1 -1
  936. package/dist/forms/masked-inputs.js.map +1 -1
  937. package/dist/forms/use-viacep.cjs.map +1 -1
  938. package/dist/forms/use-viacep.js.map +1 -1
  939. package/dist/forms/use-zod-form.cjs.map +1 -1
  940. package/dist/forms/use-zod-form.js.map +1 -1
  941. package/dist/forms/validate-form.cjs.map +1 -1
  942. package/dist/forms/validate-form.js.map +1 -1
  943. package/dist/forms/zod-resolver.cjs.map +1 -1
  944. package/dist/forms/zod-resolver.js.map +1 -1
  945. package/dist/geo/TrajectoryMap.cjs.map +1 -1
  946. package/dist/geo/TrajectoryMap.js.map +1 -1
  947. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  948. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  949. package/dist/geo/bounds.cjs.map +1 -1
  950. package/dist/geo/bounds.js.map +1 -1
  951. package/dist/geo/create-position-tracker.cjs +1 -1
  952. package/dist/geo/create-position-tracker.cjs.map +1 -1
  953. package/dist/geo/create-position-tracker.js +1 -7
  954. package/dist/geo/create-position-tracker.js.map +1 -1
  955. package/dist/geo/distance.cjs.map +1 -1
  956. package/dist/geo/distance.js.map +1 -1
  957. package/dist/geo/estimate.cjs.map +1 -1
  958. package/dist/geo/estimate.js.map +1 -1
  959. package/dist/geo/leaflet-map.cjs.map +1 -1
  960. package/dist/geo/leaflet-map.js.map +1 -1
  961. package/dist/geo/projection.cjs.map +1 -1
  962. package/dist/geo/projection.js.map +1 -1
  963. package/dist/geo/routing.cjs.map +1 -1
  964. package/dist/geo/routing.js.map +1 -1
  965. package/dist/geo/types.cjs.map +1 -1
  966. package/dist/geo/types.js.map +1 -1
  967. package/dist/geo/use-position-tracker.cjs.map +1 -1
  968. package/dist/geo/use-position-tracker.js.map +1 -1
  969. package/dist/hooks/pwa-env.cjs.map +1 -1
  970. package/dist/hooks/pwa-env.js.map +1 -1
  971. package/dist/hooks/tab-sequence.cjs.map +1 -1
  972. package/dist/hooks/tab-sequence.js.map +1 -1
  973. package/dist/hooks/use-announce.cjs +1 -1
  974. package/dist/hooks/use-announce.cjs.map +1 -1
  975. package/dist/hooks/use-announce.js +2 -2
  976. package/dist/hooks/use-announce.js.map +1 -1
  977. package/dist/hooks/use-async.cjs.map +1 -1
  978. package/dist/hooks/use-async.js.map +1 -1
  979. package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
  980. package/dist/hooks/use-before-install-prompt.js.map +1 -1
  981. package/dist/hooks/use-breakpoint.cjs.map +1 -1
  982. package/dist/hooks/use-breakpoint.js.map +1 -1
  983. package/dist/hooks/use-click-outside.cjs.map +1 -1
  984. package/dist/hooks/use-click-outside.js.map +1 -1
  985. package/dist/hooks/use-client-filter.cjs.map +1 -1
  986. package/dist/hooks/use-client-filter.js.map +1 -1
  987. package/dist/hooks/use-clipboard.cjs.map +1 -1
  988. package/dist/hooks/use-clipboard.js.map +1 -1
  989. package/dist/hooks/use-countdown.cjs.map +1 -1
  990. package/dist/hooks/use-countdown.js.map +1 -1
  991. package/dist/hooks/use-counter.cjs.map +1 -1
  992. package/dist/hooks/use-counter.js.map +1 -1
  993. package/dist/hooks/use-debounce.cjs.map +1 -1
  994. package/dist/hooks/use-debounce.js.map +1 -1
  995. package/dist/hooks/use-deep-memo.cjs.map +1 -1
  996. package/dist/hooks/use-deep-memo.js.map +1 -1
  997. package/dist/hooks/use-disclosure.cjs.map +1 -1
  998. package/dist/hooks/use-disclosure.js.map +1 -1
  999. package/dist/hooks/use-document-title.cjs.map +1 -1
  1000. package/dist/hooks/use-document-title.js.map +1 -1
  1001. package/dist/hooks/use-document-visibility.cjs.map +1 -1
  1002. package/dist/hooks/use-document-visibility.js.map +1 -1
  1003. package/dist/hooks/use-draft-filters.cjs.map +1 -1
  1004. package/dist/hooks/use-draft-filters.js.map +1 -1
  1005. package/dist/hooks/use-event-listener.cjs.map +1 -1
  1006. package/dist/hooks/use-event-listener.js.map +1 -1
  1007. package/dist/hooks/use-favicon.cjs.map +1 -1
  1008. package/dist/hooks/use-favicon.js.map +1 -1
  1009. package/dist/hooks/use-focus-trap.cjs.map +1 -1
  1010. package/dist/hooks/use-focus-trap.js.map +1 -1
  1011. package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
  1012. package/dist/hooks/use-fullscreen-element.js.map +1 -1
  1013. package/dist/hooks/use-fullscreen.cjs +1 -1
  1014. package/dist/hooks/use-fullscreen.cjs.map +1 -1
  1015. package/dist/hooks/use-fullscreen.js +7 -23
  1016. package/dist/hooks/use-fullscreen.js.map +1 -1
  1017. package/dist/hooks/use-geolocation.cjs.map +1 -1
  1018. package/dist/hooks/use-geolocation.js.map +1 -1
  1019. package/dist/hooks/use-hover.cjs.map +1 -1
  1020. package/dist/hooks/use-hover.js.map +1 -1
  1021. package/dist/hooks/use-idle.cjs.map +1 -1
  1022. package/dist/hooks/use-idle.js.map +1 -1
  1023. package/dist/hooks/use-install-prompt.cjs +1 -1
  1024. package/dist/hooks/use-install-prompt.cjs.map +1 -1
  1025. package/dist/hooks/use-install-prompt.js +1 -1
  1026. package/dist/hooks/use-install-prompt.js.map +1 -1
  1027. package/dist/hooks/use-intersection-observer.cjs.map +1 -1
  1028. package/dist/hooks/use-intersection-observer.js.map +1 -1
  1029. package/dist/hooks/use-interval.cjs.map +1 -1
  1030. package/dist/hooks/use-interval.js.map +1 -1
  1031. package/dist/hooks/use-is-first-render.cjs.map +1 -1
  1032. package/dist/hooks/use-is-first-render.js.map +1 -1
  1033. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
  1034. package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
  1035. package/dist/hooks/use-latest-ref.cjs.map +1 -1
  1036. package/dist/hooks/use-latest-ref.js.map +1 -1
  1037. package/dist/hooks/use-list-state.cjs.map +1 -1
  1038. package/dist/hooks/use-list-state.js.map +1 -1
  1039. package/dist/hooks/use-local-storage.cjs +1 -1
  1040. package/dist/hooks/use-local-storage.cjs.map +1 -1
  1041. package/dist/hooks/use-local-storage.js +2 -5
  1042. package/dist/hooks/use-local-storage.js.map +1 -1
  1043. package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
  1044. package/dist/hooks/use-long-press-handlers.js.map +1 -1
  1045. package/dist/hooks/use-long-press.cjs.map +1 -1
  1046. package/dist/hooks/use-long-press.js.map +1 -1
  1047. package/dist/hooks/use-map.cjs.map +1 -1
  1048. package/dist/hooks/use-map.js.map +1 -1
  1049. package/dist/hooks/use-media-devices.cjs.map +1 -1
  1050. package/dist/hooks/use-media-devices.js.map +1 -1
  1051. package/dist/hooks/use-media-permission.cjs +1 -1
  1052. package/dist/hooks/use-media-permission.cjs.map +1 -1
  1053. package/dist/hooks/use-media-permission.js +2 -5
  1054. package/dist/hooks/use-media-permission.js.map +1 -1
  1055. package/dist/hooks/use-media-query.cjs.map +1 -1
  1056. package/dist/hooks/use-media-query.js.map +1 -1
  1057. package/dist/hooks/use-object-url.cjs.map +1 -1
  1058. package/dist/hooks/use-object-url.js.map +1 -1
  1059. package/dist/hooks/use-online.cjs.map +1 -1
  1060. package/dist/hooks/use-online.js.map +1 -1
  1061. package/dist/hooks/use-pagination.cjs.map +1 -1
  1062. package/dist/hooks/use-pagination.js.map +1 -1
  1063. package/dist/hooks/use-previous.cjs.map +1 -1
  1064. package/dist/hooks/use-previous.js.map +1 -1
  1065. package/dist/hooks/use-push-to-talk.cjs.map +1 -1
  1066. package/dist/hooks/use-push-to-talk.js.map +1 -1
  1067. package/dist/hooks/use-queue.cjs.map +1 -1
  1068. package/dist/hooks/use-queue.js.map +1 -1
  1069. package/dist/hooks/use-resize-observer.cjs.map +1 -1
  1070. package/dist/hooks/use-resize-observer.js.map +1 -1
  1071. package/dist/hooks/use-scroll-lock.cjs.map +1 -1
  1072. package/dist/hooks/use-scroll-lock.js.map +1 -1
  1073. package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
  1074. package/dist/hooks/use-scroll-overflow.js.map +1 -1
  1075. package/dist/hooks/use-service-worker-update.cjs.map +1 -1
  1076. package/dist/hooks/use-service-worker-update.js.map +1 -1
  1077. package/dist/hooks/use-set.cjs.map +1 -1
  1078. package/dist/hooks/use-set.js.map +1 -1
  1079. package/dist/hooks/use-sortable.cjs.map +1 -1
  1080. package/dist/hooks/use-sortable.js.map +1 -1
  1081. package/dist/hooks/use-stable-callback.cjs.map +1 -1
  1082. package/dist/hooks/use-stable-callback.js.map +1 -1
  1083. package/dist/hooks/use-storage-estimate.cjs.map +1 -1
  1084. package/dist/hooks/use-storage-estimate.js.map +1 -1
  1085. package/dist/hooks/use-throttle.cjs.map +1 -1
  1086. package/dist/hooks/use-throttle.js.map +1 -1
  1087. package/dist/hooks/use-timeout.cjs.map +1 -1
  1088. package/dist/hooks/use-timeout.js.map +1 -1
  1089. package/dist/hooks/use-toggle.cjs.map +1 -1
  1090. package/dist/hooks/use-toggle.js.map +1 -1
  1091. package/dist/hooks/use-typewriter.cjs.map +1 -1
  1092. package/dist/hooks/use-typewriter.js.map +1 -1
  1093. package/dist/hooks/use-window-size.cjs.map +1 -1
  1094. package/dist/hooks/use-window-size.js.map +1 -1
  1095. package/dist/http/api-client.cjs.map +1 -1
  1096. package/dist/http/api-client.js.map +1 -1
  1097. package/dist/http/build-url.cjs.map +1 -1
  1098. package/dist/http/build-url.js.map +1 -1
  1099. package/dist/http/credential-scope.cjs.map +1 -1
  1100. package/dist/http/credential-scope.js.map +1 -1
  1101. package/dist/http/csrf.cjs.map +1 -1
  1102. package/dist/http/csrf.js.map +1 -1
  1103. package/dist/http/decode-response.cjs.map +1 -1
  1104. package/dist/http/decode-response.js.map +1 -1
  1105. package/dist/http/describe-api-error.cjs.map +1 -1
  1106. package/dist/http/describe-api-error.js.map +1 -1
  1107. package/dist/http/errors.cjs.map +1 -1
  1108. package/dist/http/errors.js.map +1 -1
  1109. package/dist/http/idempotency.cjs.map +1 -1
  1110. package/dist/http/idempotency.js.map +1 -1
  1111. package/dist/http/parse-response.cjs.map +1 -1
  1112. package/dist/http/parse-response.js.map +1 -1
  1113. package/dist/http/resumable-upload.cjs +1 -1
  1114. package/dist/http/resumable-upload.cjs.map +1 -1
  1115. package/dist/http/resumable-upload.js +141 -105
  1116. package/dist/http/resumable-upload.js.map +1 -1
  1117. package/dist/http/retry.cjs +1 -1
  1118. package/dist/http/retry.cjs.map +1 -1
  1119. package/dist/http/retry.js +5 -6
  1120. package/dist/http/retry.js.map +1 -1
  1121. package/dist/http/timeout.cjs.map +1 -1
  1122. package/dist/http/timeout.js.map +1 -1
  1123. package/dist/http/upload-with-progress.cjs +1 -1
  1124. package/dist/http/upload-with-progress.cjs.map +1 -1
  1125. package/dist/http/upload-with-progress.js +2 -7
  1126. package/dist/http/upload-with-progress.js.map +1 -1
  1127. package/dist/http/use-describe-api-error.cjs.map +1 -1
  1128. package/dist/http/use-describe-api-error.js.map +1 -1
  1129. package/dist/http/use-poll.cjs +1 -1
  1130. package/dist/http/use-poll.cjs.map +1 -1
  1131. package/dist/http/use-poll.js +2 -5
  1132. package/dist/http/use-poll.js.map +1 -1
  1133. package/dist/i18n/I18nProvider.cjs.map +1 -1
  1134. package/dist/i18n/I18nProvider.js.map +1 -1
  1135. package/dist/i18n/create-i18n.cjs.map +1 -1
  1136. package/dist/i18n/create-i18n.js.map +1 -1
  1137. package/dist/icons/Icon.cjs.map +1 -1
  1138. package/dist/icons/Icon.js.map +1 -1
  1139. package/dist/icons/IconPicker.cjs.map +1 -1
  1140. package/dist/icons/IconPicker.js.map +1 -1
  1141. package/dist/icons/IconPicker.module.cjs.map +1 -1
  1142. package/dist/icons/IconPicker.module.js.map +1 -1
  1143. package/dist/icons/IconProvider.cjs.map +1 -1
  1144. package/dist/icons/IconProvider.js.map +1 -1
  1145. package/dist/icons/alias.cjs.map +1 -1
  1146. package/dist/icons/alias.js.map +1 -1
  1147. package/dist/icons/generated/aliases.cjs.map +1 -1
  1148. package/dist/icons/generated/aliases.js.map +1 -1
  1149. package/dist/icons/generated/icon-names.cjs.map +1 -1
  1150. package/dist/icons/generated/icon-names.js.map +1 -1
  1151. package/dist/icons/generated/loaders.cjs.map +1 -1
  1152. package/dist/icons/generated/loaders.js.map +1 -1
  1153. package/dist/icons/generated/shard-00.cjs.map +1 -1
  1154. package/dist/icons/generated/shard-00.js.map +1 -1
  1155. package/dist/icons/generated/shard-01.cjs.map +1 -1
  1156. package/dist/icons/generated/shard-01.js.map +1 -1
  1157. package/dist/icons/generated/shard-02.cjs.map +1 -1
  1158. package/dist/icons/generated/shard-02.js.map +1 -1
  1159. package/dist/icons/generated/shard-03.cjs.map +1 -1
  1160. package/dist/icons/generated/shard-03.js.map +1 -1
  1161. package/dist/icons/generated/shard-04.cjs.map +1 -1
  1162. package/dist/icons/generated/shard-04.js.map +1 -1
  1163. package/dist/icons/generated/shard-05.cjs.map +1 -1
  1164. package/dist/icons/generated/shard-05.js.map +1 -1
  1165. package/dist/icons/generated/shard-06.cjs.map +1 -1
  1166. package/dist/icons/generated/shard-06.js.map +1 -1
  1167. package/dist/icons/generated/shard-07.cjs.map +1 -1
  1168. package/dist/icons/generated/shard-07.js.map +1 -1
  1169. package/dist/icons/generated/shard-08.cjs.map +1 -1
  1170. package/dist/icons/generated/shard-08.js.map +1 -1
  1171. package/dist/icons/generated/shard-09.cjs.map +1 -1
  1172. package/dist/icons/generated/shard-09.js.map +1 -1
  1173. package/dist/icons/generated/shard-10.cjs.map +1 -1
  1174. package/dist/icons/generated/shard-10.js.map +1 -1
  1175. package/dist/icons/generated/shard-11.cjs.map +1 -1
  1176. package/dist/icons/generated/shard-11.js.map +1 -1
  1177. package/dist/icons/generated/shard-12.cjs.map +1 -1
  1178. package/dist/icons/generated/shard-12.js.map +1 -1
  1179. package/dist/icons/generated/shard-13.cjs.map +1 -1
  1180. package/dist/icons/generated/shard-13.js.map +1 -1
  1181. package/dist/icons/generated/shard-14.cjs.map +1 -1
  1182. package/dist/icons/generated/shard-14.js.map +1 -1
  1183. package/dist/icons/generated/shard-15.cjs.map +1 -1
  1184. package/dist/icons/generated/shard-15.js.map +1 -1
  1185. package/dist/icons/generated/shard-16.cjs.map +1 -1
  1186. package/dist/icons/generated/shard-16.js.map +1 -1
  1187. package/dist/icons/generated/shard-17.cjs.map +1 -1
  1188. package/dist/icons/generated/shard-17.js.map +1 -1
  1189. package/dist/icons/generated/shard-18.cjs.map +1 -1
  1190. package/dist/icons/generated/shard-18.js.map +1 -1
  1191. package/dist/icons/generated/shard-19.cjs.map +1 -1
  1192. package/dist/icons/generated/shard-19.js.map +1 -1
  1193. package/dist/icons/generated/shard-20.cjs.map +1 -1
  1194. package/dist/icons/generated/shard-20.js.map +1 -1
  1195. package/dist/icons/generated/shard-21.cjs.map +1 -1
  1196. package/dist/icons/generated/shard-21.js.map +1 -1
  1197. package/dist/icons/generated/shard-22.cjs.map +1 -1
  1198. package/dist/icons/generated/shard-22.js.map +1 -1
  1199. package/dist/icons/generated/shard-23.cjs.map +1 -1
  1200. package/dist/icons/generated/shard-23.js.map +1 -1
  1201. package/dist/icons/generated/shard-24.cjs.map +1 -1
  1202. package/dist/icons/generated/shard-24.js.map +1 -1
  1203. package/dist/icons/generated/shard-25.cjs.map +1 -1
  1204. package/dist/icons/generated/shard-25.js.map +1 -1
  1205. package/dist/icons/generated/shard-26.cjs.map +1 -1
  1206. package/dist/icons/generated/shard-26.js.map +1 -1
  1207. package/dist/icons/generated/shard-27.cjs.map +1 -1
  1208. package/dist/icons/generated/shard-27.js.map +1 -1
  1209. package/dist/icons/generated/shard-28.cjs.map +1 -1
  1210. package/dist/icons/generated/shard-28.js.map +1 -1
  1211. package/dist/icons/generated/shard-29.cjs.map +1 -1
  1212. package/dist/icons/generated/shard-29.js.map +1 -1
  1213. package/dist/icons/generated/shard-30.cjs.map +1 -1
  1214. package/dist/icons/generated/shard-30.js.map +1 -1
  1215. package/dist/icons/generated/shard-31.cjs.map +1 -1
  1216. package/dist/icons/generated/shard-31.js.map +1 -1
  1217. package/dist/icons/generated/shard-32.cjs.map +1 -1
  1218. package/dist/icons/generated/shard-32.js.map +1 -1
  1219. package/dist/icons/generated/shard-33.cjs.map +1 -1
  1220. package/dist/icons/generated/shard-33.js.map +1 -1
  1221. package/dist/icons/generated/shard-34.cjs.map +1 -1
  1222. package/dist/icons/generated/shard-34.js.map +1 -1
  1223. package/dist/icons/generated/shard-35.cjs.map +1 -1
  1224. package/dist/icons/generated/shard-35.js.map +1 -1
  1225. package/dist/icons/generated/shard-36.cjs.map +1 -1
  1226. package/dist/icons/generated/shard-36.js.map +1 -1
  1227. package/dist/icons/generated/shard-37.cjs.map +1 -1
  1228. package/dist/icons/generated/shard-37.js.map +1 -1
  1229. package/dist/icons/generated/shard-38.cjs.map +1 -1
  1230. package/dist/icons/generated/shard-38.js.map +1 -1
  1231. package/dist/icons/generated/shard-39.cjs.map +1 -1
  1232. package/dist/icons/generated/shard-39.js.map +1 -1
  1233. package/dist/icons/generated/shard-40.cjs.map +1 -1
  1234. package/dist/icons/generated/shard-40.js.map +1 -1
  1235. package/dist/icons/generated/shard-41.cjs.map +1 -1
  1236. package/dist/icons/generated/shard-41.js.map +1 -1
  1237. package/dist/icons/generated/shard-42.cjs.map +1 -1
  1238. package/dist/icons/generated/shard-42.js.map +1 -1
  1239. package/dist/icons/generated/shard-43.cjs.map +1 -1
  1240. package/dist/icons/generated/shard-43.js.map +1 -1
  1241. package/dist/icons/generated/shard-44.cjs.map +1 -1
  1242. package/dist/icons/generated/shard-44.js.map +1 -1
  1243. package/dist/icons/generated/shard-45.cjs.map +1 -1
  1244. package/dist/icons/generated/shard-45.js.map +1 -1
  1245. package/dist/icons/icon-context.cjs.map +1 -1
  1246. package/dist/icons/icon-context.js.map +1 -1
  1247. package/dist/icons/is-icon-name.cjs.map +1 -1
  1248. package/dist/icons/is-icon-name.js.map +1 -1
  1249. package/dist/icons/material-symbols.cjs.map +1 -1
  1250. package/dist/icons/material-symbols.js.map +1 -1
  1251. package/dist/icons/normalize-icon-name.cjs.map +1 -1
  1252. package/dist/icons/normalize-icon-name.js.map +1 -1
  1253. package/dist/icons/shard-cache.cjs +1 -1
  1254. package/dist/icons/shard-cache.cjs.map +1 -1
  1255. package/dist/icons/shard-cache.js +2 -5
  1256. package/dist/icons/shard-cache.js.map +1 -1
  1257. package/dist/icons/use-icon.cjs.map +1 -1
  1258. package/dist/icons/use-icon.js.map +1 -1
  1259. package/dist/icons/validate-icon-name.cjs.map +1 -1
  1260. package/dist/icons/validate-icon-name.js.map +1 -1
  1261. package/dist/icons-virtual.cjs.map +1 -1
  1262. package/dist/icons-virtual.js.map +1 -1
  1263. package/dist/imaging/canvas.cjs.map +1 -1
  1264. package/dist/imaging/canvas.js.map +1 -1
  1265. package/dist/imaging/compress.cjs.map +1 -1
  1266. package/dist/imaging/compress.js.map +1 -1
  1267. package/dist/imaging/decode.cjs.map +1 -1
  1268. package/dist/imaging/decode.js.map +1 -1
  1269. package/dist/imaging/encode.cjs.map +1 -1
  1270. package/dist/imaging/encode.js.map +1 -1
  1271. package/dist/imaging/exceptions.cjs.map +1 -1
  1272. package/dist/imaging/exceptions.js.map +1 -1
  1273. package/dist/imaging/frame.cjs.map +1 -1
  1274. package/dist/imaging/frame.js.map +1 -1
  1275. package/dist/imaging/thumbnails.cjs.map +1 -1
  1276. package/dist/imaging/thumbnails.js.map +1 -1
  1277. package/dist/imaging/transform.cjs.map +1 -1
  1278. package/dist/imaging/transform.js.map +1 -1
  1279. package/dist/imaging/use-image-processing.cjs.map +1 -1
  1280. package/dist/imaging/use-image-processing.js.map +1 -1
  1281. package/dist/logger/logger.cjs.map +1 -1
  1282. package/dist/logger/logger.js.map +1 -1
  1283. package/dist/neural.cjs.map +1 -1
  1284. package/dist/neural.js.map +1 -1
  1285. package/dist/oauth/GoogleSignIn.cjs +1 -1
  1286. package/dist/oauth/GoogleSignIn.cjs.map +1 -1
  1287. package/dist/oauth/GoogleSignIn.js +6 -9
  1288. package/dist/oauth/GoogleSignIn.js.map +1 -1
  1289. package/dist/oauth/callback.cjs.map +1 -1
  1290. package/dist/oauth/callback.js.map +1 -1
  1291. package/dist/oauth/use-oauth-callback.cjs.map +1 -1
  1292. package/dist/oauth/use-oauth-callback.js.map +1 -1
  1293. package/dist/offline/conflict.cjs.map +1 -1
  1294. package/dist/offline/conflict.js.map +1 -1
  1295. package/dist/offline/create-offline-database.cjs.map +1 -1
  1296. package/dist/offline/create-offline-database.js.map +1 -1
  1297. package/dist/offline/create-offline-store.cjs +1 -1
  1298. package/dist/offline/create-offline-store.cjs.map +1 -1
  1299. package/dist/offline/create-offline-store.js +1 -5
  1300. package/dist/offline/create-offline-store.js.map +1 -1
  1301. package/dist/offline/create-offline-sync.cjs +1 -1
  1302. package/dist/offline/create-offline-sync.cjs.map +1 -1
  1303. package/dist/offline/create-offline-sync.js +9 -14
  1304. package/dist/offline/create-offline-sync.js.map +1 -1
  1305. package/dist/offline/use-offline-sync.cjs.map +1 -1
  1306. package/dist/offline/use-offline-sync.js.map +1 -1
  1307. package/dist/perf/cache-size.cjs.map +1 -1
  1308. package/dist/perf/cache-size.js.map +1 -1
  1309. package/dist/perf/device.cjs.map +1 -1
  1310. package/dist/perf/device.js.map +1 -1
  1311. package/dist/perf/format.cjs.map +1 -1
  1312. package/dist/perf/format.js.map +1 -1
  1313. package/dist/perf/profiler.cjs.map +1 -1
  1314. package/dist/perf/profiler.js.map +1 -1
  1315. package/dist/push/use-push-subscription.cjs.map +1 -1
  1316. package/dist/push/use-push-subscription.js.map +1 -1
  1317. package/dist/push/utils.cjs.map +1 -1
  1318. package/dist/push/utils.js.map +1 -1
  1319. package/dist/push/web-push-client.cjs.map +1 -1
  1320. package/dist/push/web-push-client.js.map +1 -1
  1321. package/dist/query/QueryProvider.cjs.map +1 -1
  1322. package/dist/query/QueryProvider.js.map +1 -1
  1323. package/dist/query/constants.cjs.map +1 -1
  1324. package/dist/query/constants.js.map +1 -1
  1325. package/dist/query/create-query-keys.cjs.map +1 -1
  1326. package/dist/query/create-query-keys.js.map +1 -1
  1327. package/dist/query/foreign-client-warning.cjs.map +1 -1
  1328. package/dist/query/foreign-client-warning.js.map +1 -1
  1329. package/dist/query/offline-persistence.cjs +1 -1
  1330. package/dist/query/offline-persistence.cjs.map +1 -1
  1331. package/dist/query/offline-persistence.js +2 -10
  1332. package/dist/query/offline-persistence.js.map +1 -1
  1333. package/dist/query/optimistic.cjs.map +1 -1
  1334. package/dist/query/optimistic.js.map +1 -1
  1335. package/dist/query/pagination.cjs.map +1 -1
  1336. package/dist/query/pagination.js.map +1 -1
  1337. package/dist/query/retry-policy.cjs.map +1 -1
  1338. package/dist/query/retry-policy.js.map +1 -1
  1339. package/dist/query/use-cursor-query.cjs.map +1 -1
  1340. package/dist/query/use-cursor-query.js.map +1 -1
  1341. package/dist/query/use-offline-mutation.cjs.map +1 -1
  1342. package/dist/query/use-offline-mutation.js.map +1 -1
  1343. package/dist/query/use-paginated-query.cjs.map +1 -1
  1344. package/dist/query/use-paginated-query.js.map +1 -1
  1345. package/dist/router/AppRouter.cjs.map +1 -1
  1346. package/dist/router/AppRouter.js.map +1 -1
  1347. package/dist/router/RouteGuard.cjs.map +1 -1
  1348. package/dist/router/RouteGuard.js.map +1 -1
  1349. package/dist/router/index.js +2 -2
  1350. package/dist/share/share-or-download.cjs.map +1 -1
  1351. package/dist/share/share-or-download.js.map +1 -1
  1352. package/dist/share/share.cjs.map +1 -1
  1353. package/dist/share/share.js.map +1 -1
  1354. package/dist/sse/create-event-stream.cjs.map +1 -1
  1355. package/dist/sse/create-event-stream.js.map +1 -1
  1356. package/dist/sse/use-event-stream.cjs.map +1 -1
  1357. package/dist/sse/use-event-stream.js.map +1 -1
  1358. package/dist/store/create-selectors.cjs.map +1 -1
  1359. package/dist/store/create-selectors.js.map +1 -1
  1360. package/dist/store/create-store.cjs.map +1 -1
  1361. package/dist/store/create-store.js.map +1 -1
  1362. package/dist/sw/background-sync.cjs +1 -1
  1363. package/dist/sw/background-sync.cjs.map +1 -1
  1364. package/dist/sw/background-sync.js +32 -31
  1365. package/dist/sw/background-sync.js.map +1 -1
  1366. package/dist/sw/cache-inspect.cjs.map +1 -1
  1367. package/dist/sw/cache-inspect.js.map +1 -1
  1368. package/dist/sw/cache.cjs +1 -1
  1369. package/dist/sw/cache.cjs.map +1 -1
  1370. package/dist/sw/cache.js +2 -6
  1371. package/dist/sw/cache.js.map +1 -1
  1372. package/dist/sw/create-push-handler.cjs.map +1 -1
  1373. package/dist/sw/create-push-handler.js.map +1 -1
  1374. package/dist/sw/credential-headers.cjs.map +1 -1
  1375. package/dist/sw/credential-headers.js.map +1 -1
  1376. package/dist/sw/periodic-sync.cjs.map +1 -1
  1377. package/dist/sw/periodic-sync.js.map +1 -1
  1378. package/dist/sw/register-service-worker.cjs.map +1 -1
  1379. package/dist/sw/register-service-worker.js.map +1 -1
  1380. package/dist/sw/session-data.cjs.map +1 -1
  1381. package/dist/sw/session-data.js.map +1 -1
  1382. package/dist/sw.d.ts +46 -8
  1383. package/dist/tabular/assets.cjs.map +1 -1
  1384. package/dist/tabular/assets.js.map +1 -1
  1385. package/dist/tabular/cache.cjs.map +1 -1
  1386. package/dist/tabular/cache.js.map +1 -1
  1387. package/dist/tabular/compact.cjs.map +1 -1
  1388. package/dist/tabular/compact.js.map +1 -1
  1389. package/dist/tabular/exceptions.cjs.map +1 -1
  1390. package/dist/tabular/exceptions.js.map +1 -1
  1391. package/dist/tabular/manifest.cjs.map +1 -1
  1392. package/dist/tabular/manifest.js.map +1 -1
  1393. package/dist/tabular/predictor.cjs.map +1 -1
  1394. package/dist/tabular/predictor.js.map +1 -1
  1395. package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
  1396. package/dist/tabular/use-tabular-predictor.js.map +1 -1
  1397. package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
  1398. package/dist/telemetry/TelemetryProvider.js.map +1 -1
  1399. package/dist/telemetry/app-error-adapter.cjs.map +1 -1
  1400. package/dist/telemetry/app-error-adapter.js.map +1 -1
  1401. package/dist/telemetry/app-error-queue.cjs.map +1 -1
  1402. package/dist/telemetry/app-error-queue.js.map +1 -1
  1403. package/dist/telemetry/app-error-reporter.cjs +1 -1
  1404. package/dist/telemetry/app-error-reporter.cjs.map +1 -1
  1405. package/dist/telemetry/app-error-reporter.js +1 -1
  1406. package/dist/telemetry/app-error-reporter.js.map +1 -1
  1407. package/dist/telemetry/app-error-schema.cjs.map +1 -1
  1408. package/dist/telemetry/app-error-schema.js.map +1 -1
  1409. package/dist/telemetry/app-error-transport.cjs.map +1 -1
  1410. package/dist/telemetry/app-error-transport.js.map +1 -1
  1411. package/dist/telemetry/console-adapter.cjs.map +1 -1
  1412. package/dist/telemetry/console-adapter.js.map +1 -1
  1413. package/dist/telemetry/describe-app-error.cjs.map +1 -1
  1414. package/dist/telemetry/describe-app-error.js.map +1 -1
  1415. package/dist/telemetry/posthog-adapter.cjs +1 -1
  1416. package/dist/telemetry/posthog-adapter.cjs.map +1 -1
  1417. package/dist/telemetry/posthog-adapter.js +1 -5
  1418. package/dist/telemetry/posthog-adapter.js.map +1 -1
  1419. package/dist/telemetry/sentry-adapter.cjs.map +1 -1
  1420. package/dist/telemetry/sentry-adapter.js.map +1 -1
  1421. package/dist/tempest-react-sdk.cjs +1 -1
  1422. package/dist/tempest-react-sdk.d.ts +448 -15
  1423. package/dist/tempest-react-sdk.js +119 -119
  1424. package/dist/testing/create-mock-handlers.cjs.map +1 -1
  1425. package/dist/testing/create-mock-handlers.js.map +1 -1
  1426. package/dist/testing.js +1 -2
  1427. package/dist/theme/ThemeProvider.cjs.map +1 -1
  1428. package/dist/theme/ThemeProvider.js.map +1 -1
  1429. package/dist/theme/apply-theme.cjs.map +1 -1
  1430. package/dist/theme/apply-theme.js.map +1 -1
  1431. package/dist/theme/color.cjs.map +1 -1
  1432. package/dist/theme/color.js.map +1 -1
  1433. package/dist/theme/create-theme.cjs.map +1 -1
  1434. package/dist/theme/create-theme.js.map +1 -1
  1435. package/dist/theme/data-viz-ramps.cjs.map +1 -1
  1436. package/dist/theme/data-viz-ramps.js.map +1 -1
  1437. package/dist/theme/initial-theme.cjs.map +1 -1
  1438. package/dist/theme/initial-theme.js.map +1 -1
  1439. package/dist/theme/inverse-render.cjs.map +1 -1
  1440. package/dist/theme/inverse-render.js.map +1 -1
  1441. package/dist/theme/inverse-restore.cjs.map +1 -1
  1442. package/dist/theme/inverse-restore.js.map +1 -1
  1443. package/dist/theme/inverse-surface.cjs.map +1 -1
  1444. package/dist/theme/inverse-surface.js.map +1 -1
  1445. package/dist/theme/status-tokens.cjs.map +1 -1
  1446. package/dist/theme/status-tokens.js.map +1 -1
  1447. package/dist/theme/theme-presets.cjs.map +1 -1
  1448. package/dist/theme/theme-presets.js.map +1 -1
  1449. package/dist/utils/absent.cjs.map +1 -1
  1450. package/dist/utils/absent.js.map +1 -1
  1451. package/dist/utils/arrays.cjs.map +1 -1
  1452. package/dist/utils/arrays.js.map +1 -1
  1453. package/dist/utils/base64.cjs.map +1 -1
  1454. package/dist/utils/base64.js.map +1 -1
  1455. package/dist/utils/cn.cjs.map +1 -1
  1456. package/dist/utils/cn.js.map +1 -1
  1457. package/dist/utils/compare-values.cjs.map +1 -1
  1458. package/dist/utils/compare-values.js.map +1 -1
  1459. package/dist/utils/compressed-storage.cjs.map +1 -1
  1460. package/dist/utils/compressed-storage.js.map +1 -1
  1461. package/dist/utils/csv.cjs +3 -3
  1462. package/dist/utils/csv.cjs.map +1 -1
  1463. package/dist/utils/csv.js +11 -10
  1464. package/dist/utils/csv.js.map +1 -1
  1465. package/dist/utils/dev-mode.cjs.map +1 -1
  1466. package/dist/utils/dev-mode.js.map +1 -1
  1467. package/dist/utils/duplicate-instance.cjs.map +1 -1
  1468. package/dist/utils/duplicate-instance.js.map +1 -1
  1469. package/dist/utils/format.cjs.map +1 -1
  1470. package/dist/utils/format.js.map +1 -1
  1471. package/dist/utils/functions.cjs +1 -1
  1472. package/dist/utils/functions.cjs.map +1 -1
  1473. package/dist/utils/functions.js +1 -1
  1474. package/dist/utils/functions.js.map +1 -1
  1475. package/dist/utils/guards.cjs.map +1 -1
  1476. package/dist/utils/guards.js.map +1 -1
  1477. package/dist/utils/ids.cjs.map +1 -1
  1478. package/dist/utils/ids.js.map +1 -1
  1479. package/dist/utils/intl-cache.cjs.map +1 -1
  1480. package/dist/utils/intl-cache.js.map +1 -1
  1481. package/dist/utils/json-frame.cjs.map +1 -1
  1482. package/dist/utils/json-frame.js.map +1 -1
  1483. package/dist/utils/numbers.cjs.map +1 -1
  1484. package/dist/utils/numbers.js.map +1 -1
  1485. package/dist/utils/objects.cjs.map +1 -1
  1486. package/dist/utils/objects.js.map +1 -1
  1487. package/dist/{telemetry/app-error-owner.cjs → utils/owner-fingerprint.cjs} +2 -2
  1488. package/dist/utils/owner-fingerprint.cjs.map +1 -0
  1489. package/dist/{telemetry/app-error-owner.js → utils/owner-fingerprint.js} +3 -3
  1490. package/dist/utils/owner-fingerprint.js.map +1 -0
  1491. package/dist/utils/promises.cjs.map +1 -1
  1492. package/dist/utils/promises.js.map +1 -1
  1493. package/dist/utils/relative-time.cjs.map +1 -1
  1494. package/dist/utils/relative-time.js.map +1 -1
  1495. package/dist/utils/safe-url.cjs.map +1 -1
  1496. package/dist/utils/safe-url.js.map +1 -1
  1497. package/dist/utils/schema-like.cjs.map +1 -1
  1498. package/dist/utils/schema-like.js.map +1 -1
  1499. package/dist/utils/storage.cjs +1 -1
  1500. package/dist/utils/storage.cjs.map +1 -1
  1501. package/dist/utils/storage.js +2 -2
  1502. package/dist/utils/storage.js.map +1 -1
  1503. package/dist/utils/strings.cjs.map +1 -1
  1504. package/dist/utils/strings.js.map +1 -1
  1505. package/dist/utils/xlsx.cjs.map +1 -1
  1506. package/dist/utils/xlsx.js.map +1 -1
  1507. package/dist/vision/core/canvas.cjs.map +1 -1
  1508. package/dist/vision/core/canvas.js.map +1 -1
  1509. package/dist/vision/core/dtypes.cjs.map +1 -1
  1510. package/dist/vision/core/dtypes.js.map +1 -1
  1511. package/dist/vision/core/exceptions.cjs.map +1 -1
  1512. package/dist/vision/core/exceptions.js.map +1 -1
  1513. package/dist/vision/core/graph.cjs.map +1 -1
  1514. package/dist/vision/core/graph.js.map +1 -1
  1515. package/dist/vision/core/metadata.cjs +1 -1
  1516. package/dist/vision/core/metadata.cjs.map +1 -1
  1517. package/dist/vision/core/metadata.js +9 -26
  1518. package/dist/vision/core/metadata.js.map +1 -1
  1519. package/dist/vision/core/providers.cjs.map +1 -1
  1520. package/dist/vision/core/providers.js.map +1 -1
  1521. package/dist/vision/core/session.cjs.map +1 -1
  1522. package/dist/vision/core/session.js.map +1 -1
  1523. package/dist/vision/core/timing.cjs.map +1 -1
  1524. package/dist/vision/core/timing.js.map +1 -1
  1525. package/dist/vision/fusion.cjs.map +1 -1
  1526. package/dist/vision/fusion.js.map +1 -1
  1527. package/dist/vision/index.cjs.map +1 -1
  1528. package/dist/vision/index.js.map +1 -1
  1529. package/dist/vision/io/image.cjs.map +1 -1
  1530. package/dist/vision/io/image.js.map +1 -1
  1531. package/dist/vision/labels.cjs.map +1 -1
  1532. package/dist/vision/labels.js.map +1 -1
  1533. package/dist/vision/luminance.cjs.map +1 -1
  1534. package/dist/vision/luminance.js.map +1 -1
  1535. package/dist/vision/normalization.cjs.map +1 -1
  1536. package/dist/vision/normalization.js.map +1 -1
  1537. package/dist/vision/postprocess/classification.cjs.map +1 -1
  1538. package/dist/vision/postprocess/classification.js.map +1 -1
  1539. package/dist/vision/postprocess/detection.cjs.map +1 -1
  1540. package/dist/vision/postprocess/detection.js.map +1 -1
  1541. package/dist/vision/postprocess/segmentation.cjs.map +1 -1
  1542. package/dist/vision/postprocess/segmentation.js.map +1 -1
  1543. package/dist/vision/preprocess/image.cjs.map +1 -1
  1544. package/dist/vision/preprocess/image.js.map +1 -1
  1545. package/dist/vision/preprocess/pipeline.cjs.map +1 -1
  1546. package/dist/vision/preprocess/pipeline.js.map +1 -1
  1547. package/dist/vision/results.cjs.map +1 -1
  1548. package/dist/vision/results.js.map +1 -1
  1549. package/dist/vision/tasks/base.cjs.map +1 -1
  1550. package/dist/vision/tasks/base.js.map +1 -1
  1551. package/dist/vision/tasks/classifier.cjs.map +1 -1
  1552. package/dist/vision/tasks/classifier.js.map +1 -1
  1553. package/dist/vision/tasks/detectClassify.cjs.map +1 -1
  1554. package/dist/vision/tasks/detectClassify.js.map +1 -1
  1555. package/dist/vision/tasks/detector.cjs.map +1 -1
  1556. package/dist/vision/tasks/detector.js.map +1 -1
  1557. package/dist/vision/tasks/segmenter.cjs.map +1 -1
  1558. package/dist/vision/tasks/segmenter.js.map +1 -1
  1559. package/dist/vision/types.cjs.map +1 -1
  1560. package/dist/vision/types.js.map +1 -1
  1561. package/dist/vision/use-camera-stream.cjs +1 -1
  1562. package/dist/vision/use-camera-stream.cjs.map +1 -1
  1563. package/dist/vision/use-camera-stream.js +3 -9
  1564. package/dist/vision/use-camera-stream.js.map +1 -1
  1565. package/dist/vision/use-live-luminance.cjs +1 -1
  1566. package/dist/vision/use-live-luminance.cjs.map +1 -1
  1567. package/dist/vision/use-live-luminance.js +1 -5
  1568. package/dist/vision/use-live-luminance.js.map +1 -1
  1569. package/dist/vite/base-url.cjs.map +1 -1
  1570. package/dist/vite/base-url.js.map +1 -1
  1571. package/dist/vite/create-vite-config.cjs.map +1 -1
  1572. package/dist/vite/create-vite-config.js.map +1 -1
  1573. package/dist/vite/narrow-tokens.cjs.map +1 -1
  1574. package/dist/vite/narrow-tokens.js.map +1 -1
  1575. package/dist/vite/tempest-csp.cjs +2 -2
  1576. package/dist/vite/tempest-csp.cjs.map +1 -1
  1577. package/dist/vite/tempest-csp.js +69 -66
  1578. package/dist/vite/tempest-csp.js.map +1 -1
  1579. package/dist/vite/tempest-icons.cjs.map +1 -1
  1580. package/dist/vite/tempest-icons.js.map +1 -1
  1581. package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
  1582. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
  1583. package/dist/vite/tempest-pwa-dev-sw.js +9 -16
  1584. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
  1585. package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
  1586. package/dist/vite/tempest-pwa-icons.js.map +1 -1
  1587. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
  1588. package/dist/vite/tempest-pwa-manifest.js.map +1 -1
  1589. package/dist/vite/tempest-styles.cjs.map +1 -1
  1590. package/dist/vite/tempest-styles.js.map +1 -1
  1591. package/dist/vite/tempest-vitest.cjs.map +1 -1
  1592. package/dist/vite/tempest-vitest.js.map +1 -1
  1593. package/dist/vite.d.ts +5 -3
  1594. package/dist/webrtc/link-stats.cjs.map +1 -1
  1595. package/dist/webrtc/link-stats.js.map +1 -1
  1596. package/dist/webrtc/mesh-quality.cjs.map +1 -1
  1597. package/dist/webrtc/mesh-quality.js.map +1 -1
  1598. package/dist/webrtc/opus-sdp.cjs.map +1 -1
  1599. package/dist/webrtc/opus-sdp.js.map +1 -1
  1600. package/dist/webrtc/peer-link.cjs +1 -1
  1601. package/dist/webrtc/peer-link.cjs.map +1 -1
  1602. package/dist/webrtc/peer-link.js +2 -5
  1603. package/dist/webrtc/peer-link.js.map +1 -1
  1604. package/dist/webrtc/peer-mesh.cjs +1 -1
  1605. package/dist/webrtc/peer-mesh.cjs.map +1 -1
  1606. package/dist/webrtc/peer-mesh.js +8 -24
  1607. package/dist/webrtc/peer-mesh.js.map +1 -1
  1608. package/dist/webrtc/sender-bitrate.cjs.map +1 -1
  1609. package/dist/webrtc/sender-bitrate.js.map +1 -1
  1610. package/dist/webrtc/use-link-stats.cjs.map +1 -1
  1611. package/dist/webrtc/use-link-stats.js.map +1 -1
  1612. package/dist/ws/create-web-socket.cjs +1 -1
  1613. package/dist/ws/create-web-socket.cjs.map +1 -1
  1614. package/dist/ws/create-web-socket.js +4 -22
  1615. package/dist/ws/create-web-socket.js.map +1 -1
  1616. package/dist/ws/resilience.cjs.map +1 -1
  1617. package/dist/ws/resilience.js.map +1 -1
  1618. package/dist/ws/use-web-socket.cjs.map +1 -1
  1619. package/dist/ws/use-web-socket.js.map +1 -1
  1620. package/package.json +9 -6
  1621. package/template/package.json +1 -1
  1622. package/dist/telemetry/app-error-owner.cjs.map +0 -1
  1623. package/dist/telemetry/app-error-owner.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","names":[],"sources":["../../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — minuteStep and\n * use12Hours change both the list of options and how a typed value parses, so the\n * body holds parsing, formatting and the option list together; the remaining props\n * are the shared field contract.\n */\nimport { useId, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n /** Selected time as a 24h `\"HH:MM\"` string (e.g. `\"14:30\"`). May be `\"\"` for none. */\n value: string;\n /** Fired with the new 24h `\"HH:MM\"` string whenever a cell is picked. */\n onChange: (value: string) => void;\n /** Granularity of the minute column. Defaults to `5`. */\n minuteStep?: number;\n /** When true, show a 1–12 hour column plus an AM/PM column (still emits 24h). */\n use12Hours?: boolean;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n className?: string;\n}\n\ntype Period = \"AM\" | \"PM\";\n\ninterface ParsedTime {\n hour24: number | null;\n minute: number | null;\n}\n\nfunction pad2(value: number): string {\n return value.toString().padStart(2, \"0\");\n}\n\n/** Parse a 24h `\"HH:MM\"` string into hour/minute numbers, or nulls when empty/invalid. */\nfunction parseValue(value: string): ParsedTime {\n const match = /^(\\d{1,2}):(\\d{1,2})$/.exec(value.trim());\n if (!match) return { hour24: null, minute: null };\n const hour24 = Number(match[1]);\n const minute = Number(match[2]);\n if (hour24 < 0 || hour24 > 23 || minute < 0 || minute > 59) {\n return { hour24: null, minute: null };\n }\n return { hour24, minute };\n}\n\n/** Convert a 24h hour into its 12h display hour (1–12). */\nfunction to12Hour(hour24: number): number {\n const mod = hour24 % 12;\n return mod === 0 ? 12 : mod;\n}\n\n/** Convert a 12h display hour + period into a 24h hour (0–23). */\nfunction to24Hour(hour12: number, period: Period): number {\n const base = hour12 % 12;\n return period === \"PM\" ? base + 12 : base;\n}\n\n/**\n * TimePicker — inline, dependency-free time picker with Material \"spinner column\" styling.\n *\n * Renders scrollable columns of selectable cells (hours, minutes, and AM/PM when\n * `use12Hours`). Always emits a 24h `\"HH:MM\"` string via `onChange`, regardless of\n * whether the 12h display is enabled.\n */\nexport function TimePicker({\n value,\n onChange,\n minuteStep = 5,\n use12Hours = false,\n label,\n helperText,\n disabled,\n className,\n}: TimePickerProps) {\n const id = useId();\n const { hour24, minute } = useMemo(() => parseValue(value), [value]);\n\n const period: Period = hour24 !== null && hour24 >= 12 ? \"PM\" : \"AM\";\n\n const hourCells = useMemo<number[]>(() => {\n if (use12Hours) {\n return Array.from({ length: 12 }, (_, index) => index + 1);\n }\n return Array.from({ length: 24 }, (_, index) => index);\n }, [use12Hours]);\n\n const minuteCells = useMemo<number[]>(() => {\n const step = minuteStep > 0 ? minuteStep : 1;\n const cells: number[] = [];\n for (let current = 0; current < 60; current += step) {\n cells.push(current);\n }\n return cells;\n }, [minuteStep]);\n\n const selectedHourDisplay = hour24 === null ? null : use12Hours ? to12Hour(hour24) : hour24;\n\n const emit = (nextHour24: number, nextMinute: number): void => {\n onChange(`${pad2(nextHour24)}:${pad2(nextMinute)}`);\n };\n\n const handleHour = (displayHour: number): void => {\n if (disabled) return;\n const nextMinute = minute ?? 0;\n const nextHour24 = use12Hours ? to24Hour(displayHour, period) : displayHour;\n emit(nextHour24, nextMinute);\n };\n\n const handleMinute = (nextMinute: number): void => {\n if (disabled) return;\n const baseHour24 = hour24 ?? (use12Hours ? to24Hour(12, \"AM\") : 0);\n emit(baseHour24, nextMinute);\n };\n\n const handlePeriod = (nextPeriod: Period): void => {\n if (disabled) return;\n const displayHour = selectedHourDisplay ?? 12;\n const nextMinute = minute ?? 0;\n emit(to24Hour(displayHour, nextPeriod), nextMinute);\n };\n\n return (\n <div className={cn(styles.wrapper, disabled && styles.disabled, className)}>\n {label && (\n <span id={`${id}-label`} className={styles.label}>\n {label}\n </span>\n )}\n <div className={styles.columns}>\n <ul role=\"listbox\" aria-label=\"Horas\" className={styles.column}>\n {hourCells.map((cell) => {\n const active = cell === selectedHourDisplay;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handleHour(cell)}\n >\n {use12Hours ? cell : pad2(cell)}\n </button>\n </li>\n );\n })}\n </ul>\n <ul role=\"listbox\" aria-label=\"Minutos\" className={styles.column}>\n {minuteCells.map((cell) => {\n const active = cell === minute;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handleMinute(cell)}\n >\n {pad2(cell)}\n </button>\n </li>\n );\n })}\n </ul>\n {use12Hours && (\n <ul role=\"listbox\" aria-label=\"Período\" className={styles.column}>\n {([\"AM\", \"PM\"] as Period[]).map((cell) => {\n const active = selectedHourDisplay !== null && cell === period;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handlePeriod(cell)}\n >\n {cell}\n </button>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TimePicker.js","names":["styles","TimePicker_module_default","pad2","value","parseValue","match","hour24","minute","to12Hour","mod","to24Hour","base","hour12","period","TimePicker","id","useId","useMemo","hourCells","use12Hours","index","minuteCells","step","minuteStep","cells","current","selectedHourDisplay","emit","nextHour24","nextMinute","handleHour","disabled","displayHour","handleMinute","baseHour24","handlePeriod","nextPeriod","cn","className","label","active","cell","helperText"],"sources":["../../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines, props-count, function-lines — minuteStep and\n * use12Hours change both the list of options and how a typed value parses, so the\n * body holds parsing, formatting and the option list together; the remaining props\n * are the shared field contract.\n */\nimport { useId, useMemo } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n /** Selected time as a 24h `\"HH:MM\"` string (e.g. `\"14:30\"`). May be `\"\"` for none. */\n value: string;\n /** Fired with the new 24h `\"HH:MM\"` string whenever a cell is picked. */\n onChange: (value: string) => void;\n /** Granularity of the minute column. Defaults to `5`. */\n minuteStep?: number;\n /** When true, show a 1–12 hour column plus an AM/PM column (still emits 24h). */\n use12Hours?: boolean;\n label?: string;\n helperText?: string;\n disabled?: boolean;\n className?: string;\n}\n\ntype Period = \"AM\" | \"PM\";\n\ninterface ParsedTime {\n hour24: number | null;\n minute: number | null;\n}\n\nfunction pad2(value: number): string {\n return value.toString().padStart(2, \"0\");\n}\n\n/** Parse a 24h `\"HH:MM\"` string into hour/minute numbers, or nulls when empty/invalid. */\nfunction parseValue(value: string): ParsedTime {\n const match = /^(\\d{1,2}):(\\d{1,2})$/.exec(value.trim());\n if (!match) return { hour24: null, minute: null };\n const hour24 = Number(match[1]);\n const minute = Number(match[2]);\n if (hour24 < 0 || hour24 > 23 || minute < 0 || minute > 59) {\n return { hour24: null, minute: null };\n }\n return { hour24, minute };\n}\n\n/** Convert a 24h hour into its 12h display hour (1–12). */\nfunction to12Hour(hour24: number): number {\n const mod = hour24 % 12;\n return mod === 0 ? 12 : mod;\n}\n\n/** Convert a 12h display hour + period into a 24h hour (0–23). */\nfunction to24Hour(hour12: number, period: Period): number {\n const base = hour12 % 12;\n return period === \"PM\" ? base + 12 : base;\n}\n\n/**\n * TimePicker — inline, dependency-free time picker with Material \"spinner column\" styling.\n *\n * Renders scrollable columns of selectable cells (hours, minutes, and AM/PM when\n * `use12Hours`). Always emits a 24h `\"HH:MM\"` string via `onChange`, regardless of\n * whether the 12h display is enabled.\n */\nexport function TimePicker({\n value,\n onChange,\n minuteStep = 5,\n use12Hours = false,\n label,\n helperText,\n disabled,\n className,\n}: TimePickerProps) {\n const id = useId();\n const { hour24, minute } = useMemo(() => parseValue(value), [value]);\n\n const period: Period = hour24 !== null && hour24 >= 12 ? \"PM\" : \"AM\";\n\n const hourCells = useMemo<number[]>(() => {\n if (use12Hours) {\n return Array.from({ length: 12 }, (_, index) => index + 1);\n }\n return Array.from({ length: 24 }, (_, index) => index);\n }, [use12Hours]);\n\n const minuteCells = useMemo<number[]>(() => {\n const step = minuteStep > 0 ? minuteStep : 1;\n const cells: number[] = [];\n for (let current = 0; current < 60; current += step) {\n cells.push(current);\n }\n return cells;\n }, [minuteStep]);\n\n const selectedHourDisplay = hour24 === null ? null : use12Hours ? to12Hour(hour24) : hour24;\n\n const emit = (nextHour24: number, nextMinute: number): void => {\n onChange(`${pad2(nextHour24)}:${pad2(nextMinute)}`);\n };\n\n const handleHour = (displayHour: number): void => {\n if (disabled) return;\n const nextMinute = minute ?? 0;\n const nextHour24 = use12Hours ? to24Hour(displayHour, period) : displayHour;\n emit(nextHour24, nextMinute);\n };\n\n const handleMinute = (nextMinute: number): void => {\n if (disabled) return;\n const baseHour24 = hour24 ?? (use12Hours ? to24Hour(12, \"AM\") : 0);\n emit(baseHour24, nextMinute);\n };\n\n const handlePeriod = (nextPeriod: Period): void => {\n if (disabled) return;\n const displayHour = selectedHourDisplay ?? 12;\n const nextMinute = minute ?? 0;\n emit(to24Hour(displayHour, nextPeriod), nextMinute);\n };\n\n return (\n <div className={cn(styles.wrapper, disabled && styles.disabled, className)}>\n {label && (\n <span id={`${id}-label`} className={styles.label}>\n {label}\n </span>\n )}\n <div className={styles.columns}>\n <ul role=\"listbox\" aria-label=\"Horas\" className={styles.column}>\n {hourCells.map((cell) => {\n const active = cell === selectedHourDisplay;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handleHour(cell)}\n >\n {use12Hours ? cell : pad2(cell)}\n </button>\n </li>\n );\n })}\n </ul>\n <ul role=\"listbox\" aria-label=\"Minutos\" className={styles.column}>\n {minuteCells.map((cell) => {\n const active = cell === minute;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handleMinute(cell)}\n >\n {pad2(cell)}\n </button>\n </li>\n );\n })}\n </ul>\n {use12Hours && (\n <ul role=\"listbox\" aria-label=\"Período\" className={styles.column}>\n {([\"AM\", \"PM\"] as Period[]).map((cell) => {\n const active = selectedHourDisplay !== null && cell === period;\n return (\n <li key={cell} className={styles.cellWrapper}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={disabled}\n className={cn(styles.cell, active && styles.active)}\n onClick={() => handlePeriod(cell)}\n >\n {cell}\n </button>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {helperText && <span className={styles.helper}>{helperText}</span>}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.module.cjs","names":[],"sources":["../../../src/components/TimePicker/TimePicker.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n}\n\n.columns {\n display: flex;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n box-shadow: var(--tempest-shadow-lg);\n width: max-content;\n max-width: 100%;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n list-style: none;\n margin: 0;\n padding: 0 var(--tempest-space-1);\n max-height: 220px;\n overflow-y: auto;\n scroll-behavior: smooth;\n}\n\n.column + .column {\n border-left: 1px solid var(--tempest-border);\n}\n\n.cellWrapper {\n margin: 0;\n}\n\n.cell {\n appearance: none;\n width: 100%;\n min-width: 48px;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: none;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-base);\n text-align: center;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .cell:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.cell:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cell.active {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n}\n\n.wrapper.disabled {\n opacity: 0.7;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"TimePicker.module.cjs","names":["wrapper","label","columns","column","cellWrapper","cell","active","helper","disabled","TimePicker_module_default"],"sources":["../../../src/components/TimePicker/TimePicker.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n}\n\n.columns {\n display: flex;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n box-shadow: var(--tempest-shadow-lg);\n width: max-content;\n max-width: 100%;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n list-style: none;\n margin: 0;\n padding: 0 var(--tempest-space-1);\n max-height: 220px;\n overflow-y: auto;\n scroll-behavior: smooth;\n}\n\n.column + .column {\n border-left: 1px solid var(--tempest-border);\n}\n\n.cellWrapper {\n margin: 0;\n}\n\n.cell {\n appearance: none;\n width: 100%;\n min-width: 48px;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: none;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-base);\n text-align: center;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .cell:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.cell:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cell.active {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n}\n\n.wrapper.disabled {\n opacity: 0.7;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.module.js","names":[],"sources":["../../../src/components/TimePicker/TimePicker.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n}\n\n.columns {\n display: flex;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n box-shadow: var(--tempest-shadow-lg);\n width: max-content;\n max-width: 100%;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n list-style: none;\n margin: 0;\n padding: 0 var(--tempest-space-1);\n max-height: 220px;\n overflow-y: auto;\n scroll-behavior: smooth;\n}\n\n.column + .column {\n border-left: 1px solid var(--tempest-border);\n}\n\n.cellWrapper {\n margin: 0;\n}\n\n.cell {\n appearance: none;\n width: 100%;\n min-width: 48px;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: none;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-base);\n text-align: center;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .cell:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.cell:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cell.active {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n}\n\n.wrapper.disabled {\n opacity: 0.7;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"TimePicker.module.js","names":["wrapper","label","columns","column","cellWrapper","cell","active","helper","disabled","TimePicker_module_default"],"sources":["../../../src/components/TimePicker/TimePicker.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n}\n\n.columns {\n display: flex;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-2);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n box-shadow: var(--tempest-shadow-lg);\n width: max-content;\n max-width: 100%;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n list-style: none;\n margin: 0;\n padding: 0 var(--tempest-space-1);\n max-height: 220px;\n overflow-y: auto;\n scroll-behavior: smooth;\n}\n\n.column + .column {\n border-left: 1px solid var(--tempest-border);\n}\n\n.cellWrapper {\n margin: 0;\n}\n\n.cell {\n appearance: none;\n width: 100%;\n min-width: 48px;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: none;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-base);\n text-align: center;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .cell:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.cell:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cell.active {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n}\n\n.wrapper.disabled {\n opacity: 0.7;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.cjs","names":[],"sources":["../../../src/components/Timeline/Timeline.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Timeline.module.css\";\n\nexport type TimelineMarker = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\n/**\n * The class each marker color applies, keyed by the published CSS-module names.\n *\n * The build exports CSS-module keys in camelCase only (`localsConvention:\n * \"camelCaseOnly\"` in `vite.config.ts`), so a kebab lookup such as\n * `styles[\"marker-primary\"]` is `undefined` in `dist/` — which is how every marker\n * shipped transparent until issue #405. A `Record` over the union also makes the\n * type-checker demand an entry for every color added to {@link TimelineMarker}.\n */\nconst MARKER_CLASS: Record<TimelineMarker, string> = {\n primary: styles.markerPrimary,\n success: styles.markerSuccess,\n warning: styles.markerWarning,\n danger: styles.markerDanger,\n neutral: styles.markerNeutral,\n};\n\nexport interface TimelineItem {\n /** Stable identifier (used as React key). */\n id: string;\n /** Title rendered as the entry headline. */\n title: ReactNode;\n /** Optional subtitle / description below the title. */\n description?: ReactNode;\n /** Right-aligned meta column (timestamps, durations). */\n meta?: ReactNode;\n /** Optional custom icon rendered inside the marker. */\n icon?: ReactNode;\n /** Marker color. Default `\"primary\"`. */\n marker?: TimelineMarker;\n}\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n items: TimelineItem[];\n /** Show the connecting line between markers. Default `true`. */\n connector?: boolean;\n}\n\n/**\n * Vertical event timeline — activity feeds, order trackers, audit logs.\n * Each entry has a marker (color or custom icon), title, optional\n * description and right-aligned meta column.\n *\n * @example\n * <Timeline items={[\n * { id: \"1\", title: \"Pedido criado\", meta: \"10:24\", marker: \"primary\" },\n * { id: \"2\", title: \"Aprovação\", meta: \"10:25\", marker: \"success\" },\n * { id: \"3\", title: \"Saiu pra entrega\", meta: \"11:00\", marker: \"warning\" },\n * ]} />\n */\nexport function Timeline({ items, connector = true, className, ...props }: TimelineProps) {\n return (\n <ol className={cn(styles.timeline, className)} {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={item.id} className={styles.item}>\n <div className={styles.markerColumn}>\n <span\n className={cn(\n styles.marker,\n MARKER_CLASS[item.marker ?? \"primary\"],\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n {connector && !isLast && (\n <span className={styles.line} aria-hidden=\"true\" />\n )}\n </div>\n <div className={styles.body}>\n <div className={styles.row}>\n <span className={styles.title}>{item.title}</span>\n {item.meta && <span className={styles.meta}>{item.meta}</span>}\n </div>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":"4GAeA,IAAM,EAA+C,CACjD,QAAS,EAAA,QAAO,cAChB,QAAS,EAAA,QAAO,cAChB,QAAS,EAAA,QAAO,cAChB,OAAQ,EAAA,QAAO,aACf,QAAS,EAAA,QAAO,aACpB,EAmCA,SAAgB,EAAS,CAAE,QAAO,YAAY,GAAM,YAAW,GAAG,GAAwB,CACtF,OACI,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAW,EAAA,GAAG,EAAA,QAAO,SAAU,CAAS,EAAG,GAAI,EAC9C,SAAA,EAAM,KAAK,EAAM,IAAU,CACxB,IAAM,EAAS,IAAU,EAAM,OAAS,EACxC,OACI,EAAA,EAAA,KAAA,CAAC,KAAD,CAAkB,UAAW,EAAA,QAAO,KAApC,SAAA,EACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,aAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,UAAW,EAAA,GACP,EAAA,QAAO,OACP,EAAa,EAAK,QAAU,UAChC,EACA,cAAY,OAEX,SAAA,EAAK,IACJ,CAAA,EACL,GAAa,CAAC,IACX,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAM,cAAY,MAAQ,CAAA,CAErD,CACL,CAAA,GAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAvB,SAAA,EACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,IAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,EAAK,KAAY,CAAA,EAChD,EAAK,OAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,SAAA,EAAK,IAAW,CAAA,CAC5D,CACJ,CAAA,EAAA,EAAK,cACF,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,YAAc,SAAA,EAAK,WAAe,CAAA,CAE1D,CACL,CAAA,CAAA,CAxBK,EAAA,EAAK,EAwBV,CAEZ,CAAC,CACD,CAAA,CAEZ"}
1
+ {"version":3,"file":"Timeline.cjs","names":["styles","cn","require_cn","require_Timeline_module","react_jsx_runtime","MARKER_CLASS","Timeline","props","className","items","isLast","index","item","connector"],"sources":["../../../src/components/Timeline/Timeline.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Timeline.module.css\";\n\nexport type TimelineMarker = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\n/**\n * The class each marker color applies, keyed by the published CSS-module names.\n *\n * The build exports CSS-module keys in camelCase only (`localsConvention:\n * \"camelCaseOnly\"` in `vite.config.ts`), so a kebab lookup such as\n * `styles[\"marker-primary\"]` is `undefined` in `dist/` — which is how every marker\n * shipped transparent until issue #405. A `Record` over the union also makes the\n * type-checker demand an entry for every color added to {@link TimelineMarker}.\n */\nconst MARKER_CLASS: Record<TimelineMarker, string> = {\n primary: styles.markerPrimary,\n success: styles.markerSuccess,\n warning: styles.markerWarning,\n danger: styles.markerDanger,\n neutral: styles.markerNeutral,\n};\n\nexport interface TimelineItem {\n /** Stable identifier (used as React key). */\n id: string;\n /** Title rendered as the entry headline. */\n title: ReactNode;\n /** Optional subtitle / description below the title. */\n description?: ReactNode;\n /** Right-aligned meta column (timestamps, durations). */\n meta?: ReactNode;\n /** Optional custom icon rendered inside the marker. */\n icon?: ReactNode;\n /** Marker color. Default `\"primary\"`. */\n marker?: TimelineMarker;\n}\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n items: TimelineItem[];\n /** Show the connecting line between markers. Default `true`. */\n connector?: boolean;\n}\n\n/**\n * Vertical event timeline — activity feeds, order trackers, audit logs.\n * Each entry has a marker (color or custom icon), title, optional\n * description and right-aligned meta column.\n *\n * @example\n * <Timeline items={[\n * { id: \"1\", title: \"Pedido criado\", meta: \"10:24\", marker: \"primary\" },\n * { id: \"2\", title: \"Aprovação\", meta: \"10:25\", marker: \"success\" },\n * { id: \"3\", title: \"Saiu pra entrega\", meta: \"11:00\", marker: \"warning\" },\n * ]} />\n */\nexport function Timeline({ items, connector = true, className, ...props }: TimelineProps) {\n return (\n <ol className={cn(styles.timeline, className)} {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={item.id} className={styles.item}>\n <div className={styles.markerColumn}>\n <span\n className={cn(\n styles.marker,\n MARKER_CLASS[item.marker ?? \"primary\"],\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n {connector && !isLast && (\n <span className={styles.line} aria-hidden=\"true\" />\n )}\n </div>\n <div className={styles.body}>\n <div className={styles.row}>\n <span className={styles.title}>{item.title}</span>\n {item.meta && <span className={styles.meta}>{item.meta}</span>}\n </div>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":"A,4GAeA,IAAMK,EAA+C,CACjD,QAASL,EAAAA,QAAO,cAChB,QAASA,EAAAA,QAAO,cAChB,QAASA,EAAAA,QAAO,cAChB,OAAQA,EAAAA,QAAO,aACf,QAASA,EAAAA,QAAO,aACpB,EAmCA,SAAgBM,EAAS,CAAE,QAAO,YAAY,GAAM,YAAW,GAAGC,GAAwB,CACtF,OACI,EAAAH,EAAA,IAAA,CAAC,KAAD,CAAI,UAAWH,EAAAA,GAAGD,EAAAA,QAAO,SAAUQ,CAAS,EAAG,GAAID,EAC9C,SAAAE,EAAM,KAAK,EAAM,IAAU,CACxB,IAAMC,EAASC,IAAUF,EAAM,OAAS,EACxC,OACI,EAAAL,EAAA,KAAA,CAAC,KAAD,CAAkB,UAAWJ,EAAAA,QAAO,KAApC,SAAA,EACI,EAAAI,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,aAAvB,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,OAAD,CACI,UAAWH,EAAAA,GACPD,EAAAA,QAAO,OACPK,EAAaO,EAAK,QAAU,UAChC,EACA,cAAY,OAEX,SAAAA,EAAK,IACJ,CAAA,EACLC,GAAa,CAACH,IACX,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,KAAM,cAAY,MAAQ,CAAA,CAErD,CACL,CAAA,GAAA,EAAAI,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,KAAvB,SAAA,EACI,EAAAI,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWJ,EAAAA,QAAO,IAAvB,SAAA,EACI,EAAAI,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,MAAQ,SAAAY,EAAK,KAAY,CAAA,EAChDA,EAAK,OAAQ,EAAAR,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWJ,EAAAA,QAAO,KAAO,SAAAY,EAAK,IAAW,CAAA,CAC5D,CACJ,CAAA,EAAAA,EAAK,cACF,EAAAR,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWJ,EAAAA,QAAO,YAAc,SAAAY,EAAK,WAAe,CAAA,CAE1D,CACL,CAAA,CAAA,CAxBK,EAAAA,EAAK,EAwBV,CAEZ,CAAC,CACD,CAAA,CAEZ,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.js","names":[],"sources":["../../../src/components/Timeline/Timeline.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Timeline.module.css\";\n\nexport type TimelineMarker = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\n/**\n * The class each marker color applies, keyed by the published CSS-module names.\n *\n * The build exports CSS-module keys in camelCase only (`localsConvention:\n * \"camelCaseOnly\"` in `vite.config.ts`), so a kebab lookup such as\n * `styles[\"marker-primary\"]` is `undefined` in `dist/` — which is how every marker\n * shipped transparent until issue #405. A `Record` over the union also makes the\n * type-checker demand an entry for every color added to {@link TimelineMarker}.\n */\nconst MARKER_CLASS: Record<TimelineMarker, string> = {\n primary: styles.markerPrimary,\n success: styles.markerSuccess,\n warning: styles.markerWarning,\n danger: styles.markerDanger,\n neutral: styles.markerNeutral,\n};\n\nexport interface TimelineItem {\n /** Stable identifier (used as React key). */\n id: string;\n /** Title rendered as the entry headline. */\n title: ReactNode;\n /** Optional subtitle / description below the title. */\n description?: ReactNode;\n /** Right-aligned meta column (timestamps, durations). */\n meta?: ReactNode;\n /** Optional custom icon rendered inside the marker. */\n icon?: ReactNode;\n /** Marker color. Default `\"primary\"`. */\n marker?: TimelineMarker;\n}\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n items: TimelineItem[];\n /** Show the connecting line between markers. Default `true`. */\n connector?: boolean;\n}\n\n/**\n * Vertical event timeline — activity feeds, order trackers, audit logs.\n * Each entry has a marker (color or custom icon), title, optional\n * description and right-aligned meta column.\n *\n * @example\n * <Timeline items={[\n * { id: \"1\", title: \"Pedido criado\", meta: \"10:24\", marker: \"primary\" },\n * { id: \"2\", title: \"Aprovação\", meta: \"10:25\", marker: \"success\" },\n * { id: \"3\", title: \"Saiu pra entrega\", meta: \"11:00\", marker: \"warning\" },\n * ]} />\n */\nexport function Timeline({ items, connector = true, className, ...props }: TimelineProps) {\n return (\n <ol className={cn(styles.timeline, className)} {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={item.id} className={styles.item}>\n <div className={styles.markerColumn}>\n <span\n className={cn(\n styles.marker,\n MARKER_CLASS[item.marker ?? \"primary\"],\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n {connector && !isLast && (\n <span className={styles.line} aria-hidden=\"true\" />\n )}\n </div>\n <div className={styles.body}>\n <div className={styles.row}>\n <span className={styles.title}>{item.title}</span>\n {item.meta && <span className={styles.meta}>{item.meta}</span>}\n </div>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":";;;;AAeA,IAAM,IAA+C;CACjD,SAAS,EAAO;CAChB,SAAS,EAAO;CAChB,SAAS,EAAO;CAChB,QAAQ,EAAO;CACf,SAAS,EAAO;AACpB;AAmCA,SAAgB,EAAS,EAAE,UAAO,eAAY,IAAM,cAAW,GAAG,KAAwB;CACtF,OACI,kBAAC,MAAD;EAAI,WAAW,EAAG,EAAO,UAAU,CAAS;EAAG,GAAI;EAC9C,UAAA,EAAM,KAAK,GAAM,MAAU;GACxB,IAAM,IAAS,MAAU,EAAM,SAAS;GACxC,OACI,kBAAC,MAAD;IAAkB,WAAW,EAAO;IAApC,UAAA,CACI,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAvB,UAAA,CACI,kBAAC,QAAD;MACI,WAAW,EACP,EAAO,QACP,EAAa,EAAK,UAAU,UAChC;MACA,eAAY;MAEX,UAAA,EAAK;KACJ,CAAA,GACL,KAAa,CAAC,KACX,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAM,eAAY;KAAQ,CAAA,CAErD;IACL,CAAA,GAAA,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAvB,UAAA,CACI,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAvB,UAAA,CACI,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAQ,UAAA,EAAK;MAAY,CAAA,GAChD,EAAK,QAAQ,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAO,UAAA,EAAK;MAAW,CAAA,CAC5D;KACJ,CAAA,GAAA,EAAK,eACF,kBAAC,KAAD;MAAG,WAAW,EAAO;MAAc,UAAA,EAAK;KAAe,CAAA,CAE1D;IACL,CAAA,CAAA;GAxBK,GAAA,EAAK,EAwBV;EAEZ,CAAC;CACD,CAAA;AAEZ"}
1
+ {"version":3,"file":"Timeline.js","names":["styles","Timeline_module_default","MARKER_CLASS","Timeline","props","cn","className","items","isLast","index","item","connector"],"sources":["../../../src/components/Timeline/Timeline.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Timeline.module.css\";\n\nexport type TimelineMarker = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\n/**\n * The class each marker color applies, keyed by the published CSS-module names.\n *\n * The build exports CSS-module keys in camelCase only (`localsConvention:\n * \"camelCaseOnly\"` in `vite.config.ts`), so a kebab lookup such as\n * `styles[\"marker-primary\"]` is `undefined` in `dist/` — which is how every marker\n * shipped transparent until issue #405. A `Record` over the union also makes the\n * type-checker demand an entry for every color added to {@link TimelineMarker}.\n */\nconst MARKER_CLASS: Record<TimelineMarker, string> = {\n primary: styles.markerPrimary,\n success: styles.markerSuccess,\n warning: styles.markerWarning,\n danger: styles.markerDanger,\n neutral: styles.markerNeutral,\n};\n\nexport interface TimelineItem {\n /** Stable identifier (used as React key). */\n id: string;\n /** Title rendered as the entry headline. */\n title: ReactNode;\n /** Optional subtitle / description below the title. */\n description?: ReactNode;\n /** Right-aligned meta column (timestamps, durations). */\n meta?: ReactNode;\n /** Optional custom icon rendered inside the marker. */\n icon?: ReactNode;\n /** Marker color. Default `\"primary\"`. */\n marker?: TimelineMarker;\n}\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n items: TimelineItem[];\n /** Show the connecting line between markers. Default `true`. */\n connector?: boolean;\n}\n\n/**\n * Vertical event timeline — activity feeds, order trackers, audit logs.\n * Each entry has a marker (color or custom icon), title, optional\n * description and right-aligned meta column.\n *\n * @example\n * <Timeline items={[\n * { id: \"1\", title: \"Pedido criado\", meta: \"10:24\", marker: \"primary\" },\n * { id: \"2\", title: \"Aprovação\", meta: \"10:25\", marker: \"success\" },\n * { id: \"3\", title: \"Saiu pra entrega\", meta: \"11:00\", marker: \"warning\" },\n * ]} />\n */\nexport function Timeline({ items, connector = true, className, ...props }: TimelineProps) {\n return (\n <ol className={cn(styles.timeline, className)} {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={item.id} className={styles.item}>\n <div className={styles.markerColumn}>\n <span\n className={cn(\n styles.marker,\n MARKER_CLASS[item.marker ?? \"primary\"],\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n {connector && !isLast && (\n <span className={styles.line} aria-hidden=\"true\" />\n )}\n </div>\n <div className={styles.body}>\n <div className={styles.row}>\n <span className={styles.title}>{item.title}</span>\n {item.meta && <span className={styles.meta}>{item.meta}</span>}\n </div>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":";;;;AAeA,IAAME,IAA+C;CACjD,SAASF,EAAO;CAChB,SAASA,EAAO;CAChB,SAASA,EAAO;CAChB,QAAQA,EAAO;CACf,SAASA,EAAO;AACpB;AAmCA,SAAgBG,EAAS,EAAE,UAAO,eAAY,IAAM,cAAW,GAAGC,KAAwB;CACtF,OACI,kBAAC,MAAD;EAAI,WAAWC,EAAGL,EAAO,UAAUM,CAAS;EAAG,GAAIF;EAC9C,UAAAG,EAAM,KAAK,GAAM,MAAU;GACxB,IAAMC,IAASC,MAAUF,EAAM,SAAS;GACxC,OACI,kBAAC,MAAD;IAAkB,WAAWP,EAAO;IAApC,UAAA,CACI,kBAAC,OAAD;KAAK,WAAWA,EAAO;KAAvB,UAAA,CACI,kBAAC,QAAD;MACI,WAAWK,EACPL,EAAO,QACPE,EAAaQ,EAAK,UAAU,UAChC;MACA,eAAY;MAEX,UAAAA,EAAK;KACJ,CAAA,GACLC,KAAa,CAACH,KACX,kBAAC,QAAD;MAAM,WAAWR,EAAO;MAAM,eAAY;KAAQ,CAAA,CAErD;IACL,CAAA,GAAA,kBAAC,OAAD;KAAK,WAAWA,EAAO;KAAvB,UAAA,CACI,kBAAC,OAAD;MAAK,WAAWA,EAAO;MAAvB,UAAA,CACI,kBAAC,QAAD;OAAM,WAAWA,EAAO;OAAQ,UAAAU,EAAK;MAAY,CAAA,GAChDA,EAAK,QAAQ,kBAAC,QAAD;OAAM,WAAWV,EAAO;OAAO,UAAAU,EAAK;MAAW,CAAA,CAC5D;KACJ,CAAA,GAAAA,EAAK,eACF,kBAAC,KAAD;MAAG,WAAWV,EAAO;MAAc,UAAAU,EAAK;KAAe,CAAA,CAE1D;IACL,CAAA,CAAA;GAxBK,GAAAA,EAAK,EAwBV;EAEZ,CAAC;CACD,CAAA;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.module.cjs","names":[],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.item {\n display: flex;\n gap: var(--tempest-space-3);\n padding-bottom: var(--tempest-space-4);\n}\n\n.item:last-child {\n padding-bottom: 0;\n}\n\n.markerColumn {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 16px;\n padding-top: 4px;\n}\n\n.marker {\n width: 14px;\n height: 14px;\n border-radius: var(--tempest-radius-full);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 10px;\n flex: 0 0 auto;\n}\n\n.markerPrimary {\n background: var(--tempest-primary);\n}\n.markerSuccess {\n background: var(--tempest-success-solid, var(--tempest-success));\n}\n.markerWarning {\n background: var(--tempest-warning-solid, var(--tempest-warning));\n}\n.markerDanger {\n background: var(--tempest-danger-solid, var(--tempest-danger));\n}\n.markerNeutral {\n background: var(--tempest-gray-400, var(--tempest-border));\n}\n\n.line {\n flex: 1 1 auto;\n width: 2px;\n background: var(--tempest-border);\n margin-top: 4px;\n}\n\n.body {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--tempest-space-3);\n}\n\n.title {\n font-weight: var(--tempest-weight-medium);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n\n.meta {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n white-space: nowrap;\n}\n\n.description {\n margin: var(--tempest-space-1) 0 0;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Timeline.module.cjs","names":["timeline","item","markerColumn","marker","markerPrimary","markerSuccess","markerWarning","markerDanger","markerNeutral","line","body","row","title","meta","description","Timeline_module_default"],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.item {\n display: flex;\n gap: var(--tempest-space-3);\n padding-bottom: var(--tempest-space-4);\n}\n\n.item:last-child {\n padding-bottom: 0;\n}\n\n.markerColumn {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 16px;\n padding-top: 4px;\n}\n\n.marker {\n width: 14px;\n height: 14px;\n border-radius: var(--tempest-radius-full);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 10px;\n flex: 0 0 auto;\n}\n\n.markerPrimary {\n background: var(--tempest-primary);\n}\n.markerSuccess {\n background: var(--tempest-success-solid, var(--tempest-success));\n}\n.markerWarning {\n background: var(--tempest-warning-solid, var(--tempest-warning));\n}\n.markerDanger {\n background: var(--tempest-danger-solid, var(--tempest-danger));\n}\n.markerNeutral {\n background: var(--tempest-gray-400, var(--tempest-border));\n}\n\n.line {\n flex: 1 1 auto;\n width: 2px;\n background: var(--tempest-border);\n margin-top: 4px;\n}\n\n.body {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--tempest-space-3);\n}\n\n.title {\n font-weight: var(--tempest-weight-medium);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n\n.meta {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n white-space: nowrap;\n}\n\n.description {\n margin: var(--tempest-space-1) 0 0;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.module.js","names":[],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.item {\n display: flex;\n gap: var(--tempest-space-3);\n padding-bottom: var(--tempest-space-4);\n}\n\n.item:last-child {\n padding-bottom: 0;\n}\n\n.markerColumn {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 16px;\n padding-top: 4px;\n}\n\n.marker {\n width: 14px;\n height: 14px;\n border-radius: var(--tempest-radius-full);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 10px;\n flex: 0 0 auto;\n}\n\n.markerPrimary {\n background: var(--tempest-primary);\n}\n.markerSuccess {\n background: var(--tempest-success-solid, var(--tempest-success));\n}\n.markerWarning {\n background: var(--tempest-warning-solid, var(--tempest-warning));\n}\n.markerDanger {\n background: var(--tempest-danger-solid, var(--tempest-danger));\n}\n.markerNeutral {\n background: var(--tempest-gray-400, var(--tempest-border));\n}\n\n.line {\n flex: 1 1 auto;\n width: 2px;\n background: var(--tempest-border);\n margin-top: 4px;\n}\n\n.body {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--tempest-space-3);\n}\n\n.title {\n font-weight: var(--tempest-weight-medium);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n\n.meta {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n white-space: nowrap;\n}\n\n.description {\n margin: var(--tempest-space-1) 0 0;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Timeline.module.js","names":["timeline","item","markerColumn","marker","markerPrimary","markerSuccess","markerWarning","markerDanger","markerNeutral","line","body","row","title","meta","description","Timeline_module_default"],"sources":["../../../src/components/Timeline/Timeline.module.css"],"sourcesContent":[".timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--tempest-font-sans);\n color: var(--tempest-text);\n}\n\n.item {\n display: flex;\n gap: var(--tempest-space-3);\n padding-bottom: var(--tempest-space-4);\n}\n\n.item:last-child {\n padding-bottom: 0;\n}\n\n.markerColumn {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 16px;\n padding-top: 4px;\n}\n\n.marker {\n width: 14px;\n height: 14px;\n border-radius: var(--tempest-radius-full);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 10px;\n flex: 0 0 auto;\n}\n\n.markerPrimary {\n background: var(--tempest-primary);\n}\n.markerSuccess {\n background: var(--tempest-success-solid, var(--tempest-success));\n}\n.markerWarning {\n background: var(--tempest-warning-solid, var(--tempest-warning));\n}\n.markerDanger {\n background: var(--tempest-danger-solid, var(--tempest-danger));\n}\n.markerNeutral {\n background: var(--tempest-gray-400, var(--tempest-border));\n}\n\n.line {\n flex: 1 1 auto;\n width: 2px;\n background: var(--tempest-border);\n margin-top: 4px;\n}\n\n.body {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--tempest-space-3);\n}\n\n.title {\n font-weight: var(--tempest-weight-medium);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n\n.meta {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n white-space: nowrap;\n}\n\n.description {\n margin: var(--tempest-space-1) 0 0;\n color: var(--tempest-text-muted);\n font-size: var(--tempest-text-sm);\n line-height: var(--tempest-leading-snug);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.module.cjs","names":[],"sources":["../../../src/components/Toast/Toast.module.css"],"sourcesContent":[".container {\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n z-index: var(--tempest-z-toast);\n pointer-events: none;\n max-width: 100%;\n}\n\n/* Top */\n.positionTopRight {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionTopLeft {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionTopCenter {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Bottom */\n.positionBottomRight {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionBottomLeft {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionBottomCenter {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Mobile — stretch full width and respect safe areas. */\n@media (max-width: 480px) {\n .container {\n left: max(var(--tempest-space-3), var(--tempest-safe-area-left)) !important;\n right: max(var(--tempest-space-3), var(--tempest-safe-area-right)) !important;\n transform: none !important;\n }\n .positionTopRight,\n .positionTopLeft,\n .positionTopCenter {\n top: max(var(--tempest-space-3), var(--tempest-safe-area-top));\n }\n .positionBottomRight,\n .positionBottomLeft,\n .positionBottomCenter {\n bottom: max(var(--tempest-space-3), var(--tempest-safe-area-bottom));\n }\n .toast {\n min-width: 0;\n max-width: 100%;\n }\n}\n\n.toast {\n pointer-events: auto;\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-3);\n padding: var(--tempest-space-3) var(--tempest-space-4);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n box-shadow: var(--tempest-shadow-lg);\n min-width: 280px;\n max-width: 420px;\n animation: tempest-toast-in var(--tempest-duration-base) var(--tempest-ease-emphasized);\n}\n\n.success {\n border-left: 4px solid var(--tempest-success-solid);\n}\n.warning {\n border-left: 4px solid var(--tempest-warning-solid);\n}\n.error {\n border-left: 4px solid var(--tempest-danger-solid);\n}\n.info {\n border-left: 4px solid var(--tempest-info-solid);\n}\n\n.title {\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-semibold);\n font-size: var(--tempest-text-base);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n margin: 0;\n}\n\n.description {\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n margin: 2px 0 0 0;\n}\n\n.content {\n flex: 1 1 auto;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.withIcon .content {\n align-self: center;\n}\n\n.alignCenter .content {\n text-align: center;\n}\n\n.leading {\n flex: 0 0 auto;\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text);\n}\n\n.leading img,\n.leading svg {\n display: block;\n max-width: var(--tempest-space-8);\n max-height: var(--tempest-space-8);\n object-fit: contain;\n}\n\n.close {\n flex: 0 0 auto;\n margin-left: auto;\n background: none;\n border: none;\n color: var(--tempest-text-muted);\n padding: 4px;\n border-radius: var(--tempest-radius-sm);\n display: flex;\n align-items: center;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .close:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.close: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@keyframes tempest-toast-in {\n from {\n transform: translateX(24px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast {\n animation: none;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Toast.module.cjs","names":["container","positionTopRight","positionTopLeft","positionTopCenter","positionBottomRight","positionBottomLeft","positionBottomCenter","toast","tempestToastIn","success","warning","error","info","title","description","content","withIcon","alignCenter","leading","close","Toast_module_default"],"sources":["../../../src/components/Toast/Toast.module.css"],"sourcesContent":[".container {\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n z-index: var(--tempest-z-toast);\n pointer-events: none;\n max-width: 100%;\n}\n\n/* Top */\n.positionTopRight {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionTopLeft {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionTopCenter {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Bottom */\n.positionBottomRight {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionBottomLeft {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionBottomCenter {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Mobile — stretch full width and respect safe areas. */\n@media (max-width: 480px) {\n .container {\n left: max(var(--tempest-space-3), var(--tempest-safe-area-left)) !important;\n right: max(var(--tempest-space-3), var(--tempest-safe-area-right)) !important;\n transform: none !important;\n }\n .positionTopRight,\n .positionTopLeft,\n .positionTopCenter {\n top: max(var(--tempest-space-3), var(--tempest-safe-area-top));\n }\n .positionBottomRight,\n .positionBottomLeft,\n .positionBottomCenter {\n bottom: max(var(--tempest-space-3), var(--tempest-safe-area-bottom));\n }\n .toast {\n min-width: 0;\n max-width: 100%;\n }\n}\n\n.toast {\n pointer-events: auto;\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-3);\n padding: var(--tempest-space-3) var(--tempest-space-4);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n box-shadow: var(--tempest-shadow-lg);\n min-width: 280px;\n max-width: 420px;\n animation: tempest-toast-in var(--tempest-duration-base) var(--tempest-ease-emphasized);\n}\n\n.success {\n border-left: 4px solid var(--tempest-success-solid);\n}\n.warning {\n border-left: 4px solid var(--tempest-warning-solid);\n}\n.error {\n border-left: 4px solid var(--tempest-danger-solid);\n}\n.info {\n border-left: 4px solid var(--tempest-info-solid);\n}\n\n.title {\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-semibold);\n font-size: var(--tempest-text-base);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n margin: 0;\n}\n\n.description {\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n margin: 2px 0 0 0;\n}\n\n.content {\n flex: 1 1 auto;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.withIcon .content {\n align-self: center;\n}\n\n.alignCenter .content {\n text-align: center;\n}\n\n.leading {\n flex: 0 0 auto;\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text);\n}\n\n.leading img,\n.leading svg {\n display: block;\n max-width: var(--tempest-space-8);\n max-height: var(--tempest-space-8);\n object-fit: contain;\n}\n\n.close {\n flex: 0 0 auto;\n margin-left: auto;\n background: none;\n border: none;\n color: var(--tempest-text-muted);\n padding: 4px;\n border-radius: var(--tempest-radius-sm);\n display: flex;\n align-items: center;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .close:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.close: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@keyframes tempest-toast-in {\n from {\n transform: translateX(24px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.module.js","names":[],"sources":["../../../src/components/Toast/Toast.module.css"],"sourcesContent":[".container {\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n z-index: var(--tempest-z-toast);\n pointer-events: none;\n max-width: 100%;\n}\n\n/* Top */\n.positionTopRight {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionTopLeft {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionTopCenter {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Bottom */\n.positionBottomRight {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionBottomLeft {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionBottomCenter {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Mobile — stretch full width and respect safe areas. */\n@media (max-width: 480px) {\n .container {\n left: max(var(--tempest-space-3), var(--tempest-safe-area-left)) !important;\n right: max(var(--tempest-space-3), var(--tempest-safe-area-right)) !important;\n transform: none !important;\n }\n .positionTopRight,\n .positionTopLeft,\n .positionTopCenter {\n top: max(var(--tempest-space-3), var(--tempest-safe-area-top));\n }\n .positionBottomRight,\n .positionBottomLeft,\n .positionBottomCenter {\n bottom: max(var(--tempest-space-3), var(--tempest-safe-area-bottom));\n }\n .toast {\n min-width: 0;\n max-width: 100%;\n }\n}\n\n.toast {\n pointer-events: auto;\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-3);\n padding: var(--tempest-space-3) var(--tempest-space-4);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n box-shadow: var(--tempest-shadow-lg);\n min-width: 280px;\n max-width: 420px;\n animation: tempest-toast-in var(--tempest-duration-base) var(--tempest-ease-emphasized);\n}\n\n.success {\n border-left: 4px solid var(--tempest-success-solid);\n}\n.warning {\n border-left: 4px solid var(--tempest-warning-solid);\n}\n.error {\n border-left: 4px solid var(--tempest-danger-solid);\n}\n.info {\n border-left: 4px solid var(--tempest-info-solid);\n}\n\n.title {\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-semibold);\n font-size: var(--tempest-text-base);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n margin: 0;\n}\n\n.description {\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n margin: 2px 0 0 0;\n}\n\n.content {\n flex: 1 1 auto;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.withIcon .content {\n align-self: center;\n}\n\n.alignCenter .content {\n text-align: center;\n}\n\n.leading {\n flex: 0 0 auto;\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text);\n}\n\n.leading img,\n.leading svg {\n display: block;\n max-width: var(--tempest-space-8);\n max-height: var(--tempest-space-8);\n object-fit: contain;\n}\n\n.close {\n flex: 0 0 auto;\n margin-left: auto;\n background: none;\n border: none;\n color: var(--tempest-text-muted);\n padding: 4px;\n border-radius: var(--tempest-radius-sm);\n display: flex;\n align-items: center;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .close:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.close: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@keyframes tempest-toast-in {\n from {\n transform: translateX(24px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast {\n animation: none;\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Toast.module.js","names":["container","positionTopRight","positionTopLeft","positionTopCenter","positionBottomRight","positionBottomLeft","positionBottomCenter","toast","tempestToastIn","success","warning","error","info","title","description","content","withIcon","alignCenter","leading","close","Toast_module_default"],"sources":["../../../src/components/Toast/Toast.module.css"],"sourcesContent":[".container {\n position: fixed;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n z-index: var(--tempest-z-toast);\n pointer-events: none;\n max-width: 100%;\n}\n\n/* Top */\n.positionTopRight {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionTopLeft {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionTopCenter {\n top: max(var(--tempest-space-4), var(--tempest-safe-area-top));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Bottom */\n.positionBottomRight {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n right: max(var(--tempest-space-4), var(--tempest-safe-area-right));\n}\n.positionBottomLeft {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: max(var(--tempest-space-4), var(--tempest-safe-area-left));\n}\n.positionBottomCenter {\n bottom: max(var(--tempest-space-4), var(--tempest-safe-area-bottom));\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n}\n\n/* Mobile — stretch full width and respect safe areas. */\n@media (max-width: 480px) {\n .container {\n left: max(var(--tempest-space-3), var(--tempest-safe-area-left)) !important;\n right: max(var(--tempest-space-3), var(--tempest-safe-area-right)) !important;\n transform: none !important;\n }\n .positionTopRight,\n .positionTopLeft,\n .positionTopCenter {\n top: max(var(--tempest-space-3), var(--tempest-safe-area-top));\n }\n .positionBottomRight,\n .positionBottomLeft,\n .positionBottomCenter {\n bottom: max(var(--tempest-space-3), var(--tempest-safe-area-bottom));\n }\n .toast {\n min-width: 0;\n max-width: 100%;\n }\n}\n\n.toast {\n pointer-events: auto;\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-3);\n padding: var(--tempest-space-3) var(--tempest-space-4);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n box-shadow: var(--tempest-shadow-lg);\n min-width: 280px;\n max-width: 420px;\n animation: tempest-toast-in var(--tempest-duration-base) var(--tempest-ease-emphasized);\n}\n\n.success {\n border-left: 4px solid var(--tempest-success-solid);\n}\n.warning {\n border-left: 4px solid var(--tempest-warning-solid);\n}\n.error {\n border-left: 4px solid var(--tempest-danger-solid);\n}\n.info {\n border-left: 4px solid var(--tempest-info-solid);\n}\n\n.title {\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-semibold);\n font-size: var(--tempest-text-base);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n margin: 0;\n}\n\n.description {\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n margin: 2px 0 0 0;\n}\n\n.content {\n flex: 1 1 auto;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n.withIcon .content {\n align-self: center;\n}\n\n.alignCenter .content {\n text-align: center;\n}\n\n.leading {\n flex: 0 0 auto;\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--tempest-text);\n}\n\n.leading img,\n.leading svg {\n display: block;\n max-width: var(--tempest-space-8);\n max-height: var(--tempest-space-8);\n object-fit: contain;\n}\n\n.close {\n flex: 0 0 auto;\n margin-left: auto;\n background: none;\n border: none;\n color: var(--tempest-text-muted);\n padding: 4px;\n border-radius: var(--tempest-radius-sm);\n display: flex;\n align-items: center;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .close:hover {\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n }\n}\n\n.close: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@keyframes tempest-toast-in {\n from {\n transform: translateX(24px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.cjs","names":[],"sources":["../../../src/components/Toast/ToastProvider.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines — the provider is the queue: enqueue, dedupe, auto-\n * dismiss timers, pause on hover and the portal that renders them. Splitting the\n * queue from the renderer would put a timer in one file and the element it dismisses\n * in another.\n */\nimport {\n Children,\n Fragment,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toast.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type ToastVariant = \"success\" | \"warning\" | \"error\" | \"info\";\n\n/**\n * Horizontal alignment of a toast's title and description.\n *\n * `\"start\"` is the default because a toast is read as a sentence beside a close\n * button: left-aligned lines share one edge with the icon and the stack, so a\n * two-line description stays scannable. `\"center\"` exists for the short\n * celebratory toast (an achievement with a badge) where the text is one line.\n */\nexport type ToastAlign = \"start\" | \"center\";\n\nexport interface ToastOptions {\n id?: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n /** Auto-dismiss timeout in ms. Pass `0` to keep the toast until dismissed manually. */\n duration?: number;\n /**\n * Leading slot rendered before the text, e.g. `<img src=\"/badge.svg\" alt=\"\" />`.\n *\n * It is an app asset, so it takes any `ReactNode` — but it is a slot for an\n * **icon**, not for a control. The wrapper is `inert`, so a button or link put\n * here is neither focusable nor clickable; actions belong outside the toast.\n *\n * The slot is decorative (`aria-hidden`) unless {@link ToastOptions.iconLabel}\n * is given: most icons repeat what the title already says, and an unlabelled\n * image inside the live region would otherwise be announced as \"image\" or by\n * its file name. An `<img>` or `<svg>` anywhere inside it is capped at 32px and\n * keeps its aspect ratio. A node that renders nothing (`null`, a boolean, `\"\"`,\n * `[]`, an empty fragment) counts as no icon, so the toast keeps two columns.\n */\n icon?: ReactNode;\n /**\n * Accessible name for {@link ToastOptions.icon} when the icon carries meaning\n * the text does not. With it the slot becomes `role=\"img\"` with this label and\n * is announced together with the toast; without it the slot is hidden from\n * assistive technology.\n */\n iconLabel?: string;\n /** Text alignment of title and description. Default `\"start\"`; see {@link ToastAlign}. */\n align?: ToastAlign;\n}\n\ninterface ToastEntry extends Required<\n Omit<ToastOptions, \"id\" | \"title\" | \"description\" | \"icon\" | \"iconLabel\">\n> {\n id: string;\n title?: string;\n description?: string;\n icon?: ReactNode;\n iconLabel?: string;\n}\n\nexport interface ToastApi {\n show: (options: ToastOptions) => string;\n dismiss: (id: string) => void;\n success: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n error: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n warning: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n info: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n}\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\n/**\n * Access the toast API. Must be used inside a {@link ToastProvider}.\n *\n * @returns Methods to show and dismiss toasts.\n */\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used inside a <ToastProvider>\");\n return ctx;\n}\n\nexport type ToastPosition =\n \"top-right\" | \"top-left\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"bottom-center\";\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Default auto-dismiss duration (ms). Default 4000. */\n defaultDuration?: number;\n /** Stack position on screen. Default `\"top-right\"`. */\n position?: ToastPosition;\n}\n\n/**\n * Renders a portalled toast container and exposes the imperative {@link useToast} API.\n */\nexport function ToastProvider({\n children,\n defaultDuration = 4000,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const counter = useRef<number>(0);\n\n const dismiss = useCallback((id: string): void => {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }, []);\n\n const show = useCallback(\n (options: ToastOptions): string => {\n const id = options.id ?? `toast-${++counter.current}`;\n const entry: ToastEntry = {\n id,\n title: options.title,\n description: options.description,\n variant: options.variant ?? \"info\",\n duration: options.duration ?? defaultDuration,\n icon: options.icon,\n iconLabel: options.iconLabel,\n align: options.align ?? \"start\",\n };\n setToasts((current) => [...current, entry]);\n return id;\n },\n [defaultDuration],\n );\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n dismiss,\n success: (description, options) =>\n show({ ...options, description, variant: \"success\" }),\n error: (description, options) => show({ ...options, description, variant: \"error\" }),\n warning: (description, options) =>\n show({ ...options, description, variant: \"warning\" }),\n info: (description, options) => show({ ...options, description, variant: \"info\" }),\n }),\n [show, dismiss],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} position={position} />\n </ToastContext.Provider>\n );\n}\n\ninterface ContainerProps {\n toasts: ToastEntry[];\n onDismiss: (id: string) => void;\n position: ToastPosition;\n}\n\nfunction positionClass(position: ToastPosition): string {\n switch (position) {\n case \"top-left\":\n return styles.positionTopLeft;\n case \"top-center\":\n return styles.positionTopCenter;\n case \"bottom-right\":\n return styles.positionBottomRight;\n case \"bottom-left\":\n return styles.positionBottomLeft;\n case \"bottom-center\":\n return styles.positionBottomCenter;\n case \"top-right\":\n default:\n return styles.positionTopRight;\n }\n}\n\n/**\n * The portalled stack, and the page's live region for toasts.\n *\n * `aria-atomic=\"false\"` matters: with `\"true\"` a screen reader re-reads the\n * **entire** stack on every change, so the third toast of a batch is announced as\n * all three, and dismissing one re-announces the survivors. `\"false\"` announces only\n * the node that was added, which is what the user needs.\n *\n * The stack stays the live region rather than delegating to `useAnnounce`, because\n * routing it through the shared announcer would put the same text in the document\n * twice — once visible, once hidden — and every `getByText(\"Salvo\")` in a consuming\n * app's test suite would start matching two nodes. The announcer is for messages\n * that have no on-screen home; a toast has one.\n */\nfunction ToastContainer({ toasts, onDismiss, position }: ContainerProps) {\n const portalHost = usePortalHost();\n\n if (!portalHost) return null;\n return createPortal(\n <div\n className={cn(styles.container, positionClass(position))}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onDismiss={onDismiss} />\n ))}\n </div>,\n portalHost,\n );\n}\n\ninterface ItemProps {\n toast: ToastEntry;\n onDismiss: (id: string) => void;\n}\n\n/**\n * One toast.\n *\n * No `role=\"status\"` of its own: it already lives inside the container's live\n * region, and a live region nested in a live region is announced twice by some\n * screen readers.\n *\n * With an icon the toast becomes three columns (leading, content, close) and the\n * icon and text are centred vertically against each other, so a 32px badge sits\n * level with a one-line title. Toasts without an icon keep the top-aligned layout\n * and the same size for short text; what changed for them is long text: the text\n * column now wraps a long word (`overflow-wrap: anywhere`) and the close button no\n * longer shrinks (it used to drop from 22px to 16–17px beside a two-line\n * description).\n *\n * The leading wrapper gets `inert` through a callback ref instead of a prop,\n * because no prop value works on both supported Reacts: React 18 drops\n * `inert={true}` with a warning and renders `inert=\"\"`, while React 19 renders\n * `inert={true}` and drops `inert=\"\"`.\n */\nfunction ToastItem({ toast, onDismiss }: ItemProps) {\n useEffect(() => {\n if (!toast.duration) return;\n const timer = setTimeout(() => onDismiss(toast.id), toast.duration);\n return () => clearTimeout(timer);\n }, [toast.id, toast.duration, onDismiss]);\n\n const hasIcon = rendersSomething(toast.icon);\n\n return (\n <div\n className={cn(\n styles.toast,\n styles[toast.variant],\n hasIcon && styles.withIcon,\n toast.align === \"center\" && styles.alignCenter,\n )}\n >\n {hasIcon && (\n <div\n ref={makeInert}\n className={styles.leading}\n {...(toast.iconLabel\n ? { role: \"img\", \"aria-label\": toast.iconLabel }\n : { \"aria-hidden\": true })}\n >\n {toast.icon}\n </div>\n )}\n <div className={styles.content}>\n {toast.title && <p className={styles.title}>{toast.title}</p>}\n {toast.description && <p className={styles.description}>{toast.description}</p>}\n </div>\n <button\n type=\"button\"\n className={styles.close}\n aria-label=\"Fechar notificação\"\n onClick={() => onDismiss(toast.id)}\n >\n <CloseIcon />\n </button>\n </div>\n );\n}\n\n/**\n * Whether a node renders anything at all.\n *\n * `Children.toArray` drops `null`, `undefined` and booleans and flattens arrays,\n * but keeps a fragment as one element — so a fragment is unwrapped and checked\n * by its children. `\"\"` renders no text node worth a column either.\n *\n * @param node - The icon slot content.\n * @returns `true` when at least one child would produce output.\n */\nfunction rendersSomething(node: ReactNode): boolean {\n return Children.toArray(node).some((child) => {\n if (child === \"\") return false;\n if (isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment) {\n return rendersSomething(child.props.children);\n }\n return true;\n });\n}\n\n/**\n * Callback ref that marks the icon wrapper `inert`, on React 18 and 19 alike.\n *\n * @param node - The wrapper element, or `null` on unmount.\n */\nfunction makeInert(node: HTMLDivElement | null): void {\n node?.setAttribute(\"inert\", \"\");\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ToastProvider.cjs","names":["createContext","useContext","useState","useRef","useCallback","useMemo","styles","usePortalHost","createPortal","cn","Children","isValidElement","Fragment","require_cn","require_portal_host","require_Toast_module","react","react_jsx_runtime","react_dom","ToastContext","useToast","ctx","ToastProvider","toasts","setToasts","counter","dismiss","current","toast","id","show","options","entry","defaultDuration","api","children","ToastContainer","positionClass","position","portalHost","ToastItem","timer","onDismiss","hasIcon","rendersSomething","makeInert","CloseIcon","node","child"],"sources":["../../../src/components/Toast/ToastProvider.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines — the provider is the queue: enqueue, dedupe, auto-\n * dismiss timers, pause on hover and the portal that renders them. Splitting the\n * queue from the renderer would put a timer in one file and the element it dismisses\n * in another.\n */\nimport {\n Children,\n Fragment,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toast.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type ToastVariant = \"success\" | \"warning\" | \"error\" | \"info\";\n\n/**\n * Horizontal alignment of a toast's title and description.\n *\n * `\"start\"` is the default because a toast is read as a sentence beside a close\n * button: left-aligned lines share one edge with the icon and the stack, so a\n * two-line description stays scannable. `\"center\"` exists for the short\n * celebratory toast (an achievement with a badge) where the text is one line.\n */\nexport type ToastAlign = \"start\" | \"center\";\n\nexport interface ToastOptions {\n id?: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n /** Auto-dismiss timeout in ms. Pass `0` to keep the toast until dismissed manually. */\n duration?: number;\n /**\n * Leading slot rendered before the text, e.g. `<img src=\"/badge.svg\" alt=\"\" />`.\n *\n * It is an app asset, so it takes any `ReactNode` — but it is a slot for an\n * **icon**, not for a control. The wrapper is `inert`, so a button or link put\n * here is neither focusable nor clickable; actions belong outside the toast.\n *\n * The slot is decorative (`aria-hidden`) unless {@link ToastOptions.iconLabel}\n * is given: most icons repeat what the title already says, and an unlabelled\n * image inside the live region would otherwise be announced as \"image\" or by\n * its file name. An `<img>` or `<svg>` anywhere inside it is capped at 32px and\n * keeps its aspect ratio. A node that renders nothing (`null`, a boolean, `\"\"`,\n * `[]`, an empty fragment) counts as no icon, so the toast keeps two columns.\n */\n icon?: ReactNode;\n /**\n * Accessible name for {@link ToastOptions.icon} when the icon carries meaning\n * the text does not. With it the slot becomes `role=\"img\"` with this label and\n * is announced together with the toast; without it the slot is hidden from\n * assistive technology.\n */\n iconLabel?: string;\n /** Text alignment of title and description. Default `\"start\"`; see {@link ToastAlign}. */\n align?: ToastAlign;\n}\n\ninterface ToastEntry extends Required<\n Omit<ToastOptions, \"id\" | \"title\" | \"description\" | \"icon\" | \"iconLabel\">\n> {\n id: string;\n title?: string;\n description?: string;\n icon?: ReactNode;\n iconLabel?: string;\n}\n\nexport interface ToastApi {\n show: (options: ToastOptions) => string;\n dismiss: (id: string) => void;\n success: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n error: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n warning: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n info: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n}\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\n/**\n * Access the toast API. Must be used inside a {@link ToastProvider}.\n *\n * @returns Methods to show and dismiss toasts.\n */\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used inside a <ToastProvider>\");\n return ctx;\n}\n\nexport type ToastPosition =\n \"top-right\" | \"top-left\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"bottom-center\";\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Default auto-dismiss duration (ms). Default 4000. */\n defaultDuration?: number;\n /** Stack position on screen. Default `\"top-right\"`. */\n position?: ToastPosition;\n}\n\n/**\n * Renders a portalled toast container and exposes the imperative {@link useToast} API.\n */\nexport function ToastProvider({\n children,\n defaultDuration = 4000,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const counter = useRef<number>(0);\n\n const dismiss = useCallback((id: string): void => {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }, []);\n\n const show = useCallback(\n (options: ToastOptions): string => {\n const id = options.id ?? `toast-${++counter.current}`;\n const entry: ToastEntry = {\n id,\n title: options.title,\n description: options.description,\n variant: options.variant ?? \"info\",\n duration: options.duration ?? defaultDuration,\n icon: options.icon,\n iconLabel: options.iconLabel,\n align: options.align ?? \"start\",\n };\n setToasts((current) => [...current, entry]);\n return id;\n },\n [defaultDuration],\n );\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n dismiss,\n success: (description, options) =>\n show({ ...options, description, variant: \"success\" }),\n error: (description, options) => show({ ...options, description, variant: \"error\" }),\n warning: (description, options) =>\n show({ ...options, description, variant: \"warning\" }),\n info: (description, options) => show({ ...options, description, variant: \"info\" }),\n }),\n [show, dismiss],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} position={position} />\n </ToastContext.Provider>\n );\n}\n\ninterface ContainerProps {\n toasts: ToastEntry[];\n onDismiss: (id: string) => void;\n position: ToastPosition;\n}\n\nfunction positionClass(position: ToastPosition): string {\n switch (position) {\n case \"top-left\":\n return styles.positionTopLeft;\n case \"top-center\":\n return styles.positionTopCenter;\n case \"bottom-right\":\n return styles.positionBottomRight;\n case \"bottom-left\":\n return styles.positionBottomLeft;\n case \"bottom-center\":\n return styles.positionBottomCenter;\n case \"top-right\":\n default:\n return styles.positionTopRight;\n }\n}\n\n/**\n * The portalled stack, and the page's live region for toasts.\n *\n * `aria-atomic=\"false\"` matters: with `\"true\"` a screen reader re-reads the\n * **entire** stack on every change, so the third toast of a batch is announced as\n * all three, and dismissing one re-announces the survivors. `\"false\"` announces only\n * the node that was added, which is what the user needs.\n *\n * The stack stays the live region rather than delegating to `useAnnounce`, because\n * routing it through the shared announcer would put the same text in the document\n * twice — once visible, once hidden — and every `getByText(\"Salvo\")` in a consuming\n * app's test suite would start matching two nodes. The announcer is for messages\n * that have no on-screen home; a toast has one.\n */\nfunction ToastContainer({ toasts, onDismiss, position }: ContainerProps) {\n const portalHost = usePortalHost();\n\n if (!portalHost) return null;\n return createPortal(\n <div\n className={cn(styles.container, positionClass(position))}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onDismiss={onDismiss} />\n ))}\n </div>,\n portalHost,\n );\n}\n\ninterface ItemProps {\n toast: ToastEntry;\n onDismiss: (id: string) => void;\n}\n\n/**\n * One toast.\n *\n * No `role=\"status\"` of its own: it already lives inside the container's live\n * region, and a live region nested in a live region is announced twice by some\n * screen readers.\n *\n * With an icon the toast becomes three columns (leading, content, close) and the\n * icon and text are centred vertically against each other, so a 32px badge sits\n * level with a one-line title. Toasts without an icon keep the top-aligned layout\n * and the same size for short text; what changed for them is long text: the text\n * column now wraps a long word (`overflow-wrap: anywhere`) and the close button no\n * longer shrinks (it used to drop from 22px to 16–17px beside a two-line\n * description).\n *\n * The leading wrapper gets `inert` through a callback ref instead of a prop,\n * because no prop value works on both supported Reacts: React 18 drops\n * `inert={true}` with a warning and renders `inert=\"\"`, while React 19 renders\n * `inert={true}` and drops `inert=\"\"`.\n */\nfunction ToastItem({ toast, onDismiss }: ItemProps) {\n useEffect(() => {\n if (!toast.duration) return;\n const timer = setTimeout(() => onDismiss(toast.id), toast.duration);\n return () => clearTimeout(timer);\n }, [toast.id, toast.duration, onDismiss]);\n\n const hasIcon = rendersSomething(toast.icon);\n\n return (\n <div\n className={cn(\n styles.toast,\n styles[toast.variant],\n hasIcon && styles.withIcon,\n toast.align === \"center\" && styles.alignCenter,\n )}\n >\n {hasIcon && (\n <div\n ref={makeInert}\n className={styles.leading}\n {...(toast.iconLabel\n ? { role: \"img\", \"aria-label\": toast.iconLabel }\n : { \"aria-hidden\": true })}\n >\n {toast.icon}\n </div>\n )}\n <div className={styles.content}>\n {toast.title && <p className={styles.title}>{toast.title}</p>}\n {toast.description && <p className={styles.description}>{toast.description}</p>}\n </div>\n <button\n type=\"button\"\n className={styles.close}\n aria-label=\"Fechar notificação\"\n onClick={() => onDismiss(toast.id)}\n >\n <CloseIcon />\n </button>\n </div>\n );\n}\n\n/**\n * Whether a node renders anything at all.\n *\n * `Children.toArray` drops `null`, `undefined` and booleans and flattens arrays,\n * but keeps a fragment as one element — so a fragment is unwrapped and checked\n * by its children. `\"\"` renders no text node worth a column either.\n *\n * @param node - The icon slot content.\n * @returns `true` when at least one child would produce output.\n */\nfunction rendersSomething(node: ReactNode): boolean {\n return Children.toArray(node).some((child) => {\n if (child === \"\") return false;\n if (isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment) {\n return rendersSomething(child.props.children);\n }\n return true;\n });\n}\n\n/**\n * Callback ref that marks the icon wrapper `inert`, on React 18 and 19 alike.\n *\n * @param node - The wrapper element, or `null` on unmount.\n */\nfunction makeInert(node: HTMLDivElement | null): void {\n node?.setAttribute(\"inert\", \"\");\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.js","names":[],"sources":["../../../src/components/Toast/ToastProvider.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines — the provider is the queue: enqueue, dedupe, auto-\n * dismiss timers, pause on hover and the portal that renders them. Splitting the\n * queue from the renderer would put a timer in one file and the element it dismisses\n * in another.\n */\nimport {\n Children,\n Fragment,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toast.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type ToastVariant = \"success\" | \"warning\" | \"error\" | \"info\";\n\n/**\n * Horizontal alignment of a toast's title and description.\n *\n * `\"start\"` is the default because a toast is read as a sentence beside a close\n * button: left-aligned lines share one edge with the icon and the stack, so a\n * two-line description stays scannable. `\"center\"` exists for the short\n * celebratory toast (an achievement with a badge) where the text is one line.\n */\nexport type ToastAlign = \"start\" | \"center\";\n\nexport interface ToastOptions {\n id?: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n /** Auto-dismiss timeout in ms. Pass `0` to keep the toast until dismissed manually. */\n duration?: number;\n /**\n * Leading slot rendered before the text, e.g. `<img src=\"/badge.svg\" alt=\"\" />`.\n *\n * It is an app asset, so it takes any `ReactNode` — but it is a slot for an\n * **icon**, not for a control. The wrapper is `inert`, so a button or link put\n * here is neither focusable nor clickable; actions belong outside the toast.\n *\n * The slot is decorative (`aria-hidden`) unless {@link ToastOptions.iconLabel}\n * is given: most icons repeat what the title already says, and an unlabelled\n * image inside the live region would otherwise be announced as \"image\" or by\n * its file name. An `<img>` or `<svg>` anywhere inside it is capped at 32px and\n * keeps its aspect ratio. A node that renders nothing (`null`, a boolean, `\"\"`,\n * `[]`, an empty fragment) counts as no icon, so the toast keeps two columns.\n */\n icon?: ReactNode;\n /**\n * Accessible name for {@link ToastOptions.icon} when the icon carries meaning\n * the text does not. With it the slot becomes `role=\"img\"` with this label and\n * is announced together with the toast; without it the slot is hidden from\n * assistive technology.\n */\n iconLabel?: string;\n /** Text alignment of title and description. Default `\"start\"`; see {@link ToastAlign}. */\n align?: ToastAlign;\n}\n\ninterface ToastEntry extends Required<\n Omit<ToastOptions, \"id\" | \"title\" | \"description\" | \"icon\" | \"iconLabel\">\n> {\n id: string;\n title?: string;\n description?: string;\n icon?: ReactNode;\n iconLabel?: string;\n}\n\nexport interface ToastApi {\n show: (options: ToastOptions) => string;\n dismiss: (id: string) => void;\n success: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n error: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n warning: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n info: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n}\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\n/**\n * Access the toast API. Must be used inside a {@link ToastProvider}.\n *\n * @returns Methods to show and dismiss toasts.\n */\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used inside a <ToastProvider>\");\n return ctx;\n}\n\nexport type ToastPosition =\n \"top-right\" | \"top-left\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"bottom-center\";\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Default auto-dismiss duration (ms). Default 4000. */\n defaultDuration?: number;\n /** Stack position on screen. Default `\"top-right\"`. */\n position?: ToastPosition;\n}\n\n/**\n * Renders a portalled toast container and exposes the imperative {@link useToast} API.\n */\nexport function ToastProvider({\n children,\n defaultDuration = 4000,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const counter = useRef<number>(0);\n\n const dismiss = useCallback((id: string): void => {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }, []);\n\n const show = useCallback(\n (options: ToastOptions): string => {\n const id = options.id ?? `toast-${++counter.current}`;\n const entry: ToastEntry = {\n id,\n title: options.title,\n description: options.description,\n variant: options.variant ?? \"info\",\n duration: options.duration ?? defaultDuration,\n icon: options.icon,\n iconLabel: options.iconLabel,\n align: options.align ?? \"start\",\n };\n setToasts((current) => [...current, entry]);\n return id;\n },\n [defaultDuration],\n );\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n dismiss,\n success: (description, options) =>\n show({ ...options, description, variant: \"success\" }),\n error: (description, options) => show({ ...options, description, variant: \"error\" }),\n warning: (description, options) =>\n show({ ...options, description, variant: \"warning\" }),\n info: (description, options) => show({ ...options, description, variant: \"info\" }),\n }),\n [show, dismiss],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} position={position} />\n </ToastContext.Provider>\n );\n}\n\ninterface ContainerProps {\n toasts: ToastEntry[];\n onDismiss: (id: string) => void;\n position: ToastPosition;\n}\n\nfunction positionClass(position: ToastPosition): string {\n switch (position) {\n case \"top-left\":\n return styles.positionTopLeft;\n case \"top-center\":\n return styles.positionTopCenter;\n case \"bottom-right\":\n return styles.positionBottomRight;\n case \"bottom-left\":\n return styles.positionBottomLeft;\n case \"bottom-center\":\n return styles.positionBottomCenter;\n case \"top-right\":\n default:\n return styles.positionTopRight;\n }\n}\n\n/**\n * The portalled stack, and the page's live region for toasts.\n *\n * `aria-atomic=\"false\"` matters: with `\"true\"` a screen reader re-reads the\n * **entire** stack on every change, so the third toast of a batch is announced as\n * all three, and dismissing one re-announces the survivors. `\"false\"` announces only\n * the node that was added, which is what the user needs.\n *\n * The stack stays the live region rather than delegating to `useAnnounce`, because\n * routing it through the shared announcer would put the same text in the document\n * twice — once visible, once hidden — and every `getByText(\"Salvo\")` in a consuming\n * app's test suite would start matching two nodes. The announcer is for messages\n * that have no on-screen home; a toast has one.\n */\nfunction ToastContainer({ toasts, onDismiss, position }: ContainerProps) {\n const portalHost = usePortalHost();\n\n if (!portalHost) return null;\n return createPortal(\n <div\n className={cn(styles.container, positionClass(position))}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onDismiss={onDismiss} />\n ))}\n </div>,\n portalHost,\n );\n}\n\ninterface ItemProps {\n toast: ToastEntry;\n onDismiss: (id: string) => void;\n}\n\n/**\n * One toast.\n *\n * No `role=\"status\"` of its own: it already lives inside the container's live\n * region, and a live region nested in a live region is announced twice by some\n * screen readers.\n *\n * With an icon the toast becomes three columns (leading, content, close) and the\n * icon and text are centred vertically against each other, so a 32px badge sits\n * level with a one-line title. Toasts without an icon keep the top-aligned layout\n * and the same size for short text; what changed for them is long text: the text\n * column now wraps a long word (`overflow-wrap: anywhere`) and the close button no\n * longer shrinks (it used to drop from 22px to 16–17px beside a two-line\n * description).\n *\n * The leading wrapper gets `inert` through a callback ref instead of a prop,\n * because no prop value works on both supported Reacts: React 18 drops\n * `inert={true}` with a warning and renders `inert=\"\"`, while React 19 renders\n * `inert={true}` and drops `inert=\"\"`.\n */\nfunction ToastItem({ toast, onDismiss }: ItemProps) {\n useEffect(() => {\n if (!toast.duration) return;\n const timer = setTimeout(() => onDismiss(toast.id), toast.duration);\n return () => clearTimeout(timer);\n }, [toast.id, toast.duration, onDismiss]);\n\n const hasIcon = rendersSomething(toast.icon);\n\n return (\n <div\n className={cn(\n styles.toast,\n styles[toast.variant],\n hasIcon && styles.withIcon,\n toast.align === \"center\" && styles.alignCenter,\n )}\n >\n {hasIcon && (\n <div\n ref={makeInert}\n className={styles.leading}\n {...(toast.iconLabel\n ? { role: \"img\", \"aria-label\": toast.iconLabel }\n : { \"aria-hidden\": true })}\n >\n {toast.icon}\n </div>\n )}\n <div className={styles.content}>\n {toast.title && <p className={styles.title}>{toast.title}</p>}\n {toast.description && <p className={styles.description}>{toast.description}</p>}\n </div>\n <button\n type=\"button\"\n className={styles.close}\n aria-label=\"Fechar notificação\"\n onClick={() => onDismiss(toast.id)}\n >\n <CloseIcon />\n </button>\n </div>\n );\n}\n\n/**\n * Whether a node renders anything at all.\n *\n * `Children.toArray` drops `null`, `undefined` and booleans and flattens arrays,\n * but keeps a fragment as one element — so a fragment is unwrapped and checked\n * by its children. `\"\"` renders no text node worth a column either.\n *\n * @param node - The icon slot content.\n * @returns `true` when at least one child would produce output.\n */\nfunction rendersSomething(node: ReactNode): boolean {\n return Children.toArray(node).some((child) => {\n if (child === \"\") return false;\n if (isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment) {\n return rendersSomething(child.props.children);\n }\n return true;\n });\n}\n\n/**\n * Callback ref that marks the icon wrapper `inert`, on React 18 and 19 alike.\n *\n * @param node - The wrapper element, or `null` on unmount.\n */\nfunction makeInert(node: HTMLDivElement | null): void {\n node?.setAttribute(\"inert\", \"\");\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ToastProvider.js","names":["styles","Toast_module_default","ToastContext","createContext","useToast","ctx","useContext","ToastProvider","toasts","setToasts","useState","counter","useRef","dismiss","useCallback","current","toast","id","show","options","entry","defaultDuration","api","useMemo","children","ToastContainer","positionClass","position","portalHost","usePortalHost","createPortal","cn","ToastItem","timer","onDismiss","hasIcon","rendersSomething","makeInert","CloseIcon","Children","node","child","isValidElement","Fragment"],"sources":["../../../src/components/Toast/ToastProvider.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines — the provider is the queue: enqueue, dedupe, auto-\n * dismiss timers, pause on hover and the portal that renders them. Splitting the\n * queue from the renderer would put a timer in one file and the element it dismisses\n * in another.\n */\nimport {\n Children,\n Fragment,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toast.module.css\";\nimport { usePortalHost } from \"../Portal/portal-host\";\n\nexport type ToastVariant = \"success\" | \"warning\" | \"error\" | \"info\";\n\n/**\n * Horizontal alignment of a toast's title and description.\n *\n * `\"start\"` is the default because a toast is read as a sentence beside a close\n * button: left-aligned lines share one edge with the icon and the stack, so a\n * two-line description stays scannable. `\"center\"` exists for the short\n * celebratory toast (an achievement with a badge) where the text is one line.\n */\nexport type ToastAlign = \"start\" | \"center\";\n\nexport interface ToastOptions {\n id?: string;\n title?: string;\n description?: string;\n variant?: ToastVariant;\n /** Auto-dismiss timeout in ms. Pass `0` to keep the toast until dismissed manually. */\n duration?: number;\n /**\n * Leading slot rendered before the text, e.g. `<img src=\"/badge.svg\" alt=\"\" />`.\n *\n * It is an app asset, so it takes any `ReactNode` — but it is a slot for an\n * **icon**, not for a control. The wrapper is `inert`, so a button or link put\n * here is neither focusable nor clickable; actions belong outside the toast.\n *\n * The slot is decorative (`aria-hidden`) unless {@link ToastOptions.iconLabel}\n * is given: most icons repeat what the title already says, and an unlabelled\n * image inside the live region would otherwise be announced as \"image\" or by\n * its file name. An `<img>` or `<svg>` anywhere inside it is capped at 32px and\n * keeps its aspect ratio. A node that renders nothing (`null`, a boolean, `\"\"`,\n * `[]`, an empty fragment) counts as no icon, so the toast keeps two columns.\n */\n icon?: ReactNode;\n /**\n * Accessible name for {@link ToastOptions.icon} when the icon carries meaning\n * the text does not. With it the slot becomes `role=\"img\"` with this label and\n * is announced together with the toast; without it the slot is hidden from\n * assistive technology.\n */\n iconLabel?: string;\n /** Text alignment of title and description. Default `\"start\"`; see {@link ToastAlign}. */\n align?: ToastAlign;\n}\n\ninterface ToastEntry extends Required<\n Omit<ToastOptions, \"id\" | \"title\" | \"description\" | \"icon\" | \"iconLabel\">\n> {\n id: string;\n title?: string;\n description?: string;\n icon?: ReactNode;\n iconLabel?: string;\n}\n\nexport interface ToastApi {\n show: (options: ToastOptions) => string;\n dismiss: (id: string) => void;\n success: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n error: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n warning: (\n description: string,\n options?: Omit<ToastOptions, \"variant\" | \"description\">,\n ) => string;\n info: (description: string, options?: Omit<ToastOptions, \"variant\" | \"description\">) => string;\n}\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\n/**\n * Access the toast API. Must be used inside a {@link ToastProvider}.\n *\n * @returns Methods to show and dismiss toasts.\n */\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used inside a <ToastProvider>\");\n return ctx;\n}\n\nexport type ToastPosition =\n \"top-right\" | \"top-left\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"bottom-center\";\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Default auto-dismiss duration (ms). Default 4000. */\n defaultDuration?: number;\n /** Stack position on screen. Default `\"top-right\"`. */\n position?: ToastPosition;\n}\n\n/**\n * Renders a portalled toast container and exposes the imperative {@link useToast} API.\n */\nexport function ToastProvider({\n children,\n defaultDuration = 4000,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const counter = useRef<number>(0);\n\n const dismiss = useCallback((id: string): void => {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }, []);\n\n const show = useCallback(\n (options: ToastOptions): string => {\n const id = options.id ?? `toast-${++counter.current}`;\n const entry: ToastEntry = {\n id,\n title: options.title,\n description: options.description,\n variant: options.variant ?? \"info\",\n duration: options.duration ?? defaultDuration,\n icon: options.icon,\n iconLabel: options.iconLabel,\n align: options.align ?? \"start\",\n };\n setToasts((current) => [...current, entry]);\n return id;\n },\n [defaultDuration],\n );\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n dismiss,\n success: (description, options) =>\n show({ ...options, description, variant: \"success\" }),\n error: (description, options) => show({ ...options, description, variant: \"error\" }),\n warning: (description, options) =>\n show({ ...options, description, variant: \"warning\" }),\n info: (description, options) => show({ ...options, description, variant: \"info\" }),\n }),\n [show, dismiss],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} position={position} />\n </ToastContext.Provider>\n );\n}\n\ninterface ContainerProps {\n toasts: ToastEntry[];\n onDismiss: (id: string) => void;\n position: ToastPosition;\n}\n\nfunction positionClass(position: ToastPosition): string {\n switch (position) {\n case \"top-left\":\n return styles.positionTopLeft;\n case \"top-center\":\n return styles.positionTopCenter;\n case \"bottom-right\":\n return styles.positionBottomRight;\n case \"bottom-left\":\n return styles.positionBottomLeft;\n case \"bottom-center\":\n return styles.positionBottomCenter;\n case \"top-right\":\n default:\n return styles.positionTopRight;\n }\n}\n\n/**\n * The portalled stack, and the page's live region for toasts.\n *\n * `aria-atomic=\"false\"` matters: with `\"true\"` a screen reader re-reads the\n * **entire** stack on every change, so the third toast of a batch is announced as\n * all three, and dismissing one re-announces the survivors. `\"false\"` announces only\n * the node that was added, which is what the user needs.\n *\n * The stack stays the live region rather than delegating to `useAnnounce`, because\n * routing it through the shared announcer would put the same text in the document\n * twice — once visible, once hidden — and every `getByText(\"Salvo\")` in a consuming\n * app's test suite would start matching two nodes. The announcer is for messages\n * that have no on-screen home; a toast has one.\n */\nfunction ToastContainer({ toasts, onDismiss, position }: ContainerProps) {\n const portalHost = usePortalHost();\n\n if (!portalHost) return null;\n return createPortal(\n <div\n className={cn(styles.container, positionClass(position))}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onDismiss={onDismiss} />\n ))}\n </div>,\n portalHost,\n );\n}\n\ninterface ItemProps {\n toast: ToastEntry;\n onDismiss: (id: string) => void;\n}\n\n/**\n * One toast.\n *\n * No `role=\"status\"` of its own: it already lives inside the container's live\n * region, and a live region nested in a live region is announced twice by some\n * screen readers.\n *\n * With an icon the toast becomes three columns (leading, content, close) and the\n * icon and text are centred vertically against each other, so a 32px badge sits\n * level with a one-line title. Toasts without an icon keep the top-aligned layout\n * and the same size for short text; what changed for them is long text: the text\n * column now wraps a long word (`overflow-wrap: anywhere`) and the close button no\n * longer shrinks (it used to drop from 22px to 16–17px beside a two-line\n * description).\n *\n * The leading wrapper gets `inert` through a callback ref instead of a prop,\n * because no prop value works on both supported Reacts: React 18 drops\n * `inert={true}` with a warning and renders `inert=\"\"`, while React 19 renders\n * `inert={true}` and drops `inert=\"\"`.\n */\nfunction ToastItem({ toast, onDismiss }: ItemProps) {\n useEffect(() => {\n if (!toast.duration) return;\n const timer = setTimeout(() => onDismiss(toast.id), toast.duration);\n return () => clearTimeout(timer);\n }, [toast.id, toast.duration, onDismiss]);\n\n const hasIcon = rendersSomething(toast.icon);\n\n return (\n <div\n className={cn(\n styles.toast,\n styles[toast.variant],\n hasIcon && styles.withIcon,\n toast.align === \"center\" && styles.alignCenter,\n )}\n >\n {hasIcon && (\n <div\n ref={makeInert}\n className={styles.leading}\n {...(toast.iconLabel\n ? { role: \"img\", \"aria-label\": toast.iconLabel }\n : { \"aria-hidden\": true })}\n >\n {toast.icon}\n </div>\n )}\n <div className={styles.content}>\n {toast.title && <p className={styles.title}>{toast.title}</p>}\n {toast.description && <p className={styles.description}>{toast.description}</p>}\n </div>\n <button\n type=\"button\"\n className={styles.close}\n aria-label=\"Fechar notificação\"\n onClick={() => onDismiss(toast.id)}\n >\n <CloseIcon />\n </button>\n </div>\n );\n}\n\n/**\n * Whether a node renders anything at all.\n *\n * `Children.toArray` drops `null`, `undefined` and booleans and flattens arrays,\n * but keeps a fragment as one element — so a fragment is unwrapped and checked\n * by its children. `\"\"` renders no text node worth a column either.\n *\n * @param node - The icon slot content.\n * @returns `true` when at least one child would produce output.\n */\nfunction rendersSomething(node: ReactNode): boolean {\n return Children.toArray(node).some((child) => {\n if (child === \"\") return false;\n if (isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment) {\n return rendersSomething(child.props.children);\n }\n return true;\n });\n}\n\n/**\n * Callback ref that marks the icon wrapper `inert`, on React 18 and 19 alike.\n *\n * @param node - The wrapper element, or `null` on unmount.\n */\nfunction makeInert(node: HTMLDivElement | null): void {\n node?.setAttribute(\"inert\", \"\");\n}\n\nfunction CloseIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 6l12 12M6 18L18 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.cjs","names":[],"sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from \"react\";\nimport type { ButtonHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toggle.module.css\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleVariant = \"default\" | \"outline\";\n\nexport interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n /** Controlled pressed state. When provided the component is controlled. */\n pressed?: boolean;\n /** Initial pressed state for the uncontrolled variant. Default `false`. */\n defaultPressed?: boolean;\n /** Fired with the next pressed state whenever the toggle is activated. */\n onPressedChange?: (pressed: boolean) => void;\n /** Visual size. Default `\"md\"`. */\n size?: ToggleSize;\n /** Visual style. Default `\"default\"`. */\n variant?: ToggleVariant;\n}\n\n/**\n * A pressable two-state button — like a checkbox styled as a button.\n *\n * Works controlled (pass `pressed` + `onPressedChange`) or uncontrolled\n * (pass `defaultPressed`). Renders a native `<button type=\"button\">` exposing\n * its state through `aria-pressed`.\n *\n * @param props - {@link ToggleProps}.\n * @returns The toggle button element.\n */\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n {\n pressed,\n defaultPressed = false,\n onPressedChange,\n size = \"md\",\n variant = \"default\",\n className,\n disabled,\n onClick,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = pressed !== undefined;\n const [internalPressed, setInternalPressed] = useState<boolean>(defaultPressed);\n const isPressed = isControlled ? pressed : internalPressed;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>): void => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !isPressed;\n if (!isControlled) setInternalPressed(next);\n onPressedChange?.(next);\n },\n [isPressed, isControlled, onClick, onPressedChange],\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n disabled={disabled}\n data-state={isPressed ? \"on\" : \"off\"}\n className={cn(\n styles.toggle,\n styles[size],\n styles[variant],\n isPressed && styles.pressed,\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n"],"mappings":"6HA+BA,IAAa,GAAA,EAAS,EAAA,WAAA,CAA2C,SAC7D,CACI,UACA,iBAAiB,GACjB,kBACA,OAAO,KACP,UAAU,UACV,YACA,WACA,UACA,WACA,GAAG,GAEP,EACF,CACE,IAAM,EAAe,IAAY,IAAA,GAC3B,CAAC,EAAiB,IAAA,EAAsB,EAAA,SAAA,CAAkB,CAAc,EACxE,EAAY,EAAe,EAAU,EAErC,GAAA,EAAc,EAAA,YAAA,CACf,GAAqD,CAElD,GADA,IAAU,CAAK,EACX,EAAM,iBAAkB,OAC5B,IAAM,EAAO,CAAC,EACT,GAAc,EAAmB,CAAI,EAC1C,IAAkB,CAAI,CAC1B,EACA,CAAC,EAAW,EAAc,EAAS,CAAe,CACtD,EAEA,OACI,EAAA,EAAA,IAAA,CAAC,SAAD,CACS,MACL,KAAK,SACL,eAAc,EACJ,WACV,aAAY,EAAY,KAAO,MAC/B,UAAW,EAAA,GACP,EAAA,QAAO,OACP,EAAA,QAAO,GACP,EAAA,QAAO,GACP,GAAa,EAAA,QAAO,QACpB,CACJ,EACA,QAAS,EACT,GAAI,EAEH,UACG,CAAA,CAEhB,CAAC"}
1
+ {"version":3,"file":"Toggle.cjs","names":["forwardRef","useState","useCallback","cn","styles","require_cn","require_Toggle_module","react","react_jsx_runtime","Toggle","props","isControlled","pressed","internalPressed","setInternalPressed","defaultPressed","isPressed","handleClick","onClick","event","next","onPressedChange","size","variant","className"],"sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from \"react\";\nimport type { ButtonHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toggle.module.css\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleVariant = \"default\" | \"outline\";\n\nexport interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n /** Controlled pressed state. When provided the component is controlled. */\n pressed?: boolean;\n /** Initial pressed state for the uncontrolled variant. Default `false`. */\n defaultPressed?: boolean;\n /** Fired with the next pressed state whenever the toggle is activated. */\n onPressedChange?: (pressed: boolean) => void;\n /** Visual size. Default `\"md\"`. */\n size?: ToggleSize;\n /** Visual style. Default `\"default\"`. */\n variant?: ToggleVariant;\n}\n\n/**\n * A pressable two-state button — like a checkbox styled as a button.\n *\n * Works controlled (pass `pressed` + `onPressedChange`) or uncontrolled\n * (pass `defaultPressed`). Renders a native `<button type=\"button\">` exposing\n * its state through `aria-pressed`.\n *\n * @param props - {@link ToggleProps}.\n * @returns The toggle button element.\n */\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n {\n pressed,\n defaultPressed = false,\n onPressedChange,\n size = \"md\",\n variant = \"default\",\n className,\n disabled,\n onClick,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = pressed !== undefined;\n const [internalPressed, setInternalPressed] = useState<boolean>(defaultPressed);\n const isPressed = isControlled ? pressed : internalPressed;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>): void => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !isPressed;\n if (!isControlled) setInternalPressed(next);\n onPressedChange?.(next);\n },\n [isPressed, isControlled, onClick, onPressedChange],\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n disabled={disabled}\n data-state={isPressed ? \"on\" : \"off\"}\n className={cn(\n styles.toggle,\n styles[size],\n styles[variant],\n isPressed && styles.pressed,\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n"],"mappings":"A,6HA+BA,IAAaS,GAAA,EAAST,EAAAA,WAAAA,CAA2C,SAC7D,CACI,UACA,iBAAiB,GACjB,kBACA,OAAO,KACP,UAAU,UACV,YACA,WACA,UACA,WACA,GAAGU,GAEP,EACF,CACE,IAAMC,EAAeC,IAAY,IAAA,GAC3B,CAACC,EAAiBC,IAAA,EAAsBb,EAAAA,SAAAA,CAAkBc,CAAc,EACxEC,EAAYL,EAAeC,EAAUC,EAErCI,GAAA,EAAcf,EAAAA,YAAAA,CACf,GAAqD,CAElD,GADAgB,IAAUC,CAAK,EACXA,EAAM,iBAAkB,OAC5B,IAAMC,EAAO,CAACJ,EACTL,GAAcG,EAAmBM,CAAI,EAC1CC,IAAkBD,CAAI,CAC1B,EACA,CAACJ,EAAWL,EAAcO,EAASG,CAAe,CACtD,EAEA,OACI,EAAAb,EAAA,IAAA,CAAC,SAAD,CACS,MACL,KAAK,SACL,eAAcQ,EACJ,WACV,aAAYA,EAAY,KAAO,MAC/B,UAAWb,EAAAA,GACPC,EAAAA,QAAO,OACPA,EAAAA,QAAOkB,GACPlB,EAAAA,QAAOmB,GACPP,GAAaZ,EAAAA,QAAO,QACpBoB,CACJ,EACA,QAASP,EACT,GAAIP,EAEH,UACG,CAAA,CAEhB,CAAC,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":[],"sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from \"react\";\nimport type { ButtonHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toggle.module.css\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleVariant = \"default\" | \"outline\";\n\nexport interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n /** Controlled pressed state. When provided the component is controlled. */\n pressed?: boolean;\n /** Initial pressed state for the uncontrolled variant. Default `false`. */\n defaultPressed?: boolean;\n /** Fired with the next pressed state whenever the toggle is activated. */\n onPressedChange?: (pressed: boolean) => void;\n /** Visual size. Default `\"md\"`. */\n size?: ToggleSize;\n /** Visual style. Default `\"default\"`. */\n variant?: ToggleVariant;\n}\n\n/**\n * A pressable two-state button — like a checkbox styled as a button.\n *\n * Works controlled (pass `pressed` + `onPressedChange`) or uncontrolled\n * (pass `defaultPressed`). Renders a native `<button type=\"button\">` exposing\n * its state through `aria-pressed`.\n *\n * @param props - {@link ToggleProps}.\n * @returns The toggle button element.\n */\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n {\n pressed,\n defaultPressed = false,\n onPressedChange,\n size = \"md\",\n variant = \"default\",\n className,\n disabled,\n onClick,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = pressed !== undefined;\n const [internalPressed, setInternalPressed] = useState<boolean>(defaultPressed);\n const isPressed = isControlled ? pressed : internalPressed;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>): void => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !isPressed;\n if (!isControlled) setInternalPressed(next);\n onPressedChange?.(next);\n },\n [isPressed, isControlled, onClick, onPressedChange],\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n disabled={disabled}\n data-state={isPressed ? \"on\" : \"off\"}\n className={cn(\n styles.toggle,\n styles[size],\n styles[variant],\n isPressed && styles.pressed,\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n"],"mappings":";;;;;AA+BA,IAAa,IAAS,EAA2C,SAC7D,EACI,YACA,oBAAiB,IACjB,oBACA,UAAO,MACP,aAAU,WACV,cACA,aACA,YACA,aACA,GAAG,KAEP,GACF;CACE,IAAM,IAAe,MAAY,KAAA,GAC3B,CAAC,GAAiB,KAAsB,EAAkB,CAAc,GACxE,IAAY,IAAe,IAAU,GAErC,IAAc,GACf,MAAqD;EAElD,IADA,IAAU,CAAK,GACX,EAAM,kBAAkB;EAC5B,IAAM,IAAO,CAAC;EAEd,AADK,KAAc,EAAmB,CAAI,GAC1C,IAAkB,CAAI;CAC1B,GACA;EAAC;EAAW;EAAc;EAAS;CAAe,CACtD;CAEA,OACI,kBAAC,UAAD;EACS;EACL,MAAK;EACL,gBAAc;EACJ;EACV,cAAY,IAAY,OAAO;EAC/B,WAAW,EACP,EAAO,QACP,EAAO,IACP,EAAO,IACP,KAAa,EAAO,SACpB,CACJ;EACA,SAAS;EACT,GAAI;EAEH;CACG,CAAA;AAEhB,CAAC"}
1
+ {"version":3,"file":"Toggle.js","names":["styles","Toggle_module_default","Toggle","forwardRef","props","isControlled","pressed","internalPressed","setInternalPressed","useState","defaultPressed","isPressed","handleClick","useCallback","onClick","event","next","onPressedChange","cn","size","variant","className"],"sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from \"react\";\nimport type { ButtonHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Toggle.module.css\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleVariant = \"default\" | \"outline\";\n\nexport interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n /** Controlled pressed state. When provided the component is controlled. */\n pressed?: boolean;\n /** Initial pressed state for the uncontrolled variant. Default `false`. */\n defaultPressed?: boolean;\n /** Fired with the next pressed state whenever the toggle is activated. */\n onPressedChange?: (pressed: boolean) => void;\n /** Visual size. Default `\"md\"`. */\n size?: ToggleSize;\n /** Visual style. Default `\"default\"`. */\n variant?: ToggleVariant;\n}\n\n/**\n * A pressable two-state button — like a checkbox styled as a button.\n *\n * Works controlled (pass `pressed` + `onPressedChange`) or uncontrolled\n * (pass `defaultPressed`). Renders a native `<button type=\"button\">` exposing\n * its state through `aria-pressed`.\n *\n * @param props - {@link ToggleProps}.\n * @returns The toggle button element.\n */\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n {\n pressed,\n defaultPressed = false,\n onPressedChange,\n size = \"md\",\n variant = \"default\",\n className,\n disabled,\n onClick,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = pressed !== undefined;\n const [internalPressed, setInternalPressed] = useState<boolean>(defaultPressed);\n const isPressed = isControlled ? pressed : internalPressed;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>): void => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const next = !isPressed;\n if (!isControlled) setInternalPressed(next);\n onPressedChange?.(next);\n },\n [isPressed, isControlled, onClick, onPressedChange],\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n disabled={disabled}\n data-state={isPressed ? \"on\" : \"off\"}\n className={cn(\n styles.toggle,\n styles[size],\n styles[variant],\n isPressed && styles.pressed,\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n"],"mappings":";;;;;AA+BA,IAAaE,IAASC,EAA2C,SAC7D,EACI,YACA,oBAAiB,IACjB,oBACA,UAAO,MACP,aAAU,WACV,cACA,aACA,YACA,aACA,GAAGC,KAEP,GACF;CACE,IAAMC,IAAeC,MAAY,KAAA,GAC3B,CAACC,GAAiBC,KAAsBC,EAAkBC,CAAc,GACxEC,IAAYN,IAAeC,IAAUC,GAErCK,IAAcC,GACf,MAAqD;EAElD,IADAC,IAAUC,CAAK,GACXA,EAAM,kBAAkB;EAC5B,IAAMC,IAAO,CAACL;EAEd,AADKN,KAAcG,EAAmBQ,CAAI,GAC1CC,IAAkBD,CAAI;CAC1B,GACA;EAACL;EAAWN;EAAcS;EAASG;CAAe,CACtD;CAEA,OACI,kBAAC,UAAD;EACS;EACL,MAAK;EACL,gBAAcN;EACJ;EACV,cAAYA,IAAY,OAAO;EAC/B,WAAWO,EACPlB,EAAO,QACPA,EAAOmB,IACPnB,EAAOoB,IACPT,KAAaX,EAAO,SACpBqB,CACJ;EACA,SAAST;EACT,GAAIR;EAEH;CACG,CAAA;AAEhB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.module.cjs","names":[],"sources":["../../../src/components/Toggle/Toggle.module.css"],"sourcesContent":[".toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .toggle:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.toggle:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.toggle:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.outline {\n background-color: transparent;\n border-color: var(--tempest-border);\n}\n\n.pressed {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-color: var(--tempest-primary-soft);\n}\n\n.outline.pressed {\n border-color: var(--tempest-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .pressed:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n\n.sm {\n min-height: 1.75rem;\n padding: 0 var(--tempest-space-2);\n font-size: var(--tempest-text-xs);\n}\n\n.md {\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n font-size: var(--tempest-text-sm);\n}\n\n.lg {\n min-height: 2.75rem;\n padding: 0 var(--tempest-space-4);\n font-size: var(--tempest-text-base);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Toggle.module.cjs","names":["toggle","outline","pressed","sm","md","lg","Toggle_module_default"],"sources":["../../../src/components/Toggle/Toggle.module.css"],"sourcesContent":[".toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .toggle:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.toggle:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.toggle:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.outline {\n background-color: transparent;\n border-color: var(--tempest-border);\n}\n\n.pressed {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-color: var(--tempest-primary-soft);\n}\n\n.outline.pressed {\n border-color: var(--tempest-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .pressed:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n\n.sm {\n min-height: 1.75rem;\n padding: 0 var(--tempest-space-2);\n font-size: var(--tempest-text-xs);\n}\n\n.md {\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n font-size: var(--tempest-text-sm);\n}\n\n.lg {\n min-height: 2.75rem;\n padding: 0 var(--tempest-space-4);\n font-size: var(--tempest-text-base);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.module.js","names":[],"sources":["../../../src/components/Toggle/Toggle.module.css"],"sourcesContent":[".toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .toggle:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.toggle:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.toggle:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.outline {\n background-color: transparent;\n border-color: var(--tempest-border);\n}\n\n.pressed {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-color: var(--tempest-primary-soft);\n}\n\n.outline.pressed {\n border-color: var(--tempest-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .pressed:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n\n.sm {\n min-height: 1.75rem;\n padding: 0 var(--tempest-space-2);\n font-size: var(--tempest-text-xs);\n}\n\n.md {\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n font-size: var(--tempest-text-sm);\n}\n\n.lg {\n min-height: 2.75rem;\n padding: 0 var(--tempest-space-4);\n font-size: var(--tempest-text-base);\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Toggle.module.js","names":["toggle","outline","pressed","sm","md","lg","Toggle_module_default"],"sources":["../../../src/components/Toggle/Toggle.module.css"],"sourcesContent":[".toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .toggle:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.toggle:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.toggle:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.outline {\n background-color: transparent;\n border-color: var(--tempest-border);\n}\n\n.pressed {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-color: var(--tempest-primary-soft);\n}\n\n.outline.pressed {\n border-color: var(--tempest-primary);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .pressed:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n\n.sm {\n min-height: 1.75rem;\n padding: 0 var(--tempest-space-2);\n font-size: var(--tempest-text-xs);\n}\n\n.md {\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n font-size: var(--tempest-text-sm);\n}\n\n.lg {\n min-height: 2.75rem;\n padding: 0 var(--tempest-space-4);\n font-size: var(--tempest-text-base);\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.cjs","names":[],"sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./ToggleGroup.module.css\";\n\nexport type ToggleGroupType = \"single\" | \"multiple\";\n\ninterface ToggleGroupContextValue {\n type: ToggleGroupType;\n isSelected: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nfunction useToggleGroupContext(): ToggleGroupContextValue {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used within a ToggleGroup\");\n }\n return ctx;\n}\n\nexport interface ToggleGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Selection mode. `\"single\"` keeps one value; `\"multiple\"` keeps a set. Default `\"single\"`. */\n type?: ToggleGroupType;\n /** Controlled value — `string` for `single`, `string[]` for `multiple`. */\n value?: string | string[];\n /** Uncontrolled initial value. */\n defaultValue?: string | string[];\n /** Fired with the next value whenever the selection changes. */\n onValueChange?: (value: string | string[]) => void;\n children: ReactNode;\n}\n\nfunction normalizeArray(value: string | string[] | undefined): string[] {\n if (value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * A set of {@link ToggleGroupItem}s that share selection state via context.\n *\n * In `single` mode the value is a `string` (empty string when nothing is\n * selected); in `multiple` mode it is a `string[]`. Works controlled (pass\n * `value` + `onValueChange`) or uncontrolled (pass `defaultValue`).\n *\n * @param props - {@link ToggleGroupProps}.\n * @returns A `role=\"group\"` container wrapping the items.\n */\nexport function ToggleGroup({\n type = \"single\",\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: ToggleGroupProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(() =>\n normalizeArray(defaultValue),\n );\n const selected = isControlled ? normalizeArray(value) : internalValue;\n\n const commit = useCallback(\n (next: string[]): void => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(type === \"single\" ? (next[0] ?? \"\") : next);\n },\n [isControlled, onValueChange, type],\n );\n\n const toggle = useCallback(\n (itemValue: string): void => {\n const isOn = selected.includes(itemValue);\n if (type === \"single\") {\n commit(isOn ? [] : [itemValue]);\n } else {\n commit(isOn ? selected.filter((v) => v !== itemValue) : [...selected, itemValue]);\n }\n },\n [selected, type, commit],\n );\n\n const ctx = useMemo<ToggleGroupContextValue>(\n () => ({\n type,\n isSelected: (itemValue: string) => selected.includes(itemValue),\n toggle,\n }),\n [type, selected, toggle],\n );\n\n return (\n <ToggleGroupContext.Provider value={ctx}>\n <div role=\"group\" className={cn(styles.group, className)} {...props}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nexport interface ToggleGroupItemProps extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n /** Stable value identifying this item within the group. */\n value: string;\n /** Disables the item. */\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * A single selectable item inside a {@link ToggleGroup}. Reads and updates the\n * group's shared state through context.\n *\n * Icon-only items need an explicit `aria-label` (forwarded to the button):\n * an SVG child gives screen readers nothing to announce.\n *\n * @param props - {@link ToggleGroupItemProps}.\n * @returns A `role=\"button\"` element exposing its state via `aria-pressed`.\n */\nexport function ToggleGroupItem({\n value,\n disabled,\n className,\n children,\n ...props\n}: ToggleGroupItemProps) {\n const { isSelected, toggle } = useToggleGroupContext();\n const selected = isSelected(value);\n\n return (\n <button\n type=\"button\"\n role=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n data-state={selected ? \"on\" : \"off\"}\n className={cn(styles.item, selected && styles.selected, className)}\n onClick={() => toggle(value)}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"mappings":"kIAaA,IAAM,GAAA,EAAqB,EAAA,cAAA,CAA8C,IAAI,EAE7E,SAAS,GAAiD,CACtD,IAAM,GAAA,EAAM,EAAA,WAAA,CAAW,CAAkB,EACzC,GAAI,CAAC,EACD,MAAU,MAAM,mDAAmD,EAEvE,OAAO,CACX,CAcA,SAAS,EAAe,EAAgD,CAEpE,OADI,IAAU,IAAA,GAAkB,CAAC,EAC1B,MAAM,QAAQ,CAAK,EAAI,EAAQ,CAAC,CAAK,CAChD,CAYA,SAAgB,EAAY,CACxB,OAAO,SACP,QACA,eACA,gBACA,YACA,WACA,GAAG,GACc,CACjB,IAAM,EAAe,IAAU,IAAA,GACzB,CAAC,EAAe,IAAA,EAAoB,EAAA,SAAA,KACtC,EAAe,CAAY,CAC/B,EACM,EAAW,EAAe,EAAe,CAAK,EAAI,EAElD,GAAA,EAAS,EAAA,YAAA,CACV,GAAyB,CACjB,GAAc,EAAiB,CAAI,EACxC,IAAgB,IAAS,SAAY,EAAK,IAAM,GAAM,CAAI,CAC9D,EACA,CAAC,EAAc,EAAe,CAAI,CACtC,EAEM,GAAA,EAAS,EAAA,YAAA,CACV,GAA4B,CACzB,IAAM,EAAO,EAAS,SAAS,CAAS,EAEpC,EADA,IAAS,SACF,EAAO,CAAC,EAAI,CAAC,CAAS,EAEtB,EAAO,EAAS,OAAQ,GAAM,IAAM,CAAS,EAAI,CAAC,GAAG,EAAU,CAAS,CAAC,CAExF,EACA,CAAC,EAAU,EAAM,CAAM,CAC3B,EAEM,GAAA,EAAM,EAAA,QAAA,MACD,CACH,OACA,WAAa,GAAsB,EAAS,SAAS,CAAS,EAC9D,QACJ,GACA,CAAC,EAAM,EAAU,CAAM,CAC3B,EAEA,OACI,EAAA,EAAA,IAAA,CAAC,EAAmB,SAApB,CAA6B,MAAO,EAChC,UAAA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,KAAK,QAAQ,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,CAAS,EAAG,GAAI,EACzD,UACA,CAAA,CACoB,CAAA,CAErC,CAoBA,SAAgB,EAAgB,CAC5B,QACA,WACA,YACA,WACA,GAAG,GACkB,CACrB,GAAM,CAAE,aAAY,UAAW,EAAsB,EAC/C,EAAW,EAAW,CAAK,EAEjC,OACI,EAAA,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,KAAK,SACL,eAAc,EACJ,WACV,aAAY,EAAW,KAAO,MAC9B,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,GAAY,EAAA,QAAO,SAAU,CAAS,EACjE,YAAe,EAAO,CAAK,EAC3B,GAAI,EAEH,UACG,CAAA,CAEhB"}
1
+ {"version":3,"file":"ToggleGroup.cjs","names":["createContext","useContext","useState","useCallback","useMemo","cn","styles","require_cn","require_ToggleGroup_module","react","react_jsx_runtime","ToggleGroupContext","useToggleGroupContext","ctx","normalizeArray","value","ToggleGroup","props","isControlled","internalValue","setInternalValue","defaultValue","selected","commit","next","onValueChange","type","toggle","isOn","itemValue","v","className","ToggleGroupItem","isSelected"],"sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./ToggleGroup.module.css\";\n\nexport type ToggleGroupType = \"single\" | \"multiple\";\n\ninterface ToggleGroupContextValue {\n type: ToggleGroupType;\n isSelected: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nfunction useToggleGroupContext(): ToggleGroupContextValue {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used within a ToggleGroup\");\n }\n return ctx;\n}\n\nexport interface ToggleGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Selection mode. `\"single\"` keeps one value; `\"multiple\"` keeps a set. Default `\"single\"`. */\n type?: ToggleGroupType;\n /** Controlled value — `string` for `single`, `string[]` for `multiple`. */\n value?: string | string[];\n /** Uncontrolled initial value. */\n defaultValue?: string | string[];\n /** Fired with the next value whenever the selection changes. */\n onValueChange?: (value: string | string[]) => void;\n children: ReactNode;\n}\n\nfunction normalizeArray(value: string | string[] | undefined): string[] {\n if (value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * A set of {@link ToggleGroupItem}s that share selection state via context.\n *\n * In `single` mode the value is a `string` (empty string when nothing is\n * selected); in `multiple` mode it is a `string[]`. Works controlled (pass\n * `value` + `onValueChange`) or uncontrolled (pass `defaultValue`).\n *\n * @param props - {@link ToggleGroupProps}.\n * @returns A `role=\"group\"` container wrapping the items.\n */\nexport function ToggleGroup({\n type = \"single\",\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: ToggleGroupProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(() =>\n normalizeArray(defaultValue),\n );\n const selected = isControlled ? normalizeArray(value) : internalValue;\n\n const commit = useCallback(\n (next: string[]): void => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(type === \"single\" ? (next[0] ?? \"\") : next);\n },\n [isControlled, onValueChange, type],\n );\n\n const toggle = useCallback(\n (itemValue: string): void => {\n const isOn = selected.includes(itemValue);\n if (type === \"single\") {\n commit(isOn ? [] : [itemValue]);\n } else {\n commit(isOn ? selected.filter((v) => v !== itemValue) : [...selected, itemValue]);\n }\n },\n [selected, type, commit],\n );\n\n const ctx = useMemo<ToggleGroupContextValue>(\n () => ({\n type,\n isSelected: (itemValue: string) => selected.includes(itemValue),\n toggle,\n }),\n [type, selected, toggle],\n );\n\n return (\n <ToggleGroupContext.Provider value={ctx}>\n <div role=\"group\" className={cn(styles.group, className)} {...props}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nexport interface ToggleGroupItemProps extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n /** Stable value identifying this item within the group. */\n value: string;\n /** Disables the item. */\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * A single selectable item inside a {@link ToggleGroup}. Reads and updates the\n * group's shared state through context.\n *\n * Icon-only items need an explicit `aria-label` (forwarded to the button):\n * an SVG child gives screen readers nothing to announce.\n *\n * @param props - {@link ToggleGroupItemProps}.\n * @returns A `role=\"button\"` element exposing its state via `aria-pressed`.\n */\nexport function ToggleGroupItem({\n value,\n disabled,\n className,\n children,\n ...props\n}: ToggleGroupItemProps) {\n const { isSelected, toggle } = useToggleGroupContext();\n const selected = isSelected(value);\n\n return (\n <button\n type=\"button\"\n role=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n data-state={selected ? \"on\" : \"off\"}\n className={cn(styles.item, selected && styles.selected, className)}\n onClick={() => toggle(value)}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"mappings":"A,kIAaA,IAAMW,GAAA,EAAqBX,EAAAA,cAAAA,CAA8C,IAAI,EAE7E,SAASY,GAAiD,CACtD,IAAMC,GAAA,EAAMZ,EAAAA,WAAAA,CAAWU,CAAkB,EACzC,GAAI,CAACE,EACD,MAAU,MAAM,mDAAmD,EAEvE,OAAOA,CACX,CAcA,SAASC,EAAe,EAAgD,CAEpE,OADIC,IAAU,IAAA,GAAkB,CAAC,EAC1B,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAChD,CAYA,SAAgBC,EAAY,CACxB,OAAO,SACP,QACA,eACA,gBACA,YACA,WACA,GAAGC,GACc,CACjB,IAAMC,EAAeH,IAAU,IAAA,GACzB,CAACI,EAAeC,IAAA,EAAoBlB,EAAAA,SAAAA,KACtCY,EAAeO,CAAY,CAC/B,EACMC,EAAWJ,EAAeJ,EAAeC,CAAK,EAAII,EAElDI,GAAA,EAASpB,EAAAA,YAAAA,CACV,GAAyB,CACjBe,GAAcE,EAAiBI,CAAI,EACxCC,IAAgBC,IAAS,SAAYF,EAAK,IAAM,GAAMA,CAAI,CAC9D,EACA,CAACN,EAAcO,EAAeC,CAAI,CACtC,EAEMC,GAAA,EAASxB,EAAAA,YAAAA,CACV,GAA4B,CACzB,IAAMyB,EAAON,EAAS,SAASO,CAAS,EAEpCN,EADAG,IAAS,SACFE,EAAO,CAAC,EAAI,CAACC,CAAS,EAEtBD,EAAON,EAAS,OAAQ,GAAMQ,IAAMD,CAAS,EAAI,CAAC,GAAGP,EAAUO,CAAS,CAAC,CAExF,EACA,CAACP,EAAUI,EAAMH,CAAM,CAC3B,EAEMV,GAAA,EAAMT,EAAAA,QAAAA,MACD,CACH,OACA,WAAa,GAAsBkB,EAAS,SAASO,CAAS,EAC9D,QACJ,GACA,CAACH,EAAMJ,EAAUK,CAAM,CAC3B,EAEA,OACI,EAAAjB,EAAA,IAAA,CAACC,EAAmB,SAApB,CAA6B,MAAOE,EAChC,UAAA,EAAAH,EAAA,IAAA,CAAC,MAAD,CAAK,KAAK,QAAQ,UAAWL,EAAAA,GAAGC,EAAAA,QAAO,MAAOyB,CAAS,EAAG,GAAId,EACzD,UACA,CAAA,CACoB,CAAA,CAErC,CAoBA,SAAgBe,EAAgB,CAC5B,QACA,WACA,YACA,WACA,GAAGf,GACkB,CACrB,GAAM,CAAE,aAAY,UAAWL,EAAsB,EAC/CU,EAAWW,EAAWlB,CAAK,EAEjC,OACI,EAAAL,EAAA,IAAA,CAAC,SAAD,CACI,KAAK,SACL,KAAK,SACL,eAAcY,EACJ,WACV,aAAYA,EAAW,KAAO,MAC9B,UAAWjB,EAAAA,GAAGC,EAAAA,QAAO,KAAMgB,GAAYhB,EAAAA,QAAO,SAAUyB,CAAS,EACjE,YAAeJ,EAAOZ,CAAK,EAC3B,GAAIE,EAEH,UACG,CAAA,CAEhB,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.js","names":[],"sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./ToggleGroup.module.css\";\n\nexport type ToggleGroupType = \"single\" | \"multiple\";\n\ninterface ToggleGroupContextValue {\n type: ToggleGroupType;\n isSelected: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nfunction useToggleGroupContext(): ToggleGroupContextValue {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used within a ToggleGroup\");\n }\n return ctx;\n}\n\nexport interface ToggleGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Selection mode. `\"single\"` keeps one value; `\"multiple\"` keeps a set. Default `\"single\"`. */\n type?: ToggleGroupType;\n /** Controlled value — `string` for `single`, `string[]` for `multiple`. */\n value?: string | string[];\n /** Uncontrolled initial value. */\n defaultValue?: string | string[];\n /** Fired with the next value whenever the selection changes. */\n onValueChange?: (value: string | string[]) => void;\n children: ReactNode;\n}\n\nfunction normalizeArray(value: string | string[] | undefined): string[] {\n if (value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * A set of {@link ToggleGroupItem}s that share selection state via context.\n *\n * In `single` mode the value is a `string` (empty string when nothing is\n * selected); in `multiple` mode it is a `string[]`. Works controlled (pass\n * `value` + `onValueChange`) or uncontrolled (pass `defaultValue`).\n *\n * @param props - {@link ToggleGroupProps}.\n * @returns A `role=\"group\"` container wrapping the items.\n */\nexport function ToggleGroup({\n type = \"single\",\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: ToggleGroupProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(() =>\n normalizeArray(defaultValue),\n );\n const selected = isControlled ? normalizeArray(value) : internalValue;\n\n const commit = useCallback(\n (next: string[]): void => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(type === \"single\" ? (next[0] ?? \"\") : next);\n },\n [isControlled, onValueChange, type],\n );\n\n const toggle = useCallback(\n (itemValue: string): void => {\n const isOn = selected.includes(itemValue);\n if (type === \"single\") {\n commit(isOn ? [] : [itemValue]);\n } else {\n commit(isOn ? selected.filter((v) => v !== itemValue) : [...selected, itemValue]);\n }\n },\n [selected, type, commit],\n );\n\n const ctx = useMemo<ToggleGroupContextValue>(\n () => ({\n type,\n isSelected: (itemValue: string) => selected.includes(itemValue),\n toggle,\n }),\n [type, selected, toggle],\n );\n\n return (\n <ToggleGroupContext.Provider value={ctx}>\n <div role=\"group\" className={cn(styles.group, className)} {...props}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nexport interface ToggleGroupItemProps extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n /** Stable value identifying this item within the group. */\n value: string;\n /** Disables the item. */\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * A single selectable item inside a {@link ToggleGroup}. Reads and updates the\n * group's shared state through context.\n *\n * Icon-only items need an explicit `aria-label` (forwarded to the button):\n * an SVG child gives screen readers nothing to announce.\n *\n * @param props - {@link ToggleGroupItemProps}.\n * @returns A `role=\"button\"` element exposing its state via `aria-pressed`.\n */\nexport function ToggleGroupItem({\n value,\n disabled,\n className,\n children,\n ...props\n}: ToggleGroupItemProps) {\n const { isSelected, toggle } = useToggleGroupContext();\n const selected = isSelected(value);\n\n return (\n <button\n type=\"button\"\n role=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n data-state={selected ? \"on\" : \"off\"}\n className={cn(styles.item, selected && styles.selected, className)}\n onClick={() => toggle(value)}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"mappings":";;;;;AAaA,IAAM,IAAqB,EAA8C,IAAI;AAE7E,SAAS,IAAiD;CACtD,IAAM,IAAM,EAAW,CAAkB;CACzC,IAAI,CAAC,GACD,MAAU,MAAM,mDAAmD;CAEvE,OAAO;AACX;AAcA,SAAS,EAAe,GAAgD;CAEpE,OADI,MAAU,KAAA,IAAkB,CAAC,IAC1B,MAAM,QAAQ,CAAK,IAAI,IAAQ,CAAC,CAAK;AAChD;AAYA,SAAgB,EAAY,EACxB,UAAO,UACP,UACA,iBACA,kBACA,cACA,aACA,GAAG,KACc;CACjB,IAAM,IAAe,MAAU,KAAA,GACzB,CAAC,GAAe,KAAoB,QACtC,EAAe,CAAY,CAC/B,GACM,IAAW,IAAe,EAAe,CAAK,IAAI,GAElD,IAAS,GACV,MAAyB;EAEtB,AADK,KAAc,EAAiB,CAAI,GACxC,IAAgB,MAAS,WAAY,EAAK,MAAM,KAAM,CAAI;CAC9D,GACA;EAAC;EAAc;EAAe;CAAI,CACtC,GAEM,IAAS,GACV,MAA4B;EACzB,IAAM,IAAO,EAAS,SAAS,CAAS;EACxC,AACI,EADA,MAAS,WACF,IAAO,CAAC,IAAI,CAAC,CAAS,IAEtB,IAAO,EAAS,QAAQ,MAAM,MAAM,CAAS,IAAI,CAAC,GAAG,GAAU,CAAS,CAAC;CAExF,GACA;EAAC;EAAU;EAAM;CAAM,CAC3B,GAEM,IAAM,SACD;EACH;EACA,aAAa,MAAsB,EAAS,SAAS,CAAS;EAC9D;CACJ,IACA;EAAC;EAAM;EAAU;CAAM,CAC3B;CAEA,OACI,kBAAC,EAAmB,UAApB;EAA6B,OAAO;EAChC,UAAA,kBAAC,OAAD;GAAK,MAAK;GAAQ,WAAW,EAAG,EAAO,OAAO,CAAS;GAAG,GAAI;GACzD;EACA,CAAA;CACoB,CAAA;AAErC;AAoBA,SAAgB,EAAgB,EAC5B,UACA,aACA,cACA,aACA,GAAG,KACkB;CACrB,IAAM,EAAE,eAAY,cAAW,EAAsB,GAC/C,IAAW,EAAW,CAAK;CAEjC,OACI,kBAAC,UAAD;EACI,MAAK;EACL,MAAK;EACL,gBAAc;EACJ;EACV,cAAY,IAAW,OAAO;EAC9B,WAAW,EAAG,EAAO,MAAM,KAAY,EAAO,UAAU,CAAS;EACjE,eAAe,EAAO,CAAK;EAC3B,GAAI;EAEH;CACG,CAAA;AAEhB"}
1
+ {"version":3,"file":"ToggleGroup.js","names":["styles","ToggleGroup_module_default","ToggleGroupContext","createContext","useToggleGroupContext","ctx","useContext","normalizeArray","value","ToggleGroup","props","isControlled","internalValue","setInternalValue","useState","defaultValue","selected","commit","useCallback","next","onValueChange","type","toggle","isOn","itemValue","v","useMemo","cn","className","ToggleGroupItem","isSelected"],"sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./ToggleGroup.module.css\";\n\nexport type ToggleGroupType = \"single\" | \"multiple\";\n\ninterface ToggleGroupContextValue {\n type: ToggleGroupType;\n isSelected: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nfunction useToggleGroupContext(): ToggleGroupContextValue {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used within a ToggleGroup\");\n }\n return ctx;\n}\n\nexport interface ToggleGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Selection mode. `\"single\"` keeps one value; `\"multiple\"` keeps a set. Default `\"single\"`. */\n type?: ToggleGroupType;\n /** Controlled value — `string` for `single`, `string[]` for `multiple`. */\n value?: string | string[];\n /** Uncontrolled initial value. */\n defaultValue?: string | string[];\n /** Fired with the next value whenever the selection changes. */\n onValueChange?: (value: string | string[]) => void;\n children: ReactNode;\n}\n\nfunction normalizeArray(value: string | string[] | undefined): string[] {\n if (value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * A set of {@link ToggleGroupItem}s that share selection state via context.\n *\n * In `single` mode the value is a `string` (empty string when nothing is\n * selected); in `multiple` mode it is a `string[]`. Works controlled (pass\n * `value` + `onValueChange`) or uncontrolled (pass `defaultValue`).\n *\n * @param props - {@link ToggleGroupProps}.\n * @returns A `role=\"group\"` container wrapping the items.\n */\nexport function ToggleGroup({\n type = \"single\",\n value,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n}: ToggleGroupProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(() =>\n normalizeArray(defaultValue),\n );\n const selected = isControlled ? normalizeArray(value) : internalValue;\n\n const commit = useCallback(\n (next: string[]): void => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(type === \"single\" ? (next[0] ?? \"\") : next);\n },\n [isControlled, onValueChange, type],\n );\n\n const toggle = useCallback(\n (itemValue: string): void => {\n const isOn = selected.includes(itemValue);\n if (type === \"single\") {\n commit(isOn ? [] : [itemValue]);\n } else {\n commit(isOn ? selected.filter((v) => v !== itemValue) : [...selected, itemValue]);\n }\n },\n [selected, type, commit],\n );\n\n const ctx = useMemo<ToggleGroupContextValue>(\n () => ({\n type,\n isSelected: (itemValue: string) => selected.includes(itemValue),\n toggle,\n }),\n [type, selected, toggle],\n );\n\n return (\n <ToggleGroupContext.Provider value={ctx}>\n <div role=\"group\" className={cn(styles.group, className)} {...props}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nexport interface ToggleGroupItemProps extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n /** Stable value identifying this item within the group. */\n value: string;\n /** Disables the item. */\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * A single selectable item inside a {@link ToggleGroup}. Reads and updates the\n * group's shared state through context.\n *\n * Icon-only items need an explicit `aria-label` (forwarded to the button):\n * an SVG child gives screen readers nothing to announce.\n *\n * @param props - {@link ToggleGroupItemProps}.\n * @returns A `role=\"button\"` element exposing its state via `aria-pressed`.\n */\nexport function ToggleGroupItem({\n value,\n disabled,\n className,\n children,\n ...props\n}: ToggleGroupItemProps) {\n const { isSelected, toggle } = useToggleGroupContext();\n const selected = isSelected(value);\n\n return (\n <button\n type=\"button\"\n role=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n data-state={selected ? \"on\" : \"off\"}\n className={cn(styles.item, selected && styles.selected, className)}\n onClick={() => toggle(value)}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"mappings":";;;;;AAaA,IAAME,IAAqBC,EAA8C,IAAI;AAE7E,SAASC,IAAiD;CACtD,IAAMC,IAAMC,EAAWJ,CAAkB;CACzC,IAAI,CAACG,GACD,MAAU,MAAM,mDAAmD;CAEvE,OAAOA;AACX;AAcA,SAASE,EAAe,GAAgD;CAEpE,OADIC,MAAU,KAAA,IAAkB,CAAC,IAC1B,MAAM,QAAQA,CAAK,IAAIA,IAAQ,CAACA,CAAK;AAChD;AAYA,SAAgBC,EAAY,EACxB,UAAO,UACP,UACA,iBACA,kBACA,cACA,aACA,GAAGC,KACc;CACjB,IAAMC,IAAeH,MAAU,KAAA,GACzB,CAACI,GAAeC,KAAoBC,QACtCP,EAAeQ,CAAY,CAC/B,GACMC,IAAWL,IAAeJ,EAAeC,CAAK,IAAII,GAElDK,IAASC,GACV,MAAyB;EAEtB,AADKP,KAAcE,EAAiBM,CAAI,GACxCC,IAAgBC,MAAS,WAAYF,EAAK,MAAM,KAAMA,CAAI;CAC9D,GACA;EAACR;EAAcS;EAAeC;CAAI,CACtC,GAEMC,IAASJ,GACV,MAA4B;EACzB,IAAMK,IAAOP,EAAS,SAASQ,CAAS;EACxC,AACIP,EADAI,MAAS,WACFE,IAAO,CAAC,IAAI,CAACC,CAAS,IAEtBD,IAAOP,EAAS,QAAQ,MAAMS,MAAMD,CAAS,IAAI,CAAC,GAAGR,GAAUQ,CAAS,CAAC;CAExF,GACA;EAACR;EAAUK;EAAMJ;CAAM,CAC3B,GAEMZ,IAAMqB,SACD;EACH;EACA,aAAa,MAAsBV,EAAS,SAASQ,CAAS;EAC9D;CACJ,IACA;EAACH;EAAML;EAAUM;CAAM,CAC3B;CAEA,OACI,kBAACpB,EAAmB,UAApB;EAA6B,OAAOG;EAChC,UAAA,kBAAC,OAAD;GAAK,MAAK;GAAQ,WAAWsB,EAAG3B,EAAO,OAAO4B,CAAS;GAAG,GAAIlB;GACzD;EACA,CAAA;CACoB,CAAA;AAErC;AAoBA,SAAgBmB,EAAgB,EAC5B,UACA,aACA,cACA,aACA,GAAGnB,KACkB;CACrB,IAAM,EAAE,eAAY,cAAWN,EAAsB,GAC/CY,IAAWc,EAAWtB,CAAK;CAEjC,OACI,kBAAC,UAAD;EACI,MAAK;EACL,MAAK;EACL,gBAAcQ;EACJ;EACV,cAAYA,IAAW,OAAO;EAC9B,WAAWW,EAAG3B,EAAO,MAAMgB,KAAYhB,EAAO,UAAU4B,CAAS;EACjE,eAAeN,EAAOd,CAAK;EAC3B,GAAIE;EAEH;CACG,CAAA;AAEhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleGroup.module.cjs","names":[],"sources":["../../../src/components/ToggleGroup/ToggleGroup.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n align-items: stretch;\n gap: 0;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n border: none;\n border-left: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n.item:first-child {\n border-left: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.item:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: -2px;\n z-index: 1;\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.selected {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .selected:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"ToggleGroup.module.cjs","names":["group","item","selected","ToggleGroup_module_default"],"sources":["../../../src/components/ToggleGroup/ToggleGroup.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n align-items: stretch;\n gap: 0;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n overflow: hidden;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-2);\n min-height: 2.25rem;\n padding: 0 var(--tempest-space-3);\n border: none;\n border-left: 1px solid var(--tempest-border);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition:\n var(--tempest-transition-color),\n background-color var(--tempest-duration-base) var(--tempest-ease-emphasized);\n white-space: nowrap;\n}\n\n.item:first-child {\n border-left: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover {\n background-color: var(--tempest-surface-2);\n }\n}\n\n.item:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: -2px;\n z-index: 1;\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.selected {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .selected:hover {\n background-color: var(--tempest-primary-soft-hover, var(--tempest-primary-soft));\n }\n}\n"],"mappings":";"}