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":"SectionHeader.cjs","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":"oIA6CA,IAAM,GAAA,EAAiB,EAAA,cAAA,CAA0C,IAAI,EAoCrE,SAAgB,EAAc,CAC1B,QACA,UACA,cACA,UACA,QAAQ,EACR,QAAQ,QACR,KACA,YACA,GAAG,GACgB,CACnB,IAAM,GAAA,EAAS,EAAA,MAAA,CAAM,EACf,GAAA,EAAU,EAAA,WAAA,CAAW,CAAc,EACnC,EAAW,EAAQ,EACnB,EAAc,IAAY,MAAQ,GAAY,EAAQ,MAAM,CAAM,EAClE,EAAY,IAAO,EAAc,EAAQ,UAAY,GACrD,EAAW,GAAS,SAK1B,IAJA,EAAA,EAAA,gBAAA,KAAsB,CACd,GAAC,GAAa,EAClB,OAAO,EAAS,CAAS,CAC7B,EAAG,CAAC,EAAU,EAAU,CAAS,CAAC,EAC9B,CAAC,GAAS,CAAC,GAAW,CAAC,GAAe,CAAC,EAAS,OAAO,KAC3D,IAAM,EAAU,IAAI,IACpB,OACI,EAAA,EAAA,KAAA,CAAC,SAAD,CACI,UAAW,EAAA,GAAG,EAAA,QAAO,OAAQ,IAAU,UAAY,EAAA,QAAO,OAAQ,CAAS,EAC3E,GAAI,EAFR,SAAA,EAII,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,WAAvB,SAAA,CACK,IAAW,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,SAAA,CAAa,CAAA,EACzD,IACG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAI,EAAW,UAAW,EAAA,QAAO,MACrC,SAAA,CACI,CAAA,EAEZ,IAAe,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,YAAc,SAAA,CAAe,CAAA,CACjE,CACJ,CAAA,EAAA,IAAW,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,SAAA,CAAa,CAAA,CACtD,GAEhB,CAiEA,SAAgB,EAAQ,CAAE,WAAU,OAAM,GAAG,GAAuB,CAChE,IAAM,GAAA,EAAY,EAAA,MAAA,CAAM,EAClB,GAAA,EAAW,EAAA,OAAA,CAAsB,IAAI,EACrC,CAAC,EAAY,IAAA,EAAiB,EAAA,SAAA,CAA0B,IAAI,EAC5D,GAAA,EAAU,EAAA,QAAA,MACL,CACH,YACA,MAAQ,IACJ,EAAS,UAAY,EACd,EAAS,UAAY,GAEhC,SAAW,IACP,EAAe,GAAY,CAAC,GAAI,GAAW,CAAC,EAAI,CAAE,CAAC,MAE/C,EAAe,IAAa,GAAW,CAAC,EAAA,CAAG,OAAQ,GAAU,IAAU,CAAE,CAAC,EAEtF,GACA,CAAC,CAAS,CACd,GACA,EAAA,EAAA,gBAAA,KAAsB,CAClB,EAAe,GAAY,GAAW,CAAC,CAAC,CAC5C,EAAG,CAAC,CAAC,EACL,IAAM,EAAQ,EAAM,qBAAuB,IAAA,IAAa,EAAM,gBAAkB,IAAA,GAC1E,EAAa,IAAe,KAAO,EAAY,EAAW,GAChE,OACI,EAAA,EAAA,IAAA,CAAC,EAAe,SAAhB,CAAyB,MAAO,EAC5B,UAAA,EAAA,EAAA,IAAA,CAAC,UAAD,CACI,kBAAiB,EAAQ,IAAA,GAAY,EACrC,oBAAmB,EACnB,GAAI,EAEH,UACI,CAAA,CACY,CAAA,CAEjC"}
1
+ {"version":3,"file":"SectionHeader.cjs","names":["createContext","useId","useContext","cn","styles","useRef","useState","useMemo","require_cn","require_SectionHeader_module","react","react_jsx_runtime","SectionContext","SectionHeader","props","autoId","section","hasTitle","title","ownsSection","headingId","id","register","eyebrow","description","actions","Heading","level","align","className","Section","sectionId","ownerRef","headingIds","setHeadingIds","context","headerKey","current","entry","named","labelledBy","tone"],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":"A,oIA6CA,IAAMY,GAAA,EAAiBZ,EAAAA,cAAAA,CAA0C,IAAI,EAoCrE,SAAgBa,EAAc,CAC1B,QACA,UACA,cACA,UACA,QAAQ,EACR,QAAQ,QACR,KACA,YACA,GAAGC,GACgB,CACnB,IAAMC,GAAA,EAASd,EAAAA,MAAAA,CAAM,EACfe,GAAA,EAAUd,EAAAA,WAAAA,CAAWU,CAAc,EACnCK,EAAW,EAAQC,EACnBC,EAAcH,IAAY,MAAQC,GAAYD,EAAQ,MAAMD,CAAM,EAClEK,EAAYC,IAAOF,EAAcH,EAAQ,UAAYD,GACrDO,EAAWN,GAAS,SAK1B,IAJA,EAAAN,EAAA,gBAAA,KAAsB,CAClB,GAAKY,GAAaL,EAClB,OAAOK,EAASF,CAAS,CAC7B,EAAG,CAACE,EAAUL,EAAUG,CAAS,CAAC,EAC9B,CAACF,GAAS,CAACK,GAAW,CAACC,GAAe,CAACC,EAAS,OAAO,KAC3D,IAAMC,EAAU,IAAIC,IACpB,OACI,EAAAhB,EAAA,KAAA,CAAC,SAAD,CACI,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,OAAQwB,IAAU,UAAYxB,EAAAA,QAAO,OAAQyB,CAAS,EAC3E,GAAIf,EAFR,SAAA,EAII,EAAAH,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,WAAvB,SAAA,CACKmB,IAAW,EAAAZ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,QAAU,SAAAmB,CAAa,CAAA,EACzDL,IACG,EAAAP,EAAA,IAAA,CAACe,EAAD,CAAS,GAAIN,EAAW,UAAWhB,EAAAA,QAAO,MACrC,SAAAc,CACI,CAAA,EAEZM,IAAe,EAAAb,EAAA,IAAA,CAAC,IAAD,CAAG,UAAWP,EAAAA,QAAO,YAAc,SAAAoB,CAAe,CAAA,CACjE,CACJ,CAAA,EAAAC,IAAW,EAAAd,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,QAAU,SAAAqB,CAAa,CAAA,CACtD,C,EAEhB,CAiEA,SAAgBK,EAAQ,CAAE,WAAU,OAAM,GAAGhB,GAAuB,CAChE,IAAMiB,GAAA,EAAY9B,EAAAA,MAAAA,CAAM,EAClB+B,GAAA,EAAW3B,EAAAA,OAAAA,CAAsB,IAAI,EACrC,CAAC4B,EAAYC,IAAA,EAAiB5B,EAAAA,SAAAA,CAA0B,IAAI,EAC5D6B,GAAA,EAAU5B,EAAAA,QAAAA,MACL,CACH,YACA,MAAQ,IACJ,EAAS,UAAY6B,EACdJ,EAAS,UAAYI,GAEhC,SAAW,IACPF,EAAe,GAAY,CAAC,GAAIG,GAAW,CAAC,EAAIhB,CAAE,CAAC,MAE/Ca,EAAe,IAAaG,GAAW,CAAC,EAAA,CAAG,OAAQ,GAAUC,IAAUjB,CAAE,CAAC,EAEtF,GACA,CAACU,CAAS,CACd,GACA,EAAArB,EAAA,gBAAA,KAAsB,CAClBwB,EAAe,GAAYG,GAAW,CAAC,CAAC,CAC5C,EAAG,CAAC,CAAC,EACL,IAAME,EAAQzB,EAAM,qBAAuB,IAAA,IAAaA,EAAM,gBAAkB,IAAA,GAC1E0B,EAAaP,IAAe,KAAOF,EAAYE,EAAW,GAChE,OACI,EAAAtB,EAAA,IAAA,CAACC,EAAe,SAAhB,CAAyB,MAAOuB,EAC5B,UAAA,EAAAxB,EAAA,IAAA,CAAC,UAAD,CACI,kBAAiB4B,EAAQ,IAAA,GAAYC,EACrC,oBAAmBC,EACnB,GAAI3B,EAEH,UACI,CAAA,CACY,CAAA,CAEjC,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionHeader.js","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6CA,IAAM,IAAiB,EAA0C,IAAI;AAoCrE,SAAgB,EAAc,EAC1B,UACA,YACA,gBACA,YACA,WAAQ,GACR,WAAQ,SACR,OACA,cACA,GAAG,KACgB;CACnB,IAAM,IAAS,EAAM,GACf,IAAU,EAAW,CAAc,GACnC,IAAW,EAAQ,GACnB,IAAc,MAAY,QAAQ,KAAY,EAAQ,MAAM,CAAM,GAClE,IAAY,MAAO,IAAc,EAAQ,YAAY,IACrD,IAAW,GAAS;CAK1B,IAJA,QAAsB;EACd,IAAC,KAAa,GAClB,OAAO,EAAS,CAAS;CAC7B,GAAG;EAAC;EAAU;EAAU;CAAS,CAAC,GAC9B,CAAC,KAAS,CAAC,KAAW,CAAC,KAAe,CAAC,GAAS,OAAO;CAC3D,IAAM,IAAU,IAAI;CACpB,OACI,kBAAC,UAAD;EACI,WAAW,EAAG,EAAO,QAAQ,MAAU,YAAY,EAAO,QAAQ,CAAS;EAC3E,GAAI;EAFR,UAAA,CAII,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAvB,UAAA;IACK,KAAW,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAU,UAAA;IAAa,CAAA;IACzD,KACG,kBAAC,GAAD;KAAS,IAAI;KAAW,WAAW,EAAO;KACrC,UAAA;IACI,CAAA;IAEZ,KAAe,kBAAC,KAAD;KAAG,WAAW,EAAO;KAAc,UAAA;IAAe,CAAA;GACjE;EACJ,CAAA,GAAA,KAAW,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAU,UAAA;EAAa,CAAA,CACtD;;AAEhB;AAiEA,SAAgB,EAAQ,EAAE,aAAU,SAAM,GAAG,KAAuB;CAChE,IAAM,IAAY,EAAM,GAClB,IAAW,EAAsB,IAAI,GACrC,CAAC,GAAY,KAAiB,EAA0B,IAAI,GAC5D,IAAU,SACL;EACH;EACA,QAAQ,OACJ,EAAS,YAAY,GACd,EAAS,YAAY;EAEhC,WAAW,OACP,GAAe,MAAY,CAAC,GAAI,KAAW,CAAC,GAAI,CAAE,CAAC,SAE/C,GAAe,OAAa,KAAW,CAAC,EAAA,CAAG,QAAQ,MAAU,MAAU,CAAE,CAAC;CAEtF,IACA,CAAC,CAAS,CACd;CACA,QAAsB;EAClB,GAAe,MAAY,KAAW,CAAC,CAAC;CAC5C,GAAG,CAAC,CAAC;CACL,IAAM,IAAQ,EAAM,uBAAuB,KAAA,KAAa,EAAM,kBAAkB,KAAA,GAC1E,IAAa,MAAe,OAAO,IAAY,EAAW;CAChE,OACI,kBAAC,EAAe,UAAhB;EAAyB,OAAO;EAC5B,UAAA,kBAAC,WAAD;GACI,mBAAiB,IAAQ,KAAA,IAAY;GACrC,qBAAmB;GACnB,GAAI;GAEH;EACI,CAAA;CACY,CAAA;AAEjC"}
1
+ {"version":3,"file":"SectionHeader.js","names":["styles","SectionHeader_module_default","SectionContext","createContext","SectionHeader","props","autoId","useId","section","useContext","hasTitle","title","ownsSection","headingId","id","register","useLayoutEffect","eyebrow","description","actions","Heading","level","cn","align","className","Section","sectionId","ownerRef","useRef","headingIds","setHeadingIds","useState","context","useMemo","headerKey","current","entry","named","labelledBy","tone"],"sources":["../../../src/components/SectionHeader/SectionHeader.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — a heading block is slots (eyebrow, title, description,\n * actions) plus the three switches that decide its semantics: level, align and the\n * heading id. Splitting them would leave the id away from the heading it names.\n */\nimport {\n createContext,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SectionHeader.module.css\";\n\nexport type SectionHeaderLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type SectionHeaderAlign = \"start\" | \"center\";\n\n/**\n * Links the nearest `<Section>` to the heading that names it.\n *\n * Two channels, because they answer at different times:\n *\n * - `sectionId` + `claim` work during render, so the link exists in the very\n * first HTML (`renderToString`, hydration) where no effect runs. The section\n * owns `sectionId` (from `useId`, identical on server and client) and writes\n * it to `aria-labelledby` before any child renders; the first titled\n * `SectionHeader` to call `claim` in render order becomes its owner and, when\n * it has no explicit `id`, puts `sectionId` on its heading. `claim` is keyed by\n * the caller's own `useId`, so asking twice (Strict Mode, a re-render) gives\n * the same answer and never hands the id to a second heading.\n * - `register` works after mount and is the source of truth from then on: it\n * returns the matching unregister so a heading that unmounts (or changes id)\n * releases the section instead of leaving `aria-labelledby` pointing at an\n * element that no longer exists, and the next registered heading takes over.\n */\ninterface SectionContextValue {\n sectionId: string;\n claim: (headerKey: string) => boolean;\n register: (headingId: string) => () => void;\n}\n\nconst SectionContext = createContext<SectionContextValue | null>(null);\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"id\"> {\n /** Heading text, rendered as `<h{level}>`. */\n title?: ReactNode;\n /** Short label above the title (category, breadcrumbs). */\n eyebrow?: ReactNode;\n /** Supporting text rendered below the title. */\n description?: ReactNode;\n /** Trailing slot for buttons or menus. */\n actions?: ReactNode;\n /** Heading level — semantics only, the look does not change with it. Default `2`. */\n level?: SectionHeaderLevel;\n /** Horizontal alignment of the text block. Default `\"start\"`. */\n align?: SectionHeaderAlign;\n /** Id of the heading element. Generated with `useId` when absent. */\n id?: string;\n}\n\n/**\n * Header of a page or of one section of it: eyebrow, title, description and\n * actions, with the same look `Page` uses for its own header.\n *\n * The heading level is a prop because one page needs one `<h1>` and many\n * `<h2>` that look alike; the visual stays the same at every level so the\n * outline is picked by meaning, not by size. Inside a `<Section>` the first\n * titled header takes the section's own id for its heading (unless `id` is\n * given) and registers it, which is what gives the `region` landmark its\n * accessible name — in the server HTML too.\n *\n * @example\n * <Section>\n * <SectionHeader eyebrow=\"Soluções\" title=\"O que podemos desenvolver\" align=\"center\" />\n * <p>Conteúdo da seção.</p>\n * </Section>\n */\nexport function SectionHeader({\n title,\n eyebrow,\n description,\n actions,\n level = 2,\n align = \"start\",\n id,\n className,\n ...props\n}: SectionHeaderProps) {\n const autoId = useId();\n const section = useContext(SectionContext);\n const hasTitle = Boolean(title);\n const ownsSection = section !== null && hasTitle && section.claim(autoId);\n const headingId = id ?? (ownsSection ? section.sectionId : autoId);\n const register = section?.register;\n useLayoutEffect(() => {\n if (!register || !hasTitle) return undefined;\n return register(headingId);\n }, [register, hasTitle, headingId]);\n if (!title && !eyebrow && !description && !actions) return null;\n const Heading = `h${level}` as const;\n return (\n <header\n className={cn(styles.header, align === \"center\" && styles.center, className)}\n {...props}\n >\n <div className={styles.headerText}>\n {eyebrow && <div className={styles.eyebrow}>{eyebrow}</div>}\n {title && (\n <Heading id={headingId} className={styles.title}>\n {title}\n </Heading>\n )}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {actions && <div className={styles.actions}>{actions}</div>}\n </header>\n );\n}\n\n/** Surface tone a {@link Section} can take. */\nexport type SectionTone = \"inverse\" | \"default\";\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n /**\n * `\"inverse\"` paints the section in the brand color and inverts every color\n * token inside it, by writing `data-tempest-tone=\"inverse\"`. The tokens are\n * opt-in, because most apps never paint a section in the brand: they come\n * from `tempest-react-sdk/styles/inverse.css` for the SDK's own blue, or from\n * `createTheme({ primary, inverse: createInverseSurface })` for yours, each\n * measured against the fill (text and muted text at 4.5:1 or more, the focus\n * ring at 3:1 or more). With neither loaded the attribute matches nothing and\n * the section keeps the page's tokens — legible, not inverted. The prop\n * exists so the tone is typed: a typo in a hand-written attribute fails\n * silently, a typo here fails the build.\n *\n * `\"default\"` hands a region inside an inverse section back to the page's\n * tokens — light or dark, whichever the page is on — by writing\n * `data-tempest-tone=\"default\"`: a white form or price card in a navy hero.\n * The rules ship with the inverse tokens, so it costs nothing until those are\n * loaded, and outside an inverse section the tokens it restores are the ones\n * already there.\n */\n tone?: SectionTone;\n}\n\n/**\n * `<section>` that takes its accessible name from the `SectionHeader` inside it.\n *\n * A `<section>` is exposed as a `region` landmark only when it has an\n * accessible name; without one it is an anonymous group and screen-reader\n * landmark navigation skips it. Wiring `aria-labelledby` to the heading id is\n * the same mechanical step on every page, so the section does it: every\n * `SectionHeader` with a `title` below it reaches the section through context\n * (so wrappers in between do not break the link) and the first one names it;\n * when it unmounts, the next one takes over. An explicit `aria-labelledby` or\n * `aria-label` wins over the automatic one, and once mounted with no titled\n * heading the attribute is left off rather than pointing at nothing.\n *\n * The section owns the id (`useId`), so the link is already in the first\n * render — `renderToString` and the HTML a server sends — where no effect runs.\n * The parent's attributes are written before any child renders, so the section\n * cannot know what is below it: it always writes its own id, and the first\n * titled `SectionHeader` in render order puts that id on its heading. Two\n * cases cannot be known on the server, and both are settled on hydration\n * without a mismatch warning: with no titled heading the server attribute is\n * dropped (until then it resolves to nothing, which Chromium 153 exposes as\n * the same anonymous group as no attribute at all), and when that first header\n * has an explicit `id` the attribute moves to it. A consumer that needs the\n * explicit id in the server HTML passes `aria-labelledby` itself.\n *\n * @example\n * <Section>\n * <SectionHeader title=\"Planos\" />\n * <PlanGrid />\n * </Section>\n *\n * @example\n * <Section tone=\"inverse\">\n * <SectionHeader title=\"Comece agora\" />\n * <Button>Criar conta</Button>\n * </Section>\n */\nexport function Section({ children, tone, ...props }: SectionProps) {\n const sectionId = useId();\n const ownerRef = useRef<string | null>(null);\n const [headingIds, setHeadingIds] = useState<string[] | null>(null);\n const context = useMemo<SectionContextValue>(\n () => ({\n sectionId,\n claim: (headerKey: string) => {\n ownerRef.current ??= headerKey;\n return ownerRef.current === headerKey;\n },\n register: (id: string) => {\n setHeadingIds((current) => [...(current ?? []), id]);\n return () =>\n setHeadingIds((current) => (current ?? []).filter((entry) => entry !== id));\n },\n }),\n [sectionId],\n );\n useLayoutEffect(() => {\n setHeadingIds((current) => current ?? []);\n }, []);\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n const labelledBy = headingIds === null ? sectionId : headingIds[0];\n return (\n <SectionContext.Provider value={context}>\n <section\n aria-labelledby={named ? undefined : labelledBy}\n data-tempest-tone={tone}\n {...props}\n >\n {children}\n </section>\n </SectionContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6CA,IAAME,IAAiBC,EAA0C,IAAI;AAoCrE,SAAgBC,EAAc,EAC1B,UACA,YACA,gBACA,YACA,WAAQ,GACR,WAAQ,SACR,OACA,cACA,GAAGC,KACgB;CACnB,IAAMC,IAASC,EAAM,GACfC,IAAUC,EAAWP,CAAc,GACnCQ,IAAW,EAAQC,GACnBC,IAAcJ,MAAY,QAAQE,KAAYF,EAAQ,MAAMF,CAAM,GAClEO,IAAYC,MAAOF,IAAcJ,EAAQ,YAAYF,IACrDS,IAAWP,GAAS;CAK1B,IAJAQ,QAAsB;EAClB,IAAKD,KAAaL,GAClB,OAAOK,EAASF,CAAS;CAC7B,GAAG;EAACE;EAAUL;EAAUG;CAAS,CAAC,GAC9B,CAACF,KAAS,CAACM,KAAW,CAACC,KAAe,CAACC,GAAS,OAAO;CAC3D,IAAMC,IAAU,IAAIC;CACpB,OACI,kBAAC,UAAD;EACI,WAAWC,EAAGtB,EAAO,QAAQuB,MAAU,YAAYvB,EAAO,QAAQwB,CAAS;EAC3E,GAAInB;EAFR,UAAA,CAII,kBAAC,OAAD;GAAK,WAAWL,EAAO;GAAvB,UAAA;IACKiB,KAAW,kBAAC,OAAD;KAAK,WAAWjB,EAAO;KAAU,UAAAiB;IAAa,CAAA;IACzDN,KACG,kBAACS,GAAD;KAAS,IAAIP;KAAW,WAAWb,EAAO;KACrC,UAAAW;IACI,CAAA;IAEZO,KAAe,kBAAC,KAAD;KAAG,WAAWlB,EAAO;KAAc,UAAAkB;IAAe,CAAA;GACjE;EACJ,CAAA,GAAAC,KAAW,kBAAC,OAAD;GAAK,WAAWnB,EAAO;GAAU,UAAAmB;EAAa,CAAA,CACtD;;AAEhB;AAiEA,SAAgBM,EAAQ,EAAE,aAAU,SAAM,GAAGpB,KAAuB;CAChE,IAAMqB,IAAYnB,EAAM,GAClBoB,IAAWC,EAAsB,IAAI,GACrC,CAACC,GAAYC,KAAiBC,EAA0B,IAAI,GAC5DC,IAAUC,SACL;EACH;EACA,QAAQ,OACJ,EAAS,YAAYC,GACdP,EAAS,YAAYO;EAEhC,WAAW,OACPJ,GAAe,MAAY,CAAC,GAAIK,KAAW,CAAC,GAAIrB,CAAE,CAAC,SAE/CgB,GAAe,OAAaK,KAAW,CAAC,EAAA,CAAG,QAAQ,MAAUC,MAAUtB,CAAE,CAAC;CAEtF,IACA,CAACY,CAAS,CACd;CACA,QAAsB;EAClB,GAAe,MAAYS,KAAW,CAAC,CAAC;CAC5C,GAAG,CAAC,CAAC;CACL,IAAME,IAAQhC,EAAM,uBAAuB,KAAA,KAAaA,EAAM,kBAAkB,KAAA,GAC1EiC,IAAaT,MAAe,OAAOH,IAAYG,EAAW;CAChE,OACI,kBAAC3B,EAAe,UAAhB;EAAyB,OAAO8B;EAC5B,UAAA,kBAAC,WAAD;GACI,mBAAiBK,IAAQ,KAAA,IAAYC;GACrC,qBAAmBC;GACnB,GAAIlC;GAEH;EACI,CAAA;CACY,CAAA;AAEjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionHeader.module.cjs","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SectionHeader.module.cjs","names":["header","headerText","eyebrow","title","description","actions","center","SectionHeader_module_default"],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionHeader.module.js","names":[],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SectionHeader.module.js","names":["header","headerText","eyebrow","title","description","actions","center","SectionHeader_module_default"],"sources":["../../../src/components/SectionHeader/SectionHeader.module.css"],"sourcesContent":[".header {\n display: flex;\n align-items: flex-start;\n gap: var(--tempest-space-4);\n margin-bottom: var(--tempest-space-5);\n flex-wrap: wrap;\n}\n\n.headerText {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.eyebrow {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n margin-bottom: var(--tempest-space-1);\n}\n\n.title {\n margin: 0;\n font-size: var(--tempest-text-2xl);\n font-weight: var(--tempest-weight-bold);\n line-height: var(--tempest-leading-tight);\n}\n\n.description {\n margin: var(--tempest-space-2) 0 0;\n font-size: var(--tempest-text-sm);\n color: var(--tempest-text-muted);\n}\n\n.actions {\n display: flex;\n gap: var(--tempest-space-2);\n flex: 0 0 auto;\n flex-wrap: wrap;\n}\n\n.center {\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.center .actions {\n justify-content: center;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.cjs","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":"oHA2CA,SAAgB,EAAiD,CAC7D,UACA,QACA,WACA,OAAO,KACP,YAAY,GACZ,YACA,aAAc,EACd,GAAG,GAC2B,CAC9B,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CACI,KAAK,aACL,aAAY,EACZ,UAAW,EAAA,GAAG,EAAA,QAAO,MAAO,EAAA,QAAO,GAAO,GAAa,EAAA,QAAO,UAAW,CAAS,EAClF,GAAI,EAEH,SAAA,EAAQ,IAAK,GAAW,CACrB,IAAM,EAAW,EAAO,QAAU,EAClC,OACI,EAAA,EAAA,KAAA,CAAC,SAAD,CAEI,KAAK,SACL,KAAK,QACL,eAAc,EACd,SAAU,EAAO,SACjB,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,GAAY,EAAA,QAAO,MAAM,EACvD,YAAe,EAAS,EAAO,KAAK,EAPxC,SAAA,CASK,EAAO,OAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,SAAA,EAAO,IAAW,CAAA,GACjE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,EAAO,KAAY,CAAA,CAC/C,CAVC,EAAA,EAAO,KAUR,CAEhB,CAAC,CACA,CAAA,CAEb"}
1
+ {"version":3,"file":"SegmentedControl.cjs","names":["cn","styles","require_cn","require_SegmentedControl_module","react_jsx_runtime","SegmentedControl","ariaLabel","props","size","fullWidth","className","options","selected","option","value","onChange"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":"A,oHA2CA,SAAgBK,EAAiD,CAC7D,UACA,QACA,WACA,OAAO,KACP,YAAY,GACZ,YACA,aAAcC,EACd,GAAGC,GAC2B,CAC9B,OACI,EAAAH,EAAA,IAAA,CAAC,MAAD,CACI,KAAK,aACL,aAAYE,EACZ,UAAWN,EAAAA,GAAGC,EAAAA,QAAO,MAAOA,EAAAA,QAAOO,GAAOC,GAAaR,EAAAA,QAAO,UAAWS,CAAS,EAClF,GAAIH,EAEH,SAAAI,EAAQ,IAAK,GAAW,CACrB,IAAMC,EAAWC,EAAO,QAAUC,EAClC,OACI,EAAAV,EAAA,KAAA,CAAC,SAAD,CAEI,KAAK,SACL,KAAK,QACL,eAAcQ,EACd,SAAUC,EAAO,SACjB,UAAWb,EAAAA,GAAGC,EAAAA,QAAO,QAASW,GAAYX,EAAAA,QAAO,MAAM,EACvD,YAAec,EAASF,EAAO,KAAK,EAPxC,SAAA,CASKA,EAAO,OAAQ,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,KAAO,SAAAY,EAAO,IAAW,CAAA,GACjE,EAAAT,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWH,EAAAA,QAAO,MAAQ,SAAAY,EAAO,KAAY,CAAA,CAC/C,CAVC,EAAAA,EAAO,KAUR,CAEhB,CAAC,CACA,CAAA,CAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.js","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;AA2CA,SAAgB,EAAiD,EAC7D,YACA,UACA,aACA,UAAO,MACP,eAAY,IACZ,cACA,cAAc,GACd,GAAG,KAC2B;CAC9B,OACI,kBAAC,OAAD;EACI,MAAK;EACL,cAAY;EACZ,WAAW,EAAG,EAAO,OAAO,EAAO,IAAO,KAAa,EAAO,WAAW,CAAS;EAClF,GAAI;EAEH,UAAA,EAAQ,KAAK,MAAW;GACrB,IAAM,IAAW,EAAO,UAAU;GAClC,OACI,kBAAC,UAAD;IAEI,MAAK;IACL,MAAK;IACL,gBAAc;IACd,UAAU,EAAO;IACjB,WAAW,EAAG,EAAO,SAAS,KAAY,EAAO,MAAM;IACvD,eAAe,EAAS,EAAO,KAAK;IAPxC,UAAA,CASK,EAAO,QAAQ,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAO,UAAA,EAAO;IAAW,CAAA,GACjE,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAQ,UAAA,EAAO;IAAY,CAAA,CAC/C;GAVC,GAAA,EAAO,KAUR;EAEhB,CAAC;CACA,CAAA;AAEb"}
1
+ {"version":3,"file":"SegmentedControl.js","names":["styles","SegmentedControl_module_default","SegmentedControl","ariaLabel","props","cn","size","fullWidth","className","options","selected","option","value","onChange"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption<TValue extends string = string> {\n value: TValue;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<TValue extends string = string> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n /** Available segments. */\n options: SegmentedControlOption<TValue>[];\n /** Selected value. */\n value: TValue;\n /** Fires with the new value when a segment is selected. */\n onChange: (value: TValue) => void;\n /** Visual size. Default `\"md\"`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Stretch to full width of container. Default `false`. */\n fullWidth?: boolean;\n /** Group label for screen readers. */\n \"aria-label\"?: string;\n}\n\n/**\n * iOS-style segmented control. Two-to-five mutually-exclusive options\n * rendered as a single connected pill bar.\n *\n * @example\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * options={[\n * { value: \"list\", label: \"Lista\" },\n * { value: \"grid\", label: \"Grade\" },\n * ]}\n * />\n */\nexport function SegmentedControl<TValue extends string = string>({\n options,\n value,\n onChange,\n size = \"md\",\n fullWidth = false,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedControlProps<TValue>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(styles.group, styles[size], fullWidth && styles.fullWidth, className)}\n {...props}\n >\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={option.disabled}\n className={cn(styles.segment, selected && styles.active)}\n onClick={() => onChange(option.value)}\n >\n {option.icon && <span className={styles.icon}>{option.icon}</span>}\n <span className={styles.label}>{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;AA2CA,SAAgBE,EAAiD,EAC7D,YACA,UACA,aACA,UAAO,MACP,eAAY,IACZ,cACA,cAAcC,GACd,GAAGC,KAC2B;CAC9B,OACI,kBAAC,OAAD;EACI,MAAK;EACL,cAAYD;EACZ,WAAWE,EAAGL,EAAO,OAAOA,EAAOM,IAAOC,KAAaP,EAAO,WAAWQ,CAAS;EAClF,GAAIJ;EAEH,UAAAK,EAAQ,KAAK,MAAW;GACrB,IAAMC,IAAWC,EAAO,UAAUC;GAClC,OACI,kBAAC,UAAD;IAEI,MAAK;IACL,MAAK;IACL,gBAAcF;IACd,UAAUC,EAAO;IACjB,WAAWN,EAAGL,EAAO,SAASU,KAAYV,EAAO,MAAM;IACvD,eAAea,EAASF,EAAO,KAAK;IAPxC,UAAA,CASKA,EAAO,QAAQ,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAO,UAAAW,EAAO;IAAW,CAAA,GACjE,kBAAC,QAAD;KAAM,WAAWX,EAAO;KAAQ,UAAAW,EAAO;IAAY,CAAA,CAC/C;GAVC,GAAAA,EAAO,KAUR;EAEhB,CAAC;CACA,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.module.cjs","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SegmentedControl.module.cjs","names":["group","fullWidth","segment","sm","md","lg","active","icon","label","SegmentedControl_module_default"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.module.js","names":[],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"SegmentedControl.module.js","names":["group","fullWidth","segment","sm","md","lg","active","icon","label","SegmentedControl_module_default"],"sources":["../../../src/components/SegmentedControl/SegmentedControl.module.css"],"sourcesContent":[".group {\n display: inline-flex;\n background: var(--tempest-surface-2);\n border-radius: var(--tempest-radius-md);\n padding: 2px;\n font-family: var(--tempest-font-sans);\n gap: 0;\n}\n\n.group.fullWidth {\n display: flex;\n width: 100%;\n}\n\n.segment {\n flex: 1 1 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: 6px 12px;\n border: 0;\n background: transparent;\n color: var(--tempest-text-muted);\n cursor: pointer;\n border-radius: calc(var(--tempest-radius-md) - 2px);\n font-weight: var(--tempest-weight-medium);\n transition:\n background var(--tempest-duration-fast, 120ms),\n color var(--tempest-duration-fast, 120ms);\n white-space: nowrap;\n}\n\n.group.sm .segment {\n padding: 4px 10px;\n font-size: var(--tempest-text-xs);\n min-height: 24px;\n}\n\n.group.md .segment {\n padding: 6px 12px;\n font-size: var(--tempest-text-sm);\n min-height: 32px;\n}\n\n.group.lg .segment {\n padding: 8px 14px;\n font-size: var(--tempest-text-md);\n min-height: 40px;\n}\n\n.segment:hover {\n color: var(--tempest-text);\n}\n\n.segment.active {\n background: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n box-shadow:\n inset 0 0 0 2px var(--tempest-selected-indicator),\n var(--tempest-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.08));\n}\n\n.segment:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n line-height: 1;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"CaretIcon.cjs","names":[],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"mCAYA,SAAgB,GAA0B,CACtC,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACjD,UAAA,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,EAAE,eACF,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,OAClB,CAAA,CACA,CAAA,CAEb"}
1
+ {"version":3,"file":"CaretIcon.cjs","names":["react_jsx_runtime","CaretIcon"],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":"A,mCAYA,SAAgBC,GAA0B,CACtC,OACI,EAAAD,EAAA,IAAA,CAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACjD,UAAA,EAAAA,EAAA,IAAA,CAAC,OAAD,CACI,EAAE,eACF,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,OAClB,CAAA,CACA,CAAA,CAEb,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"CaretIcon.js","names":[],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":";;AAYA,SAAgB,IAA0B;CACtC,OACI,kBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EACjD,UAAA,kBAAC,QAAD;GACI,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAClB,CAAA;CACA,CAAA;AAEb"}
1
+ {"version":3,"file":"CaretIcon.js","names":["CaretIcon"],"sources":["../../../src/components/Select/CaretIcon.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\n\n/**\n * The chevron `Select` and `Combobox` draw on the right of the control.\n *\n * Internal to the SDK: the public way to change it is `Select`'s `caretIcon`\n * prop. Its size comes from the `--tempest-control-caret-size` token through the\n * caret slot's stylesheet, so the `width`/`height` attributes here are only the\n * fallback for a page that loaded no SDK CSS.\n *\n * @returns The chevron as an inline SVG drawn in `currentColor`.\n */\nexport function CaretIcon(): ReactElement {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M6 9l6 6 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n"],"mappings":";;AAYA,SAAgBA,IAA0B;CACtC,OACI,kBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EACjD,UAAA,kBAAC,QAAD;GACI,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAClB,CAAA;CACA,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.cjs","names":[],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":"0JAkGA,IAAa,GAAA,EAAS,EAAA,WAAA,CAA2C,SAAgB,EAAO,EAAK,CACzF,GAAM,CACF,UACA,cACA,mBACA,YACA,WACA,KACA,WACA,UAAU,QACV,QACA,aACA,QACA,YACA,GAAG,GACH,EAME,EAAS,IAAY,OACrB,EAAS,IAAY,OACrB,GAAA,EAAc,EAAA,MAAA,CAAM,EACpB,EAAW,GAAM,EAEjB,GACF,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,UAAW,EAAA,GACP,EAAA,QAAO,MACP,GAAU,EAAA,QAAO,KACjB,GAAU,EAAA,QAAO,KACjB,GAAU,CACd,EANJ,SAAA,EAQI,EAAA,EAAA,KAAA,CAAC,SAAD,CACS,MACL,GAAI,EACJ,eAAc,CAAC,CAAC,EACN,WACV,UAAW,EAAA,GAAG,EAAA,QAAO,OAAQ,CAAS,EACtC,GAAI,EANR,SAAA,CAQK,IACG,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,MAAM,GAAG,SAAA,GAAS,OAAA,GACrB,SAAA,CACG,CAAA,EAEX,GAAS,IAAK,IACX,EAAA,EAAA,IAAA,CAAC,SAAD,CAAwB,MAAO,EAAI,MAAO,SAAU,EAAI,SACnD,SAAA,EAAI,KACD,EAFK,EAAI,KAET,CACX,EACA,CACG,CACR,CAAA,GAAA,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAO,cAAA,GAC1B,SAAA,IAAa,EAAA,EAAA,IAAA,CAAC,EAAA,UAAD,CAAY,CAAA,CACxB,CAAA,CACL,IAWT,OARI,EACO,EAGP,GACO,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,YAAa,CAAgB,EAAI,SAAA,CAAa,CAAA,GAI/E,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,GAAS,EAAA,QAAO,MAAO,CAAgB,EAA1E,SAAA,CACK,IACG,EAAA,EAAA,KAAA,CAAC,QAAD,CAAO,QAAS,EAAU,UAAW,EAAA,QAAO,MAA5C,SAAA,CACK,EACA,IAAY,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,SAAU,SAAA,GAAO,CAAA,CACnD,IAEV,EACA,GACG,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAY,SAAA,CAAY,CAAA,EAChD,GACA,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,OAAS,SAAA,CAAiB,CAAA,EAClD,IACH,GAEb,CAAC"}
1
+ {"version":3,"file":"Select.cjs","names":["forwardRef","useId","cn","styles","CaretIcon","require_cn","require_CaretIcon","require_Select_module","react","react_jsx_runtime","Select","rest","props","isChip","variant","isBare","generatedId","selectId","id","control","wrapperClassName","error","className","placeholder","options","opt","children","caretIcon","label","required","helperText"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":"A,0JAkGA,IAAaU,GAAA,EAASV,EAAAA,WAAAA,CAA2C,SAAgB,EAAO,EAAK,CACzF,GAAM,CACF,UACA,cACA,mBACA,YACA,WACA,KACA,WACA,UAAU,QACV,QACA,aACA,QACA,YACA,GAAGW,GACHC,EAMEC,EAASC,IAAY,OACrBC,EAASD,IAAY,OACrBE,GAAA,EAAcf,EAAAA,MAAAA,CAAM,EACpBgB,EAAWC,GAAMF,EAEjBG,GACF,EAAAV,EAAA,KAAA,CAAC,MAAD,CACI,UAAWP,EAAAA,GACPC,EAAAA,QAAO,MACPU,GAAUV,EAAAA,QAAO,KACjBY,GAAUZ,EAAAA,QAAO,KACjBY,GAAUK,CACd,EANJ,SAAA,EAQI,EAAAX,EAAA,KAAA,CAAC,SAAD,CACS,MACL,GAAIQ,EACJ,eAAc,CAAC,CAACI,EACN,WACV,UAAWnB,EAAAA,GAAGC,EAAAA,QAAO,OAAQmB,CAAS,EACtC,GAAIX,EANR,SAAA,CAQKY,IACG,EAAAd,EAAA,IAAA,CAAC,SAAD,CAAQ,MAAM,GAAG,SAAA,GAAS,OAAA,GACrB,SAAAc,CACG,CAAA,EAEXC,GAAS,IAAK,IACX,EAAAf,EAAA,IAAA,CAAC,SAAD,CAAwB,MAAOgB,EAAI,MAAO,SAAUA,EAAI,SACnD,SAAAA,EAAI,KACD,EAFKA,EAAI,KAET,CACX,EACAC,CACG,CACR,CAAA,GAAA,EAAAjB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,MAAO,cAAA,GAC1B,SAAAwB,IAAa,EAAAlB,EAAA,IAAA,CAACL,EAAAA,UAAD,CAAY,CAAA,CACxB,CAAA,CACL,C,GAWT,OARIW,EACOI,EAGPN,GACO,EAAAJ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,GAAGC,EAAAA,QAAO,YAAaiB,CAAgB,EAAI,SAAAD,CAAa,CAAA,GAI/E,EAAAV,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,GAAGC,EAAAA,QAAO,QAASkB,GAASlB,EAAAA,QAAO,MAAOiB,CAAgB,EAA1E,SAAA,CACKQ,IACG,EAAAnB,EAAA,KAAA,CAAC,QAAD,CAAO,QAASQ,EAAU,UAAWd,EAAAA,QAAO,MAA5C,SAAA,CACKyB,EACAC,IAAY,EAAApB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,SAAU,SAAA,GAAO,CAAA,CACnD,C,GAEVgB,EACAE,GACG,EAAAZ,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,UAAY,SAAAkB,CAAY,CAAA,EAChDS,GACA,EAAArB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWN,EAAAA,QAAO,OAAS,SAAA2B,CAAiB,CAAA,EAClD,IACH,C,EAEb,CAAC,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":[],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;AAkGA,IAAa,IAAS,EAA2C,SAAgB,GAAO,GAAK;CACzF,IAAM,EACF,YACA,gBACA,qBACA,cACA,aACA,OACA,aACA,aAAU,SACV,UACA,eACA,UACA,cACA,GAAG,MACH,GAME,IAAS,MAAY,QACrB,IAAS,MAAY,QACrB,IAAc,EAAM,GACpB,IAAW,KAAM,GAEjB,IACF,kBAAC,OAAD;EACI,WAAW,EACP,EAAO,OACP,KAAU,EAAO,MACjB,KAAU,EAAO,MACjB,KAAU,CACd;EANJ,UAAA,CAQI,kBAAC,UAAD;GACS;GACL,IAAI;GACJ,gBAAc,CAAC,CAAC;GACN;GACV,WAAW,EAAG,EAAO,QAAQ,CAAS;GACtC,GAAI;GANR,UAAA;IAQK,KACG,kBAAC,UAAD;KAAQ,OAAM;KAAG,UAAA;KAAS,QAAA;KACrB,UAAA;IACG,CAAA;IAEX,GAAS,KAAK,MACX,kBAAC,UAAD;KAAwB,OAAO,EAAI;KAAO,UAAU,EAAI;KACnD,UAAA,EAAI;IACD,GAFK,EAAI,KAET,CACX;IACA;GACG;EACR,CAAA,GAAA,kBAAC,QAAD;GAAM,WAAW,EAAO;GAAO,eAAA;GAC1B,UAAA,KAAa,kBAAC,GAAD,CAAY,CAAA;EACxB,CAAA,CACL;;CAWT,OARI,IACO,IAGP,IACO,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,aAAa,CAAgB;EAAI,UAAA;CAAa,CAAA,IAI/E,kBAAC,OAAD;EAAK,WAAW,EAAG,EAAO,SAAS,KAAS,EAAO,OAAO,CAAgB;EAA1E,UAAA;GACK,KACG,kBAAC,SAAD;IAAO,SAAS;IAAU,WAAW,EAAO;IAA5C,UAAA,CACK,GACA,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAU,UAAA;IAAO,CAAA,CACnD;;GAEV;GACA,IACG,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAY,UAAA;GAAY,CAAA,IAChD,IACA,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAS,UAAA;GAAiB,CAAA,IAClD;EACH;;AAEb,CAAC"}
1
+ {"version":3,"file":"Select.js","names":["styles","Select_module_default","Select","forwardRef","rest","props","isChip","variant","isBare","generatedId","useId","selectId","id","control","cn","wrapperClassName","error","className","placeholder","options","opt","children","caretIcon","CaretIcon","label","required","helperText"],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\nimport type { ReactNode, SelectHTMLAttributes } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CaretIcon } from \"./CaretIcon\";\nimport styles from \"./Select.module.css\";\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n/** What every variant of {@link Select} accepts. */\nexport interface SelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: SelectOption[];\n placeholder?: string;\n /**\n * Class for the outermost element. On `\"bare\"` that element is the shell\n * holding the `<select>` and the caret, which is where the app's own look goes.\n */\n wrapperClassName?: string;\n /**\n * Replaces the built-in chevron, following the `icon?: ReactNode` convention\n * the rest of the SDK uses.\n *\n * The icon is drawn in the caret slot, which is positioned by\n * `--tempest-control-caret-offset` and sized by `--tempest-control-caret-size`;\n * an `<svg>` passed here is stretched to that size, so the token — not the\n * icon's own `width`/`height` — decides how big the caret is in every density.\n */\n caretIcon?: ReactNode;\n}\n\n/** The full form field: label, control, helper text and error slot. */\nexport interface SelectFieldProps extends SelectBaseProps {\n variant?: \"field\";\n label?: string;\n helperText?: string;\n error?: string;\n}\n\n/**\n * The bare control, sized to its content.\n *\n * `aria-label` is required rather than optional, because the variant removes the\n * only visible label the component had. A settings row names the control in the\n * row's own text, which the `<select>` has no relationship to — so without this\n * the screen reader announces a combobox with no name at all.\n */\nexport interface SelectChipProps extends SelectBaseProps {\n variant: \"chip\";\n \"aria-label\": string;\n}\n\n/**\n * The mechanism without the look: `appearance: none`, the caret and the focus\n * ring, and no border, background, radius, shadow or height.\n *\n * The `<select>` inherits `background-color` and `color` from the shell (the\n * element `wrapperClassName` lands on). The background is not cosmetic: the\n * native popup paints each `<option>` from the `<select>`'s background, so a\n * transparent control would hand the menu back to the system white.\n *\n * Like `\"chip\"`, the variant has no visible label, so an accessible name is\n * required — through `aria-label` or `aria-labelledby`.\n */\nexport type SelectBareProps = SelectBaseProps & { variant: \"bare\" } & (\n { \"aria-label\": string } | { \"aria-labelledby\": string }\n );\n\nexport type SelectProps = SelectFieldProps | SelectChipProps | SelectBareProps;\n\n/**\n * Native `<select>` wrapper. Either provide `options` for a quick render, or\n * pass `<option>` children directly.\n *\n * Three variants:\n *\n * - `\"field\"` (default) — label, control, helper text and error slot, for a form.\n * - `\"chip\"` — the control alone, sized to its content, for a settings row where\n * the icon and the label are already on the left and the control belongs on the\n * right. Rendering the full field there stacks two labelled fields inside one\n * list item, which is why every app ended up hand-rolling a native `<select>`\n * with `appearance: none` — and hand-rolling it loses the focus ring, the\n * disabled styling and the caret this component already solves.\n * - `\"bare\"` — the same mechanism with none of the look, for an app with its own\n * visual identity: the shell renders `wrapper > select + caret`, and the app\n * dresses the wrapper through `wrapperClassName`. See {@link SelectBareProps}.\n *\n * @example\n * <Select label=\"Estado\" options={states} placeholder=\"Selecione\" />\n *\n * @example\n * <ListTile title=\"Idioma\" trailing={<Select variant=\"chip\" aria-label=\"Idioma\" options={langs} />} />\n *\n * @example\n * <Select variant=\"bare\" wrapperClassName={styles.filtro} aria-label=\"Status\" options={status} />\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder,\n wrapperClassName,\n className,\n children,\n id,\n required,\n variant = \"field\",\n label,\n helperText,\n error,\n caretIcon,\n ...rest\n } = props as SelectBaseProps & {\n variant?: SelectProps[\"variant\"];\n label?: string;\n helperText?: string;\n error?: string;\n };\n const isChip = variant === \"chip\";\n const isBare = variant === \"bare\";\n const generatedId = useId();\n const selectId = id ?? generatedId;\n\n const control = (\n <div\n className={cn(\n styles.field,\n isChip && styles.chip,\n isBare && styles.bare,\n isBare && wrapperClassName,\n )}\n >\n <select\n ref={ref}\n id={selectId}\n aria-invalid={!!error}\n required={required}\n className={cn(styles.select, className)}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n {children}\n </select>\n <span className={styles.caret} aria-hidden>\n {caretIcon ?? <CaretIcon />}\n </span>\n </div>\n );\n\n if (isBare) {\n return control;\n }\n\n if (isChip) {\n return <div className={cn(styles.chipWrapper, wrapperClassName)}>{control}</div>;\n }\n\n return (\n <div className={cn(styles.wrapper, error && styles.error, wrapperClassName)}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n {control}\n {error ? (\n <span className={styles.errorText}>{error}</span>\n ) : helperText ? (\n <span className={styles.helper}>{helperText}</span>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;AAkGA,IAAaE,IAASC,EAA2C,SAAgB,GAAO,GAAK;CACzF,IAAM,EACF,YACA,gBACA,qBACA,cACA,aACA,OACA,aACA,aAAU,SACV,UACA,eACA,UACA,cACA,GAAGC,MACHC,GAMEC,IAASC,MAAY,QACrBC,IAASD,MAAY,QACrBE,IAAcC,EAAM,GACpBC,IAAWC,KAAMH,GAEjBI,IACF,kBAAC,OAAD;EACI,WAAWC,EACPd,EAAO,OACPM,KAAUN,EAAO,MACjBQ,KAAUR,EAAO,MACjBQ,KAAUO,CACd;EANJ,UAAA,CAQI,kBAAC,UAAD;GACS;GACL,IAAIJ;GACJ,gBAAc,CAAC,CAACK;GACN;GACV,WAAWF,EAAGd,EAAO,QAAQiB,CAAS;GACtC,GAAIb;GANR,UAAA;IAQKc,KACG,kBAAC,UAAD;KAAQ,OAAM;KAAG,UAAA;KAAS,QAAA;KACrB,UAAAA;IACG,CAAA;IAEXC,GAAS,KAAK,MACX,kBAAC,UAAD;KAAwB,OAAOC,EAAI;KAAO,UAAUA,EAAI;KACnD,UAAAA,EAAI;IACD,GAFKA,EAAI,KAET,CACX;IACAC;GACG;EACR,CAAA,GAAA,kBAAC,QAAD;GAAM,WAAWrB,EAAO;GAAO,eAAA;GAC1B,UAAAsB,KAAa,kBAACC,GAAD,CAAY,CAAA;EACxB,CAAA,CACL;;CAWT,OARIf,IACOK,IAGPP,IACO,kBAAC,OAAD;EAAK,WAAWQ,EAAGd,EAAO,aAAae,CAAgB;EAAI,UAAAF;CAAa,CAAA,IAI/E,kBAAC,OAAD;EAAK,WAAWC,EAAGd,EAAO,SAASgB,KAAShB,EAAO,OAAOe,CAAgB;EAA1E,UAAA;GACKS,KACG,kBAAC,SAAD;IAAO,SAASb;IAAU,WAAWX,EAAO;IAA5C,UAAA,CACKwB,GACAC,KAAY,kBAAC,QAAD;KAAM,WAAWzB,EAAO;KAAU,UAAA;IAAO,CAAA,CACnD;;GAEVa;GACAG,IACG,kBAAC,QAAD;IAAM,WAAWhB,EAAO;IAAY,UAAAgB;GAAY,CAAA,IAChDU,IACA,kBAAC,QAAD;IAAM,WAAW1B,EAAO;IAAS,UAAA0B;GAAiB,CAAA,IAClD;EACH;;AAEb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.module.cjs","names":[],"sources":["../../../src/components/Select/Select.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.required {\n color: var(--tempest-danger);\n margin-left: 2px;\n}\n\n.field {\n --_tempest-caret-offset: var(--tempest-control-caret-offset, 12px);\n --_tempest-caret-size: var(--tempest-control-caret-size, 14px);\n --_tempest-caret-gap: 10px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.select {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-control-padding-md);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-control-font-md);\n line-height: var(--tempest-leading-snug);\n appearance: none;\n cursor: pointer;\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.select:hover:not(:disabled):not(:focus) {\n border-color: var(--tempest-border-strong);\n}\n\n.select:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.select:disabled {\n background-color: var(--tempest-surface);\n cursor: not-allowed;\n color: var(--tempest-text-muted);\n box-shadow: none;\n}\n\n.caret {\n position: absolute;\n right: var(--_tempest-caret-offset);\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--_tempest-caret-size);\n height: var(--_tempest-caret-size);\n pointer-events: none;\n color: var(--tempest-text-muted);\n}\n\n.field > .caret > svg {\n display: block;\n flex: none;\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.error .select {\n border-color: var(--tempest-danger);\n}\n\n.error .select:focus {\n box-shadow: 0 0 0 var(--tempest-focus-ring-width)\n color-mix(in srgb, var(--tempest-danger) 25%, transparent);\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n\n.errorText {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-danger);\n line-height: var(--tempest-leading-snug);\n}\n\n.chipWrapper {\n display: inline-flex;\n}\n\n.chip {\n --_tempest-caret-offset: calc(var(--tempest-control-caret-offset, 12px) - 2px);\n --_tempest-caret-gap: 6px;\n width: auto;\n}\n\n.chip .select {\n width: auto;\n height: var(--tempest-control-height-sm);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-space-3);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n font-size: var(--tempest-text-sm);\n box-shadow: none;\n}\n\n.bare {\n display: inline-flex;\n}\n\n.bare .select {\n flex: 1 1 auto;\n align-self: stretch;\n min-width: 0;\n height: auto;\n margin: 0;\n padding-block: 0;\n padding-inline-start: 0;\n border: 0;\n border-radius: inherit;\n background-color: inherit;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n box-shadow: none;\n}\n\n.bare .select:focus {\n box-shadow: none;\n}\n\n.bare:focus-within {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.bare .select:disabled {\n background-color: inherit;\n color: inherit;\n}\n\n.bare:has(> .select:disabled) {\n opacity: 0.6;\n}\n\n.bare .caret {\n color: inherit;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Select.module.cjs","names":["wrapper","label","required","field","select","caret","error","helper","errorText","chipWrapper","chip","bare","Select_module_default"],"sources":["../../../src/components/Select/Select.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.required {\n color: var(--tempest-danger);\n margin-left: 2px;\n}\n\n.field {\n --_tempest-caret-offset: var(--tempest-control-caret-offset, 12px);\n --_tempest-caret-size: var(--tempest-control-caret-size, 14px);\n --_tempest-caret-gap: 10px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.select {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-control-padding-md);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-control-font-md);\n line-height: var(--tempest-leading-snug);\n appearance: none;\n cursor: pointer;\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.select:hover:not(:disabled):not(:focus) {\n border-color: var(--tempest-border-strong);\n}\n\n.select:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.select:disabled {\n background-color: var(--tempest-surface);\n cursor: not-allowed;\n color: var(--tempest-text-muted);\n box-shadow: none;\n}\n\n.caret {\n position: absolute;\n right: var(--_tempest-caret-offset);\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--_tempest-caret-size);\n height: var(--_tempest-caret-size);\n pointer-events: none;\n color: var(--tempest-text-muted);\n}\n\n.field > .caret > svg {\n display: block;\n flex: none;\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.error .select {\n border-color: var(--tempest-danger);\n}\n\n.error .select:focus {\n box-shadow: 0 0 0 var(--tempest-focus-ring-width)\n color-mix(in srgb, var(--tempest-danger) 25%, transparent);\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n\n.errorText {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-danger);\n line-height: var(--tempest-leading-snug);\n}\n\n.chipWrapper {\n display: inline-flex;\n}\n\n.chip {\n --_tempest-caret-offset: calc(var(--tempest-control-caret-offset, 12px) - 2px);\n --_tempest-caret-gap: 6px;\n width: auto;\n}\n\n.chip .select {\n width: auto;\n height: var(--tempest-control-height-sm);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-space-3);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n font-size: var(--tempest-text-sm);\n box-shadow: none;\n}\n\n.bare {\n display: inline-flex;\n}\n\n.bare .select {\n flex: 1 1 auto;\n align-self: stretch;\n min-width: 0;\n height: auto;\n margin: 0;\n padding-block: 0;\n padding-inline-start: 0;\n border: 0;\n border-radius: inherit;\n background-color: inherit;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n box-shadow: none;\n}\n\n.bare .select:focus {\n box-shadow: none;\n}\n\n.bare:focus-within {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.bare .select:disabled {\n background-color: inherit;\n color: inherit;\n}\n\n.bare:has(> .select:disabled) {\n opacity: 0.6;\n}\n\n.bare .caret {\n color: inherit;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.module.js","names":[],"sources":["../../../src/components/Select/Select.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.required {\n color: var(--tempest-danger);\n margin-left: 2px;\n}\n\n.field {\n --_tempest-caret-offset: var(--tempest-control-caret-offset, 12px);\n --_tempest-caret-size: var(--tempest-control-caret-size, 14px);\n --_tempest-caret-gap: 10px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.select {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-control-padding-md);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-control-font-md);\n line-height: var(--tempest-leading-snug);\n appearance: none;\n cursor: pointer;\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.select:hover:not(:disabled):not(:focus) {\n border-color: var(--tempest-border-strong);\n}\n\n.select:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.select:disabled {\n background-color: var(--tempest-surface);\n cursor: not-allowed;\n color: var(--tempest-text-muted);\n box-shadow: none;\n}\n\n.caret {\n position: absolute;\n right: var(--_tempest-caret-offset);\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--_tempest-caret-size);\n height: var(--_tempest-caret-size);\n pointer-events: none;\n color: var(--tempest-text-muted);\n}\n\n.field > .caret > svg {\n display: block;\n flex: none;\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.error .select {\n border-color: var(--tempest-danger);\n}\n\n.error .select:focus {\n box-shadow: 0 0 0 var(--tempest-focus-ring-width)\n color-mix(in srgb, var(--tempest-danger) 25%, transparent);\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n\n.errorText {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-danger);\n line-height: var(--tempest-leading-snug);\n}\n\n.chipWrapper {\n display: inline-flex;\n}\n\n.chip {\n --_tempest-caret-offset: calc(var(--tempest-control-caret-offset, 12px) - 2px);\n --_tempest-caret-gap: 6px;\n width: auto;\n}\n\n.chip .select {\n width: auto;\n height: var(--tempest-control-height-sm);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-space-3);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n font-size: var(--tempest-text-sm);\n box-shadow: none;\n}\n\n.bare {\n display: inline-flex;\n}\n\n.bare .select {\n flex: 1 1 auto;\n align-self: stretch;\n min-width: 0;\n height: auto;\n margin: 0;\n padding-block: 0;\n padding-inline-start: 0;\n border: 0;\n border-radius: inherit;\n background-color: inherit;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n box-shadow: none;\n}\n\n.bare .select:focus {\n box-shadow: none;\n}\n\n.bare:focus-within {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.bare .select:disabled {\n background-color: inherit;\n color: inherit;\n}\n\n.bare:has(> .select:disabled) {\n opacity: 0.6;\n}\n\n.bare .caret {\n color: inherit;\n}\n"],"mappings":";"}
1
+ {"version":3,"file":"Select.module.js","names":["wrapper","label","required","field","select","caret","error","helper","errorText","chipWrapper","chip","bare","Select_module_default"],"sources":["../../../src/components/Select/Select.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1);\n width: 100%;\n}\n\n.label {\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text);\n line-height: var(--tempest-leading-snug);\n}\n\n.required {\n color: var(--tempest-danger);\n margin-left: 2px;\n}\n\n.field {\n --_tempest-caret-offset: var(--tempest-control-caret-offset, 12px);\n --_tempest-caret-size: var(--tempest-control-caret-size, 14px);\n --_tempest-caret-gap: 10px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.select {\n width: 100%;\n height: var(--tempest-control-height-md);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-control-padding-md);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-control-radius);\n background-color: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-control-font-md);\n line-height: var(--tempest-leading-snug);\n appearance: none;\n cursor: pointer;\n box-shadow: var(--tempest-shadow-xs);\n transition: var(--tempest-transition-color), var(--tempest-transition-shadow);\n}\n\n.select:hover:not(:disabled):not(:focus) {\n border-color: var(--tempest-border-strong);\n}\n\n.select:focus {\n outline: none;\n border-color: var(--tempest-primary);\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.select:disabled {\n background-color: var(--tempest-surface);\n cursor: not-allowed;\n color: var(--tempest-text-muted);\n box-shadow: none;\n}\n\n.caret {\n position: absolute;\n right: var(--_tempest-caret-offset);\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--_tempest-caret-size);\n height: var(--_tempest-caret-size);\n pointer-events: none;\n color: var(--tempest-text-muted);\n}\n\n.field > .caret > svg {\n display: block;\n flex: none;\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.error .select {\n border-color: var(--tempest-danger);\n}\n\n.error .select:focus {\n box-shadow: 0 0 0 var(--tempest-focus-ring-width)\n color-mix(in srgb, var(--tempest-danger) 25%, transparent);\n}\n\n.helper {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-text-muted);\n line-height: var(--tempest-leading-snug);\n}\n\n.errorText {\n font-size: var(--tempest-text-xs);\n color: var(--tempest-danger);\n line-height: var(--tempest-leading-snug);\n}\n\n.chipWrapper {\n display: inline-flex;\n}\n\n.chip {\n --_tempest-caret-offset: calc(var(--tempest-control-caret-offset, 12px) - 2px);\n --_tempest-caret-gap: 6px;\n width: auto;\n}\n\n.chip .select {\n width: auto;\n height: var(--tempest-control-height-sm);\n padding: 0\n calc(var(--_tempest-caret-offset) + var(--_tempest-caret-size) + var(--_tempest-caret-gap))\n 0 var(--tempest-space-3);\n border-radius: var(--tempest-radius-full);\n background-color: var(--tempest-surface);\n font-size: var(--tempest-text-sm);\n box-shadow: none;\n}\n\n.bare {\n display: inline-flex;\n}\n\n.bare .select {\n flex: 1 1 auto;\n align-self: stretch;\n min-width: 0;\n height: auto;\n margin: 0;\n padding-block: 0;\n padding-inline-start: 0;\n border: 0;\n border-radius: inherit;\n background-color: inherit;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n box-shadow: none;\n}\n\n.bare .select:focus {\n box-shadow: none;\n}\n\n.bare:focus-within {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: 2px;\n}\n\n.bare .select:disabled {\n background-color: inherit;\n color: inherit;\n}\n\n.bare:has(> .select:disabled) {\n opacity: 0.6;\n}\n\n.bare .caret {\n color: inherit;\n}\n"],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.cjs","names":[],"sources":["../../../src/components/Select/options.ts"],"sourcesContent":["/**\n * The shape every option list in the SDK shares: `Select`, `MultiSelect` and\n * `Combobox` all accept an array of it.\n *\n * `value` is always a `string` here, because that is what a `<select>` hands\n * back in `event.target.value` whatever the option was built from: an option\n * built with the number `0` comes back as the string `\"0\"`, so a list that kept\n * numbers could never be compared with `===` against what the control emits.\n */\nexport interface OptionEntry {\n value: string;\n label: string;\n}\n\n/**\n * The value {@link withAllOption} gives its entry, exported so the filter code\n * compares against a name instead of a magic string.\n *\n * @example\n * const where = status === ALL_OPTION_VALUE ? {} : { status };\n */\nexport const ALL_OPTION_VALUE = \"all\";\n\nconst DEFAULT_ALL_OPTION_LABEL = \"Todos\";\n\nconst DEFAULT_EMPTY_OPTION_LABEL = \"— Não definido —\";\n\n/** The minimum an option needs for the helpers to prepend to its list. */\ntype OptionLike = { value: string | number; label: string };\n\n/**\n * Turn a `value → label` map into the option list `Select`, `MultiSelect` and\n * `Combobox` take.\n *\n * Every key becomes a string `value` (see {@link OptionEntry} for why), so the\n * result is assignable to `SelectOption[]`, `MultiSelectOption[]` and\n * `ComboboxOption[]` alike.\n *\n * **Order.** A `Map` keeps the order it was written in, always. A plain object\n * does too — **except for integer-like keys**, which JavaScript enumerates first\n * and in ascending order whatever order they were written in\n * (`OrdinaryOwnPropertyKeys`, ECMA-262 §10.1.11.1). Measured in Node 24:\n * `Object.keys({ 5: \"Ótimo\", 3: \"Ok\", 1: \"Ruim\" })` is `[\"1\", \"3\", \"5\"]`, and\n * `{ baixa, 10, 2, alta }` enumerates as `[\"2\", \"10\", \"baixa\", \"alta\"]`. When\n * the business order of a numeric scale is not ascending, pass a `Map`.\n *\n * @param source - A record or a `Map` from value to label.\n * @returns A new array, one entry per key, in the order described above.\n *\n * @example\n * const STATUS = { active: \"Ativo\", paused: \"Pausado\" };\n * <Select aria-label=\"Status\" variant=\"chip\" options={toOptions(STATUS)} />\n *\n * @example\n * const HUMOR = new Map([[5, \"Ótimo\"], [3, \"Ok\"], [1, \"Ruim\"]]);\n * toOptions(HUMOR); // 5, 3, 1 — the order written\n */\nexport function toOptions(\n source: Readonly<Record<string, string>> | ReadonlyMap<string | number, string>,\n): OptionEntry[] {\n const entries: Iterable<readonly [string | number, string]> =\n source instanceof Map ? source.entries() : Object.entries(source);\n return Array.from(entries, ([value, label]) => ({ value: String(value), label }));\n}\n\n/**\n * Prepend the \"no filter\" entry to an option list.\n *\n * A filter needs this as a real option, not as the select's placeholder: a\n * placeholder reads as \"nothing chosen yet\", so the screen cannot tell whether\n * the column is filtered. The entry uses {@link ALL_OPTION_VALUE}.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"Todos\"`.\n * @returns A new array with the entry first.\n */\nexport function withAllOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_ALL_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: ALL_OPTION_VALUE, label }, ...options];\n}\n\n/**\n * Prepend the empty entry a nullable field needs.\n *\n * Without it a `<select>` has no way to show \"unset\": a controlled\n * `value=\"\"` with no matching option reads back as the **first option** (measured\n * in jsdom: `select.value === \"a\"`), so opening an edit form and saving it\n * writes a value nobody chose. `Select`'s `placeholder` does not cover this — its\n * entry is `disabled hidden`, so once something is picked the field can never be\n * cleared again. The entry's value is `\"\"`, which is what an unanswered nullable field\n * submits.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"— Não definido —\"`.\n * @returns A new array with the entry first.\n */\nexport function withEmptyOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_EMPTY_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: \"\", label }, ...options];\n}\n"],"mappings":"AAqBA,IAAa,EAAmB,MAoChC,SAAgB,EACZ,EACa,CACb,IAAM,EACF,aAAkB,IAAM,EAAO,QAAQ,EAAI,OAAO,QAAQ,CAAM,EACpE,OAAO,MAAM,KAAK,GAAU,CAAC,EAAO,MAAY,CAAE,MAAO,OAAO,CAAK,EAAG,OAAM,EAAE,CACpF,CAaA,SAAgB,EACZ,EACA,EAAgB,QACG,CACnB,MAAO,CAAC,CAAE,MAAA,MAAyB,OAAM,EAAG,GAAG,CAAO,CAC1D,CAiBA,SAAgB,EACZ,EACA,EAAgB,mBACG,CACnB,MAAO,CAAC,CAAE,MAAO,GAAI,OAAM,EAAG,GAAG,CAAO,CAC5C"}
1
+ {"version":3,"file":"options.cjs","names":["ALL_OPTION_VALUE","toOptions","entries","source","value","label","withAllOption","options","withEmptyOption"],"sources":["../../../src/components/Select/options.ts"],"sourcesContent":["/**\n * The shape every option list in the SDK shares: `Select`, `MultiSelect` and\n * `Combobox` all accept an array of it.\n *\n * `value` is always a `string` here, because that is what a `<select>` hands\n * back in `event.target.value` whatever the option was built from: an option\n * built with the number `0` comes back as the string `\"0\"`, so a list that kept\n * numbers could never be compared with `===` against what the control emits.\n */\nexport interface OptionEntry {\n value: string;\n label: string;\n}\n\n/**\n * The value {@link withAllOption} gives its entry, exported so the filter code\n * compares against a name instead of a magic string.\n *\n * @example\n * const where = status === ALL_OPTION_VALUE ? {} : { status };\n */\nexport const ALL_OPTION_VALUE = \"all\";\n\nconst DEFAULT_ALL_OPTION_LABEL = \"Todos\";\n\nconst DEFAULT_EMPTY_OPTION_LABEL = \"— Não definido —\";\n\n/** The minimum an option needs for the helpers to prepend to its list. */\ntype OptionLike = { value: string | number; label: string };\n\n/**\n * Turn a `value → label` map into the option list `Select`, `MultiSelect` and\n * `Combobox` take.\n *\n * Every key becomes a string `value` (see {@link OptionEntry} for why), so the\n * result is assignable to `SelectOption[]`, `MultiSelectOption[]` and\n * `ComboboxOption[]` alike.\n *\n * **Order.** A `Map` keeps the order it was written in, always. A plain object\n * does too — **except for integer-like keys**, which JavaScript enumerates first\n * and in ascending order whatever order they were written in\n * (`OrdinaryOwnPropertyKeys`, ECMA-262 §10.1.11.1). Measured in Node 24:\n * `Object.keys({ 5: \"Ótimo\", 3: \"Ok\", 1: \"Ruim\" })` is `[\"1\", \"3\", \"5\"]`, and\n * `{ baixa, 10, 2, alta }` enumerates as `[\"2\", \"10\", \"baixa\", \"alta\"]`. When\n * the business order of a numeric scale is not ascending, pass a `Map`.\n *\n * @param source - A record or a `Map` from value to label.\n * @returns A new array, one entry per key, in the order described above.\n *\n * @example\n * const STATUS = { active: \"Ativo\", paused: \"Pausado\" };\n * <Select aria-label=\"Status\" variant=\"chip\" options={toOptions(STATUS)} />\n *\n * @example\n * const HUMOR = new Map([[5, \"Ótimo\"], [3, \"Ok\"], [1, \"Ruim\"]]);\n * toOptions(HUMOR); // 5, 3, 1 — the order written\n */\nexport function toOptions(\n source: Readonly<Record<string, string>> | ReadonlyMap<string | number, string>,\n): OptionEntry[] {\n const entries: Iterable<readonly [string | number, string]> =\n source instanceof Map ? source.entries() : Object.entries(source);\n return Array.from(entries, ([value, label]) => ({ value: String(value), label }));\n}\n\n/**\n * Prepend the \"no filter\" entry to an option list.\n *\n * A filter needs this as a real option, not as the select's placeholder: a\n * placeholder reads as \"nothing chosen yet\", so the screen cannot tell whether\n * the column is filtered. The entry uses {@link ALL_OPTION_VALUE}.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"Todos\"`.\n * @returns A new array with the entry first.\n */\nexport function withAllOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_ALL_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: ALL_OPTION_VALUE, label }, ...options];\n}\n\n/**\n * Prepend the empty entry a nullable field needs.\n *\n * Without it a `<select>` has no way to show \"unset\": a controlled\n * `value=\"\"` with no matching option reads back as the **first option** (measured\n * in jsdom: `select.value === \"a\"`), so opening an edit form and saving it\n * writes a value nobody chose. `Select`'s `placeholder` does not cover this — its\n * entry is `disabled hidden`, so once something is picked the field can never be\n * cleared again. The entry's value is `\"\"`, which is what an unanswered nullable field\n * submits.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"— Não definido —\"`.\n * @returns A new array with the entry first.\n */\nexport function withEmptyOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_EMPTY_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: \"\", label }, ...options];\n}\n"],"mappings":"AAqBA,IAAaA,EAAmB,MAoChC,SAAgBC,EACZ,EACa,CACb,IAAMC,EACFC,aAAkB,IAAMA,EAAO,QAAQ,EAAI,OAAO,QAAQA,CAAM,EACpE,OAAO,MAAM,KAAKD,GAAU,CAACE,EAAOC,MAAY,CAAE,MAAO,OAAOD,CAAK,EAAG,OAAM,EAAE,CACpF,CAaA,SAAgBE,EACZ,EACA,EAAgB,QACG,CACnB,MAAO,CAAC,CAAE,MAAA,MAAyB,OAAM,EAAG,GAAGC,CAAO,CAC1D,CAiBA,SAAgBC,EACZ,EACA,EAAgB,mBACG,CACnB,MAAO,CAAC,CAAE,MAAO,GAAI,OAAM,EAAG,GAAGD,CAAO,CAC5C,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","names":[],"sources":["../../../src/components/Select/options.ts"],"sourcesContent":["/**\n * The shape every option list in the SDK shares: `Select`, `MultiSelect` and\n * `Combobox` all accept an array of it.\n *\n * `value` is always a `string` here, because that is what a `<select>` hands\n * back in `event.target.value` whatever the option was built from: an option\n * built with the number `0` comes back as the string `\"0\"`, so a list that kept\n * numbers could never be compared with `===` against what the control emits.\n */\nexport interface OptionEntry {\n value: string;\n label: string;\n}\n\n/**\n * The value {@link withAllOption} gives its entry, exported so the filter code\n * compares against a name instead of a magic string.\n *\n * @example\n * const where = status === ALL_OPTION_VALUE ? {} : { status };\n */\nexport const ALL_OPTION_VALUE = \"all\";\n\nconst DEFAULT_ALL_OPTION_LABEL = \"Todos\";\n\nconst DEFAULT_EMPTY_OPTION_LABEL = \"— Não definido —\";\n\n/** The minimum an option needs for the helpers to prepend to its list. */\ntype OptionLike = { value: string | number; label: string };\n\n/**\n * Turn a `value → label` map into the option list `Select`, `MultiSelect` and\n * `Combobox` take.\n *\n * Every key becomes a string `value` (see {@link OptionEntry} for why), so the\n * result is assignable to `SelectOption[]`, `MultiSelectOption[]` and\n * `ComboboxOption[]` alike.\n *\n * **Order.** A `Map` keeps the order it was written in, always. A plain object\n * does too — **except for integer-like keys**, which JavaScript enumerates first\n * and in ascending order whatever order they were written in\n * (`OrdinaryOwnPropertyKeys`, ECMA-262 §10.1.11.1). Measured in Node 24:\n * `Object.keys({ 5: \"Ótimo\", 3: \"Ok\", 1: \"Ruim\" })` is `[\"1\", \"3\", \"5\"]`, and\n * `{ baixa, 10, 2, alta }` enumerates as `[\"2\", \"10\", \"baixa\", \"alta\"]`. When\n * the business order of a numeric scale is not ascending, pass a `Map`.\n *\n * @param source - A record or a `Map` from value to label.\n * @returns A new array, one entry per key, in the order described above.\n *\n * @example\n * const STATUS = { active: \"Ativo\", paused: \"Pausado\" };\n * <Select aria-label=\"Status\" variant=\"chip\" options={toOptions(STATUS)} />\n *\n * @example\n * const HUMOR = new Map([[5, \"Ótimo\"], [3, \"Ok\"], [1, \"Ruim\"]]);\n * toOptions(HUMOR); // 5, 3, 1 — the order written\n */\nexport function toOptions(\n source: Readonly<Record<string, string>> | ReadonlyMap<string | number, string>,\n): OptionEntry[] {\n const entries: Iterable<readonly [string | number, string]> =\n source instanceof Map ? source.entries() : Object.entries(source);\n return Array.from(entries, ([value, label]) => ({ value: String(value), label }));\n}\n\n/**\n * Prepend the \"no filter\" entry to an option list.\n *\n * A filter needs this as a real option, not as the select's placeholder: a\n * placeholder reads as \"nothing chosen yet\", so the screen cannot tell whether\n * the column is filtered. The entry uses {@link ALL_OPTION_VALUE}.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"Todos\"`.\n * @returns A new array with the entry first.\n */\nexport function withAllOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_ALL_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: ALL_OPTION_VALUE, label }, ...options];\n}\n\n/**\n * Prepend the empty entry a nullable field needs.\n *\n * Without it a `<select>` has no way to show \"unset\": a controlled\n * `value=\"\"` with no matching option reads back as the **first option** (measured\n * in jsdom: `select.value === \"a\"`), so opening an edit form and saving it\n * writes a value nobody chose. `Select`'s `placeholder` does not cover this — its\n * entry is `disabled hidden`, so once something is picked the field can never be\n * cleared again. The entry's value is `\"\"`, which is what an unanswered nullable field\n * submits.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"— Não definido —\"`.\n * @returns A new array with the entry first.\n */\nexport function withEmptyOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_EMPTY_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: \"\", label }, ...options];\n}\n"],"mappings":";AAqBA,IAAa,IAAmB;AAoChC,SAAgB,EACZ,GACa;CACb,IAAM,IACF,aAAkB,MAAM,EAAO,QAAQ,IAAI,OAAO,QAAQ,CAAM;CACpE,OAAO,MAAM,KAAK,IAAU,CAAC,GAAO,QAAY;EAAE,OAAO,OAAO,CAAK;EAAG;CAAM,EAAE;AACpF;AAaA,SAAgB,EACZ,GACA,IAAgB,SACG;CACnB,OAAO,CAAC;EAAE,OAAA;EAAyB;CAAM,GAAG,GAAG,CAAO;AAC1D;AAiBA,SAAgB,EACZ,GACA,IAAgB,oBACG;CACnB,OAAO,CAAC;EAAE,OAAO;EAAI;CAAM,GAAG,GAAG,CAAO;AAC5C"}
1
+ {"version":3,"file":"options.js","names":["ALL_OPTION_VALUE","toOptions","entries","source","value","label","withAllOption","options","withEmptyOption"],"sources":["../../../src/components/Select/options.ts"],"sourcesContent":["/**\n * The shape every option list in the SDK shares: `Select`, `MultiSelect` and\n * `Combobox` all accept an array of it.\n *\n * `value` is always a `string` here, because that is what a `<select>` hands\n * back in `event.target.value` whatever the option was built from: an option\n * built with the number `0` comes back as the string `\"0\"`, so a list that kept\n * numbers could never be compared with `===` against what the control emits.\n */\nexport interface OptionEntry {\n value: string;\n label: string;\n}\n\n/**\n * The value {@link withAllOption} gives its entry, exported so the filter code\n * compares against a name instead of a magic string.\n *\n * @example\n * const where = status === ALL_OPTION_VALUE ? {} : { status };\n */\nexport const ALL_OPTION_VALUE = \"all\";\n\nconst DEFAULT_ALL_OPTION_LABEL = \"Todos\";\n\nconst DEFAULT_EMPTY_OPTION_LABEL = \"— Não definido —\";\n\n/** The minimum an option needs for the helpers to prepend to its list. */\ntype OptionLike = { value: string | number; label: string };\n\n/**\n * Turn a `value → label` map into the option list `Select`, `MultiSelect` and\n * `Combobox` take.\n *\n * Every key becomes a string `value` (see {@link OptionEntry} for why), so the\n * result is assignable to `SelectOption[]`, `MultiSelectOption[]` and\n * `ComboboxOption[]` alike.\n *\n * **Order.** A `Map` keeps the order it was written in, always. A plain object\n * does too — **except for integer-like keys**, which JavaScript enumerates first\n * and in ascending order whatever order they were written in\n * (`OrdinaryOwnPropertyKeys`, ECMA-262 §10.1.11.1). Measured in Node 24:\n * `Object.keys({ 5: \"Ótimo\", 3: \"Ok\", 1: \"Ruim\" })` is `[\"1\", \"3\", \"5\"]`, and\n * `{ baixa, 10, 2, alta }` enumerates as `[\"2\", \"10\", \"baixa\", \"alta\"]`. When\n * the business order of a numeric scale is not ascending, pass a `Map`.\n *\n * @param source - A record or a `Map` from value to label.\n * @returns A new array, one entry per key, in the order described above.\n *\n * @example\n * const STATUS = { active: \"Ativo\", paused: \"Pausado\" };\n * <Select aria-label=\"Status\" variant=\"chip\" options={toOptions(STATUS)} />\n *\n * @example\n * const HUMOR = new Map([[5, \"Ótimo\"], [3, \"Ok\"], [1, \"Ruim\"]]);\n * toOptions(HUMOR); // 5, 3, 1 — the order written\n */\nexport function toOptions(\n source: Readonly<Record<string, string>> | ReadonlyMap<string | number, string>,\n): OptionEntry[] {\n const entries: Iterable<readonly [string | number, string]> =\n source instanceof Map ? source.entries() : Object.entries(source);\n return Array.from(entries, ([value, label]) => ({ value: String(value), label }));\n}\n\n/**\n * Prepend the \"no filter\" entry to an option list.\n *\n * A filter needs this as a real option, not as the select's placeholder: a\n * placeholder reads as \"nothing chosen yet\", so the screen cannot tell whether\n * the column is filtered. The entry uses {@link ALL_OPTION_VALUE}.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"Todos\"`.\n * @returns A new array with the entry first.\n */\nexport function withAllOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_ALL_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: ALL_OPTION_VALUE, label }, ...options];\n}\n\n/**\n * Prepend the empty entry a nullable field needs.\n *\n * Without it a `<select>` has no way to show \"unset\": a controlled\n * `value=\"\"` with no matching option reads back as the **first option** (measured\n * in jsdom: `select.value === \"a\"`), so opening an edit form and saving it\n * writes a value nobody chose. `Select`'s `placeholder` does not cover this — its\n * entry is `disabled hidden`, so once something is picked the field can never be\n * cleared again. The entry's value is `\"\"`, which is what an unanswered nullable field\n * submits.\n *\n * @param options - The list to extend. It is not mutated.\n * @param label - The entry's label. Defaults to `\"— Não definido —\"`.\n * @returns A new array with the entry first.\n */\nexport function withEmptyOption<T extends OptionLike>(\n options: readonly T[],\n label: string = DEFAULT_EMPTY_OPTION_LABEL,\n): (T | OptionEntry)[] {\n return [{ value: \"\", label }, ...options];\n}\n"],"mappings":";AAqBA,IAAaA,IAAmB;AAoChC,SAAgBC,EACZ,GACa;CACb,IAAMC,IACFC,aAAkB,MAAMA,EAAO,QAAQ,IAAI,OAAO,QAAQA,CAAM;CACpE,OAAO,MAAM,KAAKD,IAAU,CAACE,GAAOC,QAAY;EAAE,OAAO,OAAOD,CAAK;EAAG;CAAM,EAAE;AACpF;AAaA,SAAgBE,EACZ,GACA,IAAgB,SACG;CACnB,OAAO,CAAC;EAAE,OAAA;EAAyB;CAAM,GAAG,GAAGC,CAAO;AAC1D;AAiBA,SAAgBC,EACZ,GACA,IAAgB,oBACG;CACnB,OAAO,CAAC;EAAE,OAAO;EAAI;CAAM,GAAG,GAAGD,CAAO;AAC5C"}
@@ -1,2 +1,2 @@
1
- const e=require("../../utils/cn.cjs"),t=require("./active-nav-key.cjs"),n=require("./Sidebar.module.cjs"),r=require("./SidebarEntry.cjs");let i=require("react"),a=require("react/jsx-runtime");function o(e){let t=[],n;for(let r of e){if(r.type===`separator`){t.push({kind:`separator`,key:r.key}),n=void 0;continue}if(r.type===`section`){n={kind:`items`,key:r.key,section:r,items:[]},t.push(n);continue}n||(n={kind:`items`,key:`loose-${r.key}`,items:[]},t.push(n)),n.items.push(r)}return t}function s(e,n,r){if(r===`key`||n===void 0)return n;let i=e.filter(e=>e.type!==`section`&&e.type!==`separator`);return i[t.activeNavIndex(n,i.map(e=>e.href??e.key))]?.key}function c({header:t,items:c,value:l,onChange:u,match:d=`key`,footer:f,collapsed:p=!1,width:m=240,collapsedWidth:h=64,className:g,style:_,...v}){let y=(0,i.useId)(),b=o(c),x=s(c,l,d),S=typeof(p?h:m)==`number`?`${p?h:m}px`:p?h:m;return(0,a.jsxs)(`aside`,{className:e.cn(n.default.sidebar,p&&n.default.collapsed,g),style:{width:S,..._},...v,children:[t&&(0,a.jsx)(`div`,{className:n.default.header,children:t}),(0,a.jsx)(`nav`,{className:n.default.nav,"aria-label":`Navegação lateral`,children:b.map(t=>{if(t.kind===`separator`)return(0,a.jsx)(`hr`,{className:n.default.separator},t.key);if(!t.section)return(0,a.jsx)(`div`,{className:n.default.group,children:t.items.map(e=>(0,a.jsx)(r.SidebarEntry,{item:e,active:e.key===x,collapsed:p,onSelect:u},e.key))},t.key);let i=`${y}-${t.key}`;return(0,a.jsxs)(`div`,{role:`group`,"aria-labelledby":i,className:n.default.group,children:[(0,a.jsx)(`div`,{id:i,role:`presentation`,className:e.cn(n.default.section,p&&n.default.sectionCollapsed),children:t.section.label}),t.items.map(e=>(0,a.jsx)(r.SidebarEntry,{item:e,active:e.key===x,collapsed:p,onSelect:u},e.key))]},t.key)})}),f&&(0,a.jsx)(`div`,{className:n.default.footer,children:f})]})}exports.Sidebar=c;
1
+ const e=require("../../utils/cn.cjs"),t=require("./active-nav-key.cjs"),n=require("./Sidebar.module.cjs"),r=require("./SidebarEntry.cjs");let i=require("react"),a=require("react/jsx-runtime");function o(e){let t=[],n;for(let r of e)r.type===`separator`?(t.push({kind:`separator`,key:r.key}),n=void 0):r.type===`section`?(n={kind:`items`,key:r.key,section:r,items:[]},t.push(n)):(n||(n={kind:`items`,key:`loose-${r.key}`,items:[]},t.push(n)),n.items.push(r));return t}function s(e,n,r){if(r===`key`||n===void 0)return n;let i=e.filter(e=>e.type!==`section`&&e.type!==`separator`);return i[t.activeNavIndex(n,i.map(e=>e.href??e.key))]?.key}function c({header:t,items:c,value:l,onChange:u,match:d=`key`,footer:f,collapsed:p=!1,width:m=240,collapsedWidth:h=64,className:g,style:_,...v}){let y=(0,i.useId)(),b=o(c),x=s(c,l,d),S=typeof(p?h:m)==`number`?`${p?h:m}px`:p?h:m;return(0,a.jsxs)(`aside`,{className:e.cn(n.default.sidebar,p&&n.default.collapsed,g),style:{width:S,..._},...v,children:[t&&(0,a.jsx)(`div`,{className:n.default.header,children:t}),(0,a.jsx)(`nav`,{className:n.default.nav,"aria-label":`Navegação lateral`,children:b.map(t=>{if(t.kind===`separator`)return(0,a.jsx)(`hr`,{className:n.default.separator},t.key);if(!t.section)return(0,a.jsx)(`div`,{className:n.default.group,children:t.items.map(e=>(0,a.jsx)(r.SidebarEntry,{item:e,active:e.key===x,collapsed:p,onSelect:u},e.key))},t.key);let i=`${y}-${t.key}`;return(0,a.jsxs)(`div`,{role:`group`,"aria-labelledby":i,className:n.default.group,children:[(0,a.jsx)(`div`,{id:i,role:`presentation`,className:e.cn(n.default.section,p&&n.default.sectionCollapsed),children:t.section.label}),t.items.map(e=>(0,a.jsx)(r.SidebarEntry,{item:e,active:e.key===x,collapsed:p,onSelect:u},e.key))]},t.key)})}),f&&(0,a.jsx)(`div`,{className:n.default.footer,children:f})]})}exports.Sidebar=c;
2
2
  //# sourceMappingURL=Sidebar.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.cjs","names":[],"sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — header, items, footer are the three regions,\n * value/onChange/match the selection, and collapsed/width/collapsedWidth the two\n * layout modes it switches between.\n */\nimport { useId, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { activeNavIndex } from \"./active-nav-key\";\nimport styles from \"./Sidebar.module.css\";\nimport { SidebarEntry } from \"./SidebarEntry\";\n\nexport interface SidebarItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n badge?: ReactNode;\n disabled?: boolean;\n /**\n * Renders the entry as a link to this URL instead of a button.\n *\n * `onChange` still fires on click, so an app that tracks the active key keeps\n * working — the difference is that the entry now behaves like navigation:\n * middle-click, ctrl-click and \"copy link address\" do what the user expects,\n * and a screen reader announces a link rather than a button.\n *\n * A `disabled` entry ignores this and stays a `<button disabled>`: there is no\n * disabled state for an anchor, and dropping the `href` to fake one leaves a\n * link that announces itself as actionable and is not.\n */\n href?: string;\n}\n\n/**\n * A section heading. Every item after it belongs to the section, until the next\n * section or separator.\n */\nexport interface SidebarSection {\n type: \"section\";\n key: string;\n label: ReactNode;\n}\n\n/** A plain divider, for splitting the list without naming the parts. */\nexport interface SidebarSeparator {\n type: \"separator\";\n key: string;\n}\n\n/**\n * One entry of the navigation list.\n *\n * An entry with no `type` is an item, which is what keeps a plain\n * `SidebarItem[]` a valid `SidebarEntry[]`: adding sections to this component\n * needed no change at any existing call site.\n */\nexport type SidebarEntry = ({ type?: \"item\" } & SidebarItem) | SidebarSection | SidebarSeparator;\n\nexport interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Top slot — typically the logo + brand. */\n header?: ReactNode;\n /** Navigation entries. An entry with no `type` is an item. */\n items: SidebarEntry[];\n /**\n * The active item: its `key` by default, or the current route with\n * `match=\"route\"`.\n */\n value?: string;\n /**\n * How `value` picks the active item.\n *\n * - `\"key\"` (default): the item whose `key` equals `value`.\n * - `\"route\"`: `value` is the current pathname, and the active item is the one\n * whose `href` (or `key`, when it has no `href`) is the longest path covering\n * it on a segment boundary — see `activeNavKey`. `/dashboard/tips/42` lights\n * `/dashboard/tips`, not `/dashboard`, and `/users-admin` never lights\n * `/users`. Sections and separators take no part.\n *\n * `\"route\"` is what lets the app pass `useLocation().pathname` and stop\n * computing a key: the component already holds the entries the resolution runs\n * against, so asking the app to repeat them is how the two drift apart. It\n * reads no router itself — the value comes in as a string — so the component\n * keeps working with no router mounted.\n */\n match?: \"key\" | \"route\";\n /** Fires when an item is clicked. Receives the item's `key`. */\n onChange?: (key: string) => void;\n /** Bottom slot — typically settings/profile/logout. */\n footer?: ReactNode;\n /** Collapsed mode — only icons visible. Default `false`. */\n collapsed?: boolean;\n /** Width when expanded, in pixels or any CSS length. Default `240px`. */\n width?: number | string;\n /** Width when collapsed, in pixels or any CSS length. Default `64px`. */\n collapsedWidth?: number | string;\n}\n\n/** A run of items, optionally under a section heading. */\ninterface ItemBlock {\n kind: \"items\";\n key: string;\n section?: SidebarSection;\n items: SidebarItem[];\n}\n\n/** A standalone divider between blocks. */\ninterface SeparatorBlock {\n kind: \"separator\";\n key: string;\n}\n\ntype Block = ItemBlock | SeparatorBlock;\n\n/**\n * Fold the flat entry list into the blocks that get rendered.\n *\n * A section opens a block that swallows every following item; a separator closes\n * whatever is open, so items after it are loose again. Items before the first\n * section are loose too — which is the whole existing behaviour, and why a list\n * with no sections comes out of here as one unnamed block.\n *\n * @param entries - The `items` prop, as given.\n * @returns Blocks in render order.\n */\nfunction toBlocks(entries: readonly SidebarEntry[]): Block[] {\n const blocks: Block[] = [];\n let open: ItemBlock | undefined;\n\n for (const entry of entries) {\n if (entry.type === \"separator\") {\n blocks.push({ kind: \"separator\", key: entry.key });\n open = undefined;\n continue;\n }\n if (entry.type === \"section\") {\n open = { kind: \"items\", key: entry.key, section: entry, items: [] };\n blocks.push(open);\n continue;\n }\n if (!open) {\n open = { kind: \"items\", key: `loose-${entry.key}`, items: [] };\n blocks.push(open);\n }\n open.items.push(entry);\n }\n return blocks;\n}\n\n/**\n * The key of the item `value` selects, under the given `match` mode.\n *\n * @param entries - The `items` prop, as given.\n * @param value - The `value` prop.\n * @param match - The `match` prop.\n * @returns The active item's key, or `undefined` when no item is active.\n */\nfunction resolveActiveKey(\n entries: readonly SidebarEntry[],\n value: string | undefined,\n match: \"key\" | \"route\",\n): string | undefined {\n if (match === \"key\" || value === undefined) {\n return value;\n }\n const items = entries.filter(\n (entry): entry is { type?: \"item\" } & SidebarItem =>\n entry.type !== \"section\" && entry.type !== \"separator\",\n );\n return items[\n activeNavIndex(\n value,\n items.map((item) => item.href ?? item.key),\n )\n ]?.key;\n}\n\n/**\n * Desktop sidebar navigation. Pair with `<Show above=\"md\">` and a `Drawer`\n * for mobile.\n *\n * Sixteen screens in one flat list is a wall, so `items` also takes section\n * headings and separators. A section renders as a labelled `role=\"group\"`, which\n * is what tells a screen reader \"Monitoring, group, 3 items\" — the reason it is\n * not a styled `disabled` item, which would announce an unavailable button and\n * stay in the navigation order.\n *\n * @example\n * const [tab, setTab] = useState(\"home\");\n * <Show above=\"md\">\n * <Sidebar\n * header={<Brand />}\n * items={[{ key: \"home\", label: \"Home\", icon: <Home /> }]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n *\n * @example\n * const { pathname } = useLocation();\n * <Sidebar\n * match=\"route\"\n * value={pathname}\n * items={[\n * { key: \"overview\", label: \"Overview\", href: \"/dashboard\" },\n * { key: \"tips\", label: \"Tips\", href: \"/dashboard/tips\" },\n * ]}\n * />\n *\n * @example\n * <Sidebar\n * items={[\n * { type: \"section\", key: \"monitoring\", label: \"Monitoring\" },\n * { key: \"overview\", label: \"Overview\", href: \"/overview\" },\n * { key: \"activity\", label: \"Activity\", href: \"/activity\" },\n * { type: \"section\", key: \"admin\", label: \"Administration\" },\n * { key: \"settings\", label: \"Settings\", href: \"/settings\" },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n */\nexport function Sidebar({\n header,\n items,\n value,\n onChange,\n match = \"key\",\n footer,\n collapsed = false,\n width = 240,\n collapsedWidth = 64,\n className,\n style,\n ...props\n}: SidebarProps) {\n const baseId = useId();\n const blocks = toBlocks(items);\n const activeKey = resolveActiveKey(items, value, match);\n const finalWidth =\n typeof (collapsed ? collapsedWidth : width) === \"number\"\n ? `${collapsed ? collapsedWidth : width}px`\n : collapsed\n ? collapsedWidth\n : width;\n\n return (\n <aside\n className={cn(styles.sidebar, collapsed && styles.collapsed, className)}\n style={{ width: finalWidth, ...style }}\n {...props}\n >\n {header && <div className={styles.header}>{header}</div>}\n <nav className={styles.nav} aria-label=\"Navegação lateral\">\n {blocks.map((block) => {\n if (block.kind === \"separator\") {\n return <hr key={block.key} className={styles.separator} />;\n }\n if (!block.section) {\n return (\n <div key={block.key} className={styles.group}>\n {block.items.map((item) => (\n <SidebarEntry\n key={item.key}\n item={item}\n active={item.key === activeKey}\n collapsed={collapsed}\n onSelect={onChange}\n />\n ))}\n </div>\n );\n }\n const labelId = `${baseId}-${block.key}`;\n return (\n <div\n key={block.key}\n role=\"group\"\n aria-labelledby={labelId}\n className={styles.group}\n >\n <div\n id={labelId}\n role=\"presentation\"\n className={cn(styles.section, collapsed && styles.sectionCollapsed)}\n >\n {block.section.label}\n </div>\n {block.items.map((item) => (\n <SidebarEntry\n key={item.key}\n item={item}\n active={item.key === activeKey}\n collapsed={collapsed}\n onSelect={onChange}\n />\n ))}\n </div>\n );\n })}\n </nav>\n {footer && <div className={styles.footer}>{footer}</div>}\n </aside>\n );\n}\n"],"mappings":"gMA2HA,SAAS,EAAS,EAA2C,CACzD,IAAM,EAAkB,CAAC,EACrB,EAEJ,IAAK,IAAM,KAAS,EAAS,CACzB,GAAI,EAAM,OAAS,YAAa,CAC5B,EAAO,KAAK,CAAE,KAAM,YAAa,IAAK,EAAM,GAAI,CAAC,EACjD,EAAO,IAAA,GACP,QACJ,CACA,GAAI,EAAM,OAAS,UAAW,CAC1B,EAAO,CAAE,KAAM,QAAS,IAAK,EAAM,IAAK,QAAS,EAAO,MAAO,CAAC,CAAE,EAClE,EAAO,KAAK,CAAI,EAChB,QACJ,CACK,IACD,EAAO,CAAE,KAAM,QAAS,IAAK,SAAS,EAAM,MAAO,MAAO,CAAC,CAAE,EAC7D,EAAO,KAAK,CAAI,GAEpB,EAAK,MAAM,KAAK,CAAK,CACzB,CACA,OAAO,CACX,CAUA,SAAS,EACL,EACA,EACA,EACkB,CAClB,GAAI,IAAU,OAAS,IAAU,IAAA,GAC7B,OAAO,EAEX,IAAM,EAAQ,EAAQ,OACjB,GACG,EAAM,OAAS,WAAa,EAAM,OAAS,WACnD,EACA,OAAO,EACH,EAAA,eACI,EACA,EAAM,IAAK,GAAS,EAAK,MAAQ,EAAK,GAAG,CAC7C,EACH,EAAE,GACP,CA+CA,SAAgB,EAAQ,CACpB,SACA,QACA,QACA,WACA,QAAQ,MACR,SACA,YAAY,GACZ,QAAQ,IACR,iBAAiB,GACjB,YACA,QACA,GAAG,GACU,CACb,IAAM,GAAA,EAAS,EAAA,MAAA,CAAM,EACf,EAAS,EAAS,CAAK,EACvB,EAAY,EAAiB,EAAO,EAAO,CAAK,EAChD,EACF,OAAQ,EAAY,EAAiB,IAAW,SAC1C,GAAG,EAAY,EAAiB,EAAM,IACtC,EACE,EACA,EAEZ,OACI,EAAA,EAAA,KAAA,CAAC,QAAD,CACI,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,GAAa,EAAA,QAAO,UAAW,CAAS,EACtE,MAAO,CAAE,MAAO,EAAY,GAAG,CAAM,EACrC,GAAI,EAHR,SAAA,CAKK,IAAU,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAS,SAAA,CAAY,CAAA,GACvD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,IAAK,aAAW,oBAClC,SAAA,EAAO,IAAK,GAAU,CACnB,GAAI,EAAM,OAAS,YACf,OAAO,EAAA,EAAA,IAAA,CAAC,KAAD,CAAoB,UAAW,EAAA,QAAO,SAAY,EAAzC,EAAM,GAAmC,EAE7D,GAAI,CAAC,EAAM,QACP,OACI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAqB,UAAW,EAAA,QAAO,MAClC,SAAA,EAAM,MAAM,IAAK,IACd,EAAA,EAAA,IAAA,CAAC,EAAA,aAAD,CAEU,OACN,OAAQ,EAAK,MAAQ,EACV,YACX,SAAU,CACb,EALQ,EAAK,GAKb,CACJ,CACA,EAVK,EAAM,GAUX,EAGb,IAAM,EAAU,GAAG,EAAO,GAAG,EAAM,MACnC,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAEI,KAAK,QACL,kBAAiB,EACjB,UAAW,EAAA,QAAO,MAJtB,SAAA,EAMI,EAAA,EAAA,IAAA,CAAC,MAAD,CACI,GAAI,EACJ,KAAK,eACL,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,GAAa,EAAA,QAAO,gBAAgB,EAEjE,SAAA,EAAM,QAAQ,KACd,CAAA,EACJ,EAAM,MAAM,IAAK,IACd,EAAA,EAAA,IAAA,CAAC,EAAA,aAAD,CAEU,OACN,OAAQ,EAAK,MAAQ,EACV,YACX,SAAU,CACb,EALQ,EAAK,GAKb,CACJ,CACA,CArBI,EAAA,EAAM,GAqBV,CAEb,CAAC,CACA,CAAA,EACJ,IAAU,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAS,SAAA,CAAY,CAAA,CACpD,GAEf"}
1
+ {"version":3,"file":"Sidebar.cjs","names":["activeNavIndex","useId","cn","styles","SidebarEntry","require_cn","require_active_nav_key","require_Sidebar_module","require_SidebarEntry","react","react_jsx_runtime","toBlocks","blocks","open","entry","entries","resolveActiveKey","match","value","items","item","Sidebar","props","baseId","activeKey","finalWidth","collapsed","collapsedWidth","width","className","style","header","block","onChange","labelId","footer"],"sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @tempest-limits props-count — header, items, footer are the three regions,\n * value/onChange/match the selection, and collapsed/width/collapsedWidth the two\n * layout modes it switches between.\n */\nimport { useId, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { activeNavIndex } from \"./active-nav-key\";\nimport styles from \"./Sidebar.module.css\";\nimport { SidebarEntry } from \"./SidebarEntry\";\n\nexport interface SidebarItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n badge?: ReactNode;\n disabled?: boolean;\n /**\n * Renders the entry as a link to this URL instead of a button.\n *\n * `onChange` still fires on click, so an app that tracks the active key keeps\n * working — the difference is that the entry now behaves like navigation:\n * middle-click, ctrl-click and \"copy link address\" do what the user expects,\n * and a screen reader announces a link rather than a button.\n *\n * A `disabled` entry ignores this and stays a `<button disabled>`: there is no\n * disabled state for an anchor, and dropping the `href` to fake one leaves a\n * link that announces itself as actionable and is not.\n */\n href?: string;\n}\n\n/**\n * A section heading. Every item after it belongs to the section, until the next\n * section or separator.\n */\nexport interface SidebarSection {\n type: \"section\";\n key: string;\n label: ReactNode;\n}\n\n/** A plain divider, for splitting the list without naming the parts. */\nexport interface SidebarSeparator {\n type: \"separator\";\n key: string;\n}\n\n/**\n * One entry of the navigation list.\n *\n * An entry with no `type` is an item, which is what keeps a plain\n * `SidebarItem[]` a valid `SidebarEntry[]`: adding sections to this component\n * needed no change at any existing call site.\n */\nexport type SidebarEntry = ({ type?: \"item\" } & SidebarItem) | SidebarSection | SidebarSeparator;\n\nexport interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Top slot — typically the logo + brand. */\n header?: ReactNode;\n /** Navigation entries. An entry with no `type` is an item. */\n items: SidebarEntry[];\n /**\n * The active item: its `key` by default, or the current route with\n * `match=\"route\"`.\n */\n value?: string;\n /**\n * How `value` picks the active item.\n *\n * - `\"key\"` (default): the item whose `key` equals `value`.\n * - `\"route\"`: `value` is the current pathname, and the active item is the one\n * whose `href` (or `key`, when it has no `href`) is the longest path covering\n * it on a segment boundary — see `activeNavKey`. `/dashboard/tips/42` lights\n * `/dashboard/tips`, not `/dashboard`, and `/users-admin` never lights\n * `/users`. Sections and separators take no part.\n *\n * `\"route\"` is what lets the app pass `useLocation().pathname` and stop\n * computing a key: the component already holds the entries the resolution runs\n * against, so asking the app to repeat them is how the two drift apart. It\n * reads no router itself — the value comes in as a string — so the component\n * keeps working with no router mounted.\n */\n match?: \"key\" | \"route\";\n /** Fires when an item is clicked. Receives the item's `key`. */\n onChange?: (key: string) => void;\n /** Bottom slot — typically settings/profile/logout. */\n footer?: ReactNode;\n /** Collapsed mode — only icons visible. Default `false`. */\n collapsed?: boolean;\n /** Width when expanded, in pixels or any CSS length. Default `240px`. */\n width?: number | string;\n /** Width when collapsed, in pixels or any CSS length. Default `64px`. */\n collapsedWidth?: number | string;\n}\n\n/** A run of items, optionally under a section heading. */\ninterface ItemBlock {\n kind: \"items\";\n key: string;\n section?: SidebarSection;\n items: SidebarItem[];\n}\n\n/** A standalone divider between blocks. */\ninterface SeparatorBlock {\n kind: \"separator\";\n key: string;\n}\n\ntype Block = ItemBlock | SeparatorBlock;\n\n/**\n * Fold the flat entry list into the blocks that get rendered.\n *\n * A section opens a block that swallows every following item; a separator closes\n * whatever is open, so items after it are loose again. Items before the first\n * section are loose too — which is the whole existing behaviour, and why a list\n * with no sections comes out of here as one unnamed block.\n *\n * @param entries - The `items` prop, as given.\n * @returns Blocks in render order.\n */\nfunction toBlocks(entries: readonly SidebarEntry[]): Block[] {\n const blocks: Block[] = [];\n let open: ItemBlock | undefined;\n\n for (const entry of entries) {\n if (entry.type === \"separator\") {\n blocks.push({ kind: \"separator\", key: entry.key });\n open = undefined;\n continue;\n }\n if (entry.type === \"section\") {\n open = { kind: \"items\", key: entry.key, section: entry, items: [] };\n blocks.push(open);\n continue;\n }\n if (!open) {\n open = { kind: \"items\", key: `loose-${entry.key}`, items: [] };\n blocks.push(open);\n }\n open.items.push(entry);\n }\n return blocks;\n}\n\n/**\n * The key of the item `value` selects, under the given `match` mode.\n *\n * @param entries - The `items` prop, as given.\n * @param value - The `value` prop.\n * @param match - The `match` prop.\n * @returns The active item's key, or `undefined` when no item is active.\n */\nfunction resolveActiveKey(\n entries: readonly SidebarEntry[],\n value: string | undefined,\n match: \"key\" | \"route\",\n): string | undefined {\n if (match === \"key\" || value === undefined) {\n return value;\n }\n const items = entries.filter(\n (entry): entry is { type?: \"item\" } & SidebarItem =>\n entry.type !== \"section\" && entry.type !== \"separator\",\n );\n return items[\n activeNavIndex(\n value,\n items.map((item) => item.href ?? item.key),\n )\n ]?.key;\n}\n\n/**\n * Desktop sidebar navigation. Pair with `<Show above=\"md\">` and a `Drawer`\n * for mobile.\n *\n * Sixteen screens in one flat list is a wall, so `items` also takes section\n * headings and separators. A section renders as a labelled `role=\"group\"`, which\n * is what tells a screen reader \"Monitoring, group, 3 items\" — the reason it is\n * not a styled `disabled` item, which would announce an unavailable button and\n * stay in the navigation order.\n *\n * @example\n * const [tab, setTab] = useState(\"home\");\n * <Show above=\"md\">\n * <Sidebar\n * header={<Brand />}\n * items={[{ key: \"home\", label: \"Home\", icon: <Home /> }]}\n * value={tab}\n * onChange={setTab}\n * />\n * </Show>\n *\n * @example\n * const { pathname } = useLocation();\n * <Sidebar\n * match=\"route\"\n * value={pathname}\n * items={[\n * { key: \"overview\", label: \"Overview\", href: \"/dashboard\" },\n * { key: \"tips\", label: \"Tips\", href: \"/dashboard/tips\" },\n * ]}\n * />\n *\n * @example\n * <Sidebar\n * items={[\n * { type: \"section\", key: \"monitoring\", label: \"Monitoring\" },\n * { key: \"overview\", label: \"Overview\", href: \"/overview\" },\n * { key: \"activity\", label: \"Activity\", href: \"/activity\" },\n * { type: \"section\", key: \"admin\", label: \"Administration\" },\n * { key: \"settings\", label: \"Settings\", href: \"/settings\" },\n * ]}\n * value={tab}\n * onChange={setTab}\n * />\n */\nexport function Sidebar({\n header,\n items,\n value,\n onChange,\n match = \"key\",\n footer,\n collapsed = false,\n width = 240,\n collapsedWidth = 64,\n className,\n style,\n ...props\n}: SidebarProps) {\n const baseId = useId();\n const blocks = toBlocks(items);\n const activeKey = resolveActiveKey(items, value, match);\n const finalWidth =\n typeof (collapsed ? collapsedWidth : width) === \"number\"\n ? `${collapsed ? collapsedWidth : width}px`\n : collapsed\n ? collapsedWidth\n : width;\n\n return (\n <aside\n className={cn(styles.sidebar, collapsed && styles.collapsed, className)}\n style={{ width: finalWidth, ...style }}\n {...props}\n >\n {header && <div className={styles.header}>{header}</div>}\n <nav className={styles.nav} aria-label=\"Navegação lateral\">\n {blocks.map((block) => {\n if (block.kind === \"separator\") {\n return <hr key={block.key} className={styles.separator} />;\n }\n if (!block.section) {\n return (\n <div key={block.key} className={styles.group}>\n {block.items.map((item) => (\n <SidebarEntry\n key={item.key}\n item={item}\n active={item.key === activeKey}\n collapsed={collapsed}\n onSelect={onChange}\n />\n ))}\n </div>\n );\n }\n const labelId = `${baseId}-${block.key}`;\n return (\n <div\n key={block.key}\n role=\"group\"\n aria-labelledby={labelId}\n className={styles.group}\n >\n <div\n id={labelId}\n role=\"presentation\"\n className={cn(styles.section, collapsed && styles.sectionCollapsed)}\n >\n {block.section.label}\n </div>\n {block.items.map((item) => (\n <SidebarEntry\n key={item.key}\n item={item}\n active={item.key === activeKey}\n collapsed={collapsed}\n onSelect={onChange}\n />\n ))}\n </div>\n );\n })}\n </nav>\n {footer && <div className={styles.footer}>{footer}</div>}\n </aside>\n );\n}\n"],"mappings":"A,gMA2HA,SAASW,EAAS,EAA2C,CACzD,IAAMC,EAAkB,CAAC,EACrBC,EAEJ,IAAK,IAAMC,KAASC,EACZD,EAAM,OAAS,aACfF,EAAO,KAAK,CAAE,KAAM,YAAa,IAAKE,EAAM,GAAI,CAAC,EACjD,EAAO,IAAA,IAGPA,EAAM,OAAS,WACf,EAAO,CAAE,KAAM,QAAS,IAAKA,EAAM,IAAK,QAASA,EAAO,MAAO,CAAC,CAAE,EAClEF,EAAO,KAAKC,CAAI,IAGfA,IACD,EAAO,CAAE,KAAM,QAAS,IAAK,SAASC,EAAM,MAAO,MAAO,CAAC,CAAE,EAC7DF,EAAO,KAAKC,CAAI,GAEpBA,EAAK,MAAM,KAAKC,CAAK,GAEzB,OAAOF,CACX,CAUA,SAASI,EACL,EACA,EACA,EACkB,CAClB,GAAIC,IAAU,OAASC,IAAU,IAAA,GAC7B,OAAOA,EAEX,IAAMC,EAAQJ,EAAQ,OACjB,GACGD,EAAM,OAAS,WAAaA,EAAM,OAAS,WACnD,EACA,OAAOK,EACHnB,EAAAA,eACIkB,EACAC,EAAM,IAAK,GAASC,EAAK,MAAQA,EAAK,GAAG,CAC7C,EACH,EAAE,GACP,CA+CA,SAAgBC,EAAQ,CACpB,SACA,QACA,QACA,WACA,QAAQ,MACR,SACA,YAAY,GACZ,QAAQ,IACR,iBAAiB,GACjB,YACA,QACA,GAAGC,GACU,CACb,IAAMC,GAAA,EAAStB,EAAAA,MAAAA,CAAM,EACfW,EAASD,EAASQ,CAAK,EACvBK,EAAYR,EAAiBG,EAAOD,EAAOD,CAAK,EAChDQ,EACF,OAAQC,EAAYC,EAAiBC,IAAW,SAC1C,GAAGF,EAAYC,EAAiBC,EAAM,IACtCF,EACEC,EACAC,EAEZ,OACI,EAAAlB,EAAA,KAAA,CAAC,QAAD,CACI,UAAWR,EAAAA,GAAGC,EAAAA,QAAO,QAASuB,GAAavB,EAAAA,QAAO,UAAW0B,CAAS,EACtE,MAAO,CAAE,MAAOJ,EAAY,GAAGK,CAAM,EACrC,GAAIR,EAHR,SAAA,CAKKS,IAAU,EAAArB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,OAAS,SAAA4B,CAAY,CAAA,GACvD,EAAArB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,IAAK,aAAW,oBAClC,SAAAS,EAAO,IAAK,GAAU,CACnB,GAAIoB,EAAM,OAAS,YACf,OAAO,EAAAtB,EAAA,IAAA,CAAC,KAAD,CAAoB,UAAWP,EAAAA,QAAO,SAAY,EAAzC6B,EAAM,GAAmC,EAE7D,GAAI,CAACA,EAAM,QACP,OACI,EAAAtB,EAAA,IAAA,CAAC,MAAD,CAAqB,UAAWP,EAAAA,QAAO,MAClC,SAAA6B,EAAM,MAAM,IAAK,IACd,EAAAtB,EAAA,IAAA,CAACN,EAAAA,aAAD,CAEU,OACN,OAAQgB,EAAK,MAAQI,EACV,YACX,SAAUS,CACb,EALQb,EAAK,GAKb,CACJ,CACA,EAVKY,EAAM,GAUX,EAGb,IAAME,EAAU,GAAGX,EAAO,GAAGS,EAAM,MACnC,OACI,EAAAtB,EAAA,KAAA,CAAC,MAAD,CAEI,KAAK,QACL,kBAAiBwB,EACjB,UAAW/B,EAAAA,QAAO,MAJtB,SAAA,EAMI,EAAAO,EAAA,IAAA,CAAC,MAAD,CACI,GAAIwB,EACJ,KAAK,eACL,UAAWhC,EAAAA,GAAGC,EAAAA,QAAO,QAASuB,GAAavB,EAAAA,QAAO,gBAAgB,EAEjE,SAAA6B,EAAM,QAAQ,KACd,CAAA,EACJA,EAAM,MAAM,IAAK,IACd,EAAAtB,EAAA,IAAA,CAACN,EAAAA,aAAD,CAEU,OACN,OAAQgB,EAAK,MAAQI,EACV,YACX,SAAUS,CACb,EALQb,EAAK,GAKb,CACJ,CACA,CArBI,EAAAY,EAAM,GAqBV,CAEb,CAAC,CACA,CAAA,EACJG,IAAU,EAAAzB,EAAA,IAAA,CAAC,MAAD,CAAK,UAAWP,EAAAA,QAAO,OAAS,SAAAgC,CAAY,CAAA,CACpD,C,EAEf,C"}
@@ -7,29 +7,19 @@ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
7
  //#region src/components/Sidebar/Sidebar.tsx
8
8
  function s(e) {
9
9
  let t = [], n;
10
- for (let r of e) {
11
- if (r.type === "separator") {
12
- t.push({
13
- kind: "separator",
14
- key: r.key
15
- }), n = void 0;
16
- continue;
17
- }
18
- if (r.type === "section") {
19
- n = {
20
- kind: "items",
21
- key: r.key,
22
- section: r,
23
- items: []
24
- }, t.push(n);
25
- continue;
26
- }
27
- n || (n = {
28
- kind: "items",
29
- key: `loose-${r.key}`,
30
- items: []
31
- }, t.push(n)), n.items.push(r);
32
- }
10
+ for (let r of e) r.type === "separator" ? (t.push({
11
+ kind: "separator",
12
+ key: r.key
13
+ }), n = void 0) : r.type === "section" ? (n = {
14
+ kind: "items",
15
+ key: r.key,
16
+ section: r,
17
+ items: []
18
+ }, t.push(n)) : (n || (n = {
19
+ kind: "items",
20
+ key: `loose-${r.key}`,
21
+ items: []
22
+ }, t.push(n)), n.items.push(r));
33
23
  return t;
34
24
  }
35
25
  function c(e, n, r) {