tempest-react-sdk 0.62.0 → 0.64.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 (808) hide show
  1. package/README.md +10 -7
  2. package/dist/br/BrazilMap.module.cjs +1 -0
  3. package/dist/br/BrazilMap.module.cjs.map +1 -1
  4. package/dist/br/BrazilMap.module.js +1 -0
  5. package/dist/br/BrazilMap.module.js.map +1 -1
  6. package/dist/br/MapLegend.module.cjs +1 -0
  7. package/dist/br/MapLegend.module.cjs.map +1 -1
  8. package/dist/br/MapLegend.module.js +1 -0
  9. package/dist/br/MapLegend.module.js.map +1 -1
  10. package/dist/br/MunicipalitySearch.module.cjs +1 -0
  11. package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
  12. package/dist/br/MunicipalitySearch.module.js +1 -0
  13. package/dist/br/MunicipalitySearch.module.js.map +1 -1
  14. package/dist/br/PixQRCode.module.cjs +1 -0
  15. package/dist/br/PixQRCode.module.cjs.map +1 -1
  16. package/dist/br/PixQRCode.module.js +1 -0
  17. package/dist/br/PixQRCode.module.js.map +1 -1
  18. package/dist/components/AIChat/AIChat.module.cjs +1 -0
  19. package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
  20. package/dist/components/AIChat/AIChat.module.js +1 -0
  21. package/dist/components/AIChat/AIChat.module.js.map +1 -1
  22. package/dist/components/Accordion/Accordion.module.cjs +1 -0
  23. package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
  24. package/dist/components/Accordion/Accordion.module.js +1 -0
  25. package/dist/components/Accordion/Accordion.module.js.map +1 -1
  26. package/dist/components/Alert/Alert.module.cjs +1 -0
  27. package/dist/components/Alert/Alert.module.cjs.map +1 -1
  28. package/dist/components/Alert/Alert.module.js +1 -0
  29. package/dist/components/Alert/Alert.module.js.map +1 -1
  30. package/dist/components/AppBar/AppBar.module.cjs +1 -0
  31. package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
  32. package/dist/components/AppBar/AppBar.module.js +1 -0
  33. package/dist/components/AppBar/AppBar.module.js.map +1 -1
  34. package/dist/components/AppShell/AppShell.module.cjs +1 -0
  35. package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
  36. package/dist/components/AppShell/AppShell.module.js +1 -0
  37. package/dist/components/AppShell/AppShell.module.js.map +1 -1
  38. package/dist/components/AspectRatio/AspectRatio.module.cjs +1 -0
  39. package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
  40. package/dist/components/AspectRatio/AspectRatio.module.js +1 -0
  41. package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
  42. package/dist/components/AudioPlayer/AudioPlayer.module.cjs +1 -0
  43. package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
  44. package/dist/components/AudioPlayer/AudioPlayer.module.js +1 -0
  45. package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
  46. package/dist/components/AudioRecorder/AudioRecorder.module.cjs +1 -0
  47. package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
  48. package/dist/components/AudioRecorder/AudioRecorder.module.js +1 -0
  49. package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
  50. package/dist/components/Avatar/Avatar.module.cjs +1 -0
  51. package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
  52. package/dist/components/Avatar/Avatar.module.js +1 -0
  53. package/dist/components/Avatar/Avatar.module.js.map +1 -1
  54. package/dist/components/AvatarGroup/AvatarGroup.module.cjs +1 -0
  55. package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
  56. package/dist/components/AvatarGroup/AvatarGroup.module.js +1 -0
  57. package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
  58. package/dist/components/Badge/Badge.module.cjs +1 -0
  59. package/dist/components/Badge/Badge.module.cjs.map +1 -1
  60. package/dist/components/Badge/Badge.module.js +1 -0
  61. package/dist/components/Badge/Badge.module.js.map +1 -1
  62. package/dist/components/Banner/Banner.module.cjs +1 -0
  63. package/dist/components/Banner/Banner.module.cjs.map +1 -1
  64. package/dist/components/Banner/Banner.module.js +1 -0
  65. package/dist/components/Banner/Banner.module.js.map +1 -1
  66. package/dist/components/BarList/BarList.module.cjs +1 -0
  67. package/dist/components/BarList/BarList.module.cjs.map +1 -1
  68. package/dist/components/BarList/BarList.module.js +1 -0
  69. package/dist/components/BarList/BarList.module.js.map +1 -1
  70. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs +1 -0
  71. package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
  72. package/dist/components/BarcodeScanner/BarcodeScanner.module.js +1 -0
  73. package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
  74. package/dist/components/BottomNavigation/BottomNavigation.module.cjs +1 -0
  75. package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
  76. package/dist/components/BottomNavigation/BottomNavigation.module.js +1 -0
  77. package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
  78. package/dist/components/BottomSheet/BottomSheet.module.cjs +1 -0
  79. package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
  80. package/dist/components/BottomSheet/BottomSheet.module.js +1 -0
  81. package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
  82. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs +1 -0
  83. package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
  84. package/dist/components/Breadcrumbs/Breadcrumbs.module.js +1 -0
  85. package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
  86. package/dist/components/Button/Button.module.cjs +1 -0
  87. package/dist/components/Button/Button.module.cjs.map +1 -1
  88. package/dist/components/Button/Button.module.js +1 -0
  89. package/dist/components/Button/Button.module.js.map +1 -1
  90. package/dist/components/Calendar/Calendar.module.cjs +1 -0
  91. package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
  92. package/dist/components/Calendar/Calendar.module.js +1 -0
  93. package/dist/components/Calendar/Calendar.module.js.map +1 -1
  94. package/dist/components/Card/Card.module.cjs +1 -0
  95. package/dist/components/Card/Card.module.cjs.map +1 -1
  96. package/dist/components/Card/Card.module.js +1 -0
  97. package/dist/components/Card/Card.module.js.map +1 -1
  98. package/dist/components/Carousel/Carousel.module.cjs +1 -0
  99. package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
  100. package/dist/components/Carousel/Carousel.module.js +1 -0
  101. package/dist/components/Carousel/Carousel.module.js.map +1 -1
  102. package/dist/components/Center/Center.module.cjs +1 -0
  103. package/dist/components/Center/Center.module.cjs.map +1 -1
  104. package/dist/components/Center/Center.module.js +1 -0
  105. package/dist/components/Center/Center.module.js.map +1 -1
  106. package/dist/components/Chat/Chat.cjs +1 -1
  107. package/dist/components/Chat/Chat.cjs.map +1 -1
  108. package/dist/components/Chat/Chat.js +71 -96
  109. package/dist/components/Chat/Chat.js.map +1 -1
  110. package/dist/components/Chat/Chat.module.cjs +2 -1
  111. package/dist/components/Chat/Chat.module.cjs.map +1 -1
  112. package/dist/components/Chat/Chat.module.js +31 -8
  113. package/dist/components/Chat/Chat.module.js.map +1 -1
  114. package/dist/components/Chat/ChatActionsMenu.cjs +2 -0
  115. package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -0
  116. package/dist/components/Chat/ChatActionsMenu.js +14 -0
  117. package/dist/components/Chat/ChatActionsMenu.js.map +1 -0
  118. package/dist/components/Chat/ChatAttachments.cjs +2 -0
  119. package/dist/components/Chat/ChatAttachments.cjs.map +1 -0
  120. package/dist/components/Chat/ChatAttachments.js +80 -0
  121. package/dist/components/Chat/ChatAttachments.js.map +1 -0
  122. package/dist/components/Chat/ChatBubble.cjs +2 -0
  123. package/dist/components/Chat/ChatBubble.cjs.map +1 -0
  124. package/dist/components/Chat/ChatBubble.js +155 -0
  125. package/dist/components/Chat/ChatBubble.js.map +1 -0
  126. package/dist/components/Chat/chat-groups.cjs +1 -1
  127. package/dist/components/Chat/chat-groups.cjs.map +1 -1
  128. package/dist/components/Chat/chat-groups.js +42 -2
  129. package/dist/components/Chat/chat-groups.js.map +1 -1
  130. package/dist/components/Chat/chat-receipt.cjs +2 -0
  131. package/dist/components/Chat/chat-receipt.cjs.map +1 -0
  132. package/dist/components/Chat/chat-receipt.js +14 -0
  133. package/dist/components/Chat/chat-receipt.js.map +1 -0
  134. package/dist/components/Checkbox/Checkbox.module.cjs +1 -0
  135. package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
  136. package/dist/components/Checkbox/Checkbox.module.js +1 -0
  137. package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
  138. package/dist/components/ChipInput/ChipInput.module.cjs +1 -0
  139. package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
  140. package/dist/components/ChipInput/ChipInput.module.js +1 -0
  141. package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
  142. package/dist/components/CodeBlock/CodeBlock.module.cjs +1 -0
  143. package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
  144. package/dist/components/CodeBlock/CodeBlock.module.js +1 -0
  145. package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
  146. package/dist/components/Collapsible/Collapsible.module.cjs +1 -0
  147. package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
  148. package/dist/components/Collapsible/Collapsible.module.js +1 -0
  149. package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
  150. package/dist/components/Combobox/Combobox.module.cjs +1 -0
  151. package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
  152. package/dist/components/Combobox/Combobox.module.js +1 -0
  153. package/dist/components/Combobox/Combobox.module.js.map +1 -1
  154. package/dist/components/Command/Command.module.cjs +1 -0
  155. package/dist/components/Command/Command.module.cjs.map +1 -1
  156. package/dist/components/Command/Command.module.js +1 -0
  157. package/dist/components/Command/Command.module.js.map +1 -1
  158. package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
  159. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
  160. package/dist/components/ContextMenu/ContextMenu.js +100 -48
  161. package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
  162. package/dist/components/ContextMenu/ContextMenu.module.cjs +1 -0
  163. package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
  164. package/dist/components/ContextMenu/ContextMenu.module.js +1 -0
  165. package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
  166. package/dist/components/CopyButton/CopyButton.module.cjs +1 -0
  167. package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
  168. package/dist/components/CopyButton/CopyButton.module.js +1 -0
  169. package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
  170. package/dist/components/DataList/DataList.module.cjs +1 -0
  171. package/dist/components/DataList/DataList.module.cjs.map +1 -1
  172. package/dist/components/DataList/DataList.module.js +1 -0
  173. package/dist/components/DataList/DataList.module.js.map +1 -1
  174. package/dist/components/DataTable/DataTable.module.cjs +1 -0
  175. package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
  176. package/dist/components/DataTable/DataTable.module.js +1 -0
  177. package/dist/components/DataTable/DataTable.module.js.map +1 -1
  178. package/dist/components/DateRangePicker/DateRangePicker.module.cjs +1 -0
  179. package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
  180. package/dist/components/DateRangePicker/DateRangePicker.module.js +1 -0
  181. package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
  182. package/dist/components/DescriptionList/DescriptionList.module.cjs +1 -0
  183. package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
  184. package/dist/components/DescriptionList/DescriptionList.module.js +1 -0
  185. package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
  186. package/dist/components/Divider/Divider.module.cjs +1 -0
  187. package/dist/components/Divider/Divider.module.cjs.map +1 -1
  188. package/dist/components/Divider/Divider.module.js +1 -0
  189. package/dist/components/Divider/Divider.module.js.map +1 -1
  190. package/dist/components/Drawer/Drawer.module.cjs +1 -0
  191. package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
  192. package/dist/components/Drawer/Drawer.module.js +1 -0
  193. package/dist/components/Drawer/Drawer.module.js.map +1 -1
  194. package/dist/components/DropdownMenu/DropdownMenu.module.cjs +1 -0
  195. package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
  196. package/dist/components/DropdownMenu/DropdownMenu.module.js +1 -0
  197. package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
  198. package/dist/components/Dropzone/Dropzone.module.cjs +1 -0
  199. package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
  200. package/dist/components/Dropzone/Dropzone.module.js +1 -0
  201. package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
  202. package/dist/components/EmptyState/EmptyState.module.cjs +1 -0
  203. package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
  204. package/dist/components/EmptyState/EmptyState.module.js +1 -0
  205. package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
  206. package/dist/components/ErrorState/ErrorState.module.cjs +1 -0
  207. package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
  208. package/dist/components/ErrorState/ErrorState.module.js +1 -0
  209. package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
  210. package/dist/components/ErrorText/ErrorText.module.cjs +1 -0
  211. package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
  212. package/dist/components/ErrorText/ErrorText.module.js +1 -0
  213. package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
  214. package/dist/components/FileUpload/FileUpload.module.cjs +1 -0
  215. package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
  216. package/dist/components/FileUpload/FileUpload.module.js +1 -0
  217. package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
  218. package/dist/components/FilterBar/FilterBar.module.cjs +1 -0
  219. package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
  220. package/dist/components/FilterBar/FilterBar.module.js +1 -0
  221. package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
  222. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs +1 -0
  223. package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
  224. package/dist/components/FloatingActionButton/FloatingActionButton.module.js +1 -0
  225. package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
  226. package/dist/components/Form/Form.module.cjs +1 -0
  227. package/dist/components/Form/Form.module.cjs.map +1 -1
  228. package/dist/components/Form/Form.module.js +1 -0
  229. package/dist/components/Form/Form.module.js.map +1 -1
  230. package/dist/components/HoverCard/HoverCard.module.cjs +1 -0
  231. package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
  232. package/dist/components/HoverCard/HoverCard.module.js +1 -0
  233. package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
  234. package/dist/components/Image/Image.module.cjs +1 -0
  235. package/dist/components/Image/Image.module.cjs.map +1 -1
  236. package/dist/components/Image/Image.module.js +1 -0
  237. package/dist/components/Image/Image.module.js.map +1 -1
  238. package/dist/components/ImageCropper/ImageCropper.module.cjs +1 -0
  239. package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
  240. package/dist/components/ImageCropper/ImageCropper.module.js +1 -0
  241. package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
  242. package/dist/components/Input/Input.module.cjs +1 -0
  243. package/dist/components/Input/Input.module.cjs.map +1 -1
  244. package/dist/components/Input/Input.module.js +1 -0
  245. package/dist/components/Input/Input.module.js.map +1 -1
  246. package/dist/components/InstallBanner/InstallBanner.module.cjs +1 -0
  247. package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
  248. package/dist/components/InstallBanner/InstallBanner.module.js +1 -0
  249. package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
  250. package/dist/components/Kanban/Kanban.module.cjs +1 -0
  251. package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
  252. package/dist/components/Kanban/Kanban.module.js +1 -0
  253. package/dist/components/Kanban/Kanban.module.js.map +1 -1
  254. package/dist/components/Kbd/Kbd.module.cjs +1 -0
  255. package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
  256. package/dist/components/Kbd/Kbd.module.js +1 -0
  257. package/dist/components/Kbd/Kbd.module.js.map +1 -1
  258. package/dist/components/Label/Label.module.cjs +1 -0
  259. package/dist/components/Label/Label.module.cjs.map +1 -1
  260. package/dist/components/Label/Label.module.js +1 -0
  261. package/dist/components/Label/Label.module.js.map +1 -1
  262. package/dist/components/Layout/Layout.module.cjs +1 -0
  263. package/dist/components/Layout/Layout.module.cjs.map +1 -1
  264. package/dist/components/Layout/Layout.module.js +1 -0
  265. package/dist/components/Layout/Layout.module.js.map +1 -1
  266. package/dist/components/Lightbox/Lightbox.module.cjs +1 -0
  267. package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
  268. package/dist/components/Lightbox/Lightbox.module.js +1 -0
  269. package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
  270. package/dist/components/ListTile/ListTile.module.cjs +1 -0
  271. package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
  272. package/dist/components/ListTile/ListTile.module.js +1 -0
  273. package/dist/components/ListTile/ListTile.module.js.map +1 -1
  274. package/dist/components/Markdown/Markdown.module.cjs +1 -0
  275. package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
  276. package/dist/components/Markdown/Markdown.module.js +1 -0
  277. package/dist/components/Markdown/Markdown.module.js.map +1 -1
  278. package/dist/components/Masonry/Masonry.module.cjs +1 -0
  279. package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
  280. package/dist/components/Masonry/Masonry.module.js +1 -0
  281. package/dist/components/Masonry/Masonry.module.js.map +1 -1
  282. package/dist/components/Menubar/Menubar.module.cjs +1 -0
  283. package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
  284. package/dist/components/Menubar/Menubar.module.js +1 -0
  285. package/dist/components/Menubar/Menubar.module.js.map +1 -1
  286. package/dist/components/Modal/Modal.module.cjs +1 -0
  287. package/dist/components/Modal/Modal.module.cjs.map +1 -1
  288. package/dist/components/Modal/Modal.module.js +1 -0
  289. package/dist/components/Modal/Modal.module.js.map +1 -1
  290. package/dist/components/ModalsManager/ModalsManager.module.cjs +1 -0
  291. package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
  292. package/dist/components/ModalsManager/ModalsManager.module.js +1 -0
  293. package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
  294. package/dist/components/MultiSelect/MultiSelect.module.cjs +1 -0
  295. package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
  296. package/dist/components/MultiSelect/MultiSelect.module.js +1 -0
  297. package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
  298. package/dist/components/NProgress/NProgress.module.cjs +1 -0
  299. package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
  300. package/dist/components/NProgress/NProgress.module.js +1 -0
  301. package/dist/components/NProgress/NProgress.module.js.map +1 -1
  302. package/dist/components/Navbar/Navbar.module.cjs +1 -0
  303. package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
  304. package/dist/components/Navbar/Navbar.module.js +1 -0
  305. package/dist/components/Navbar/Navbar.module.js.map +1 -1
  306. package/dist/components/NavigationMenu/NavigationMenu.module.cjs +1 -0
  307. package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
  308. package/dist/components/NavigationMenu/NavigationMenu.module.js +1 -0
  309. package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
  310. package/dist/components/NavigationRail/NavigationRail.module.cjs +1 -0
  311. package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
  312. package/dist/components/NavigationRail/NavigationRail.module.js +1 -0
  313. package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
  314. package/dist/components/NotificationCenter/NotificationCenter.module.cjs +1 -0
  315. package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
  316. package/dist/components/NotificationCenter/NotificationCenter.module.js +1 -0
  317. package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
  318. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs +1 -0
  319. package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
  320. package/dist/components/OfflineIndicator/OfflineIndicator.module.js +1 -0
  321. package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
  322. package/dist/components/Page/Page.module.cjs +1 -0
  323. package/dist/components/Page/Page.module.cjs.map +1 -1
  324. package/dist/components/Page/Page.module.js +1 -0
  325. package/dist/components/Page/Page.module.js.map +1 -1
  326. package/dist/components/Pagination/Pagination.module.cjs +1 -0
  327. package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
  328. package/dist/components/Pagination/Pagination.module.js +1 -0
  329. package/dist/components/Pagination/Pagination.module.js.map +1 -1
  330. package/dist/components/PasswordInput/PasswordInput.module.cjs +1 -0
  331. package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
  332. package/dist/components/PasswordInput/PasswordInput.module.js +1 -0
  333. package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
  334. package/dist/components/PinInput/PinInput.module.cjs +1 -0
  335. package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
  336. package/dist/components/PinInput/PinInput.module.js +1 -0
  337. package/dist/components/PinInput/PinInput.module.js.map +1 -1
  338. package/dist/components/Popover/Popover.module.cjs +1 -0
  339. package/dist/components/Popover/Popover.module.cjs.map +1 -1
  340. package/dist/components/Popover/Popover.module.js +1 -0
  341. package/dist/components/Popover/Popover.module.js.map +1 -1
  342. package/dist/components/Progress/Progress.module.cjs +1 -0
  343. package/dist/components/Progress/Progress.module.cjs.map +1 -1
  344. package/dist/components/Progress/Progress.module.js +1 -0
  345. package/dist/components/Progress/Progress.module.js.map +1 -1
  346. package/dist/components/QRCode/QRCode.module.cjs +1 -0
  347. package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
  348. package/dist/components/QRCode/QRCode.module.js +1 -0
  349. package/dist/components/QRCode/QRCode.module.js.map +1 -1
  350. package/dist/components/Radio/Radio.module.cjs +1 -0
  351. package/dist/components/Radio/Radio.module.cjs.map +1 -1
  352. package/dist/components/Radio/Radio.module.js +1 -0
  353. package/dist/components/Radio/Radio.module.js.map +1 -1
  354. package/dist/components/RangeSlider/RangeSlider.module.cjs +1 -0
  355. package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
  356. package/dist/components/RangeSlider/RangeSlider.module.js +1 -0
  357. package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
  358. package/dist/components/RatingStars/RatingStars.module.cjs +1 -0
  359. package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
  360. package/dist/components/RatingStars/RatingStars.module.js +1 -0
  361. package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
  362. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs +1 -0
  363. package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
  364. package/dist/components/RefreshIndicator/RefreshIndicator.module.js +1 -0
  365. package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
  366. package/dist/components/Resizable/Resizable.module.cjs +1 -0
  367. package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
  368. package/dist/components/Resizable/Resizable.module.js +1 -0
  369. package/dist/components/Resizable/Resizable.module.js.map +1 -1
  370. package/dist/components/SafeArea/SafeArea.module.cjs +1 -0
  371. package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
  372. package/dist/components/SafeArea/SafeArea.module.js +1 -0
  373. package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
  374. package/dist/components/Scheduler/Scheduler.module.cjs +1 -0
  375. package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
  376. package/dist/components/Scheduler/Scheduler.module.js +1 -0
  377. package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
  378. package/dist/components/ScrollArea/ScrollArea.module.cjs +1 -0
  379. package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
  380. package/dist/components/ScrollArea/ScrollArea.module.js +1 -0
  381. package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
  382. package/dist/components/SearchBar/SearchBar.module.cjs +1 -0
  383. package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
  384. package/dist/components/SearchBar/SearchBar.module.js +1 -0
  385. package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
  386. package/dist/components/SegmentedControl/SegmentedControl.module.cjs +1 -0
  387. package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
  388. package/dist/components/SegmentedControl/SegmentedControl.module.js +1 -0
  389. package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
  390. package/dist/components/Select/Select.module.cjs +1 -0
  391. package/dist/components/Select/Select.module.cjs.map +1 -1
  392. package/dist/components/Select/Select.module.js +1 -0
  393. package/dist/components/Select/Select.module.js.map +1 -1
  394. package/dist/components/Sidebar/Sidebar.module.cjs +1 -0
  395. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  396. package/dist/components/Sidebar/Sidebar.module.js +1 -0
  397. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  398. package/dist/components/SignaturePad/SignaturePad.module.cjs +1 -0
  399. package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
  400. package/dist/components/SignaturePad/SignaturePad.module.js +1 -0
  401. package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
  402. package/dist/components/Skeleton/Skeleton.module.cjs +1 -0
  403. package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
  404. package/dist/components/Skeleton/Skeleton.module.js +1 -0
  405. package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
  406. package/dist/components/Slider/Slider.module.cjs +1 -0
  407. package/dist/components/Slider/Slider.module.cjs.map +1 -1
  408. package/dist/components/Slider/Slider.module.js +1 -0
  409. package/dist/components/Slider/Slider.module.js.map +1 -1
  410. package/dist/components/Spacer/Spacer.module.cjs +1 -0
  411. package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
  412. package/dist/components/Spacer/Spacer.module.js +1 -0
  413. package/dist/components/Spacer/Spacer.module.js.map +1 -1
  414. package/dist/components/Sparkline/Sparkline.module.cjs +1 -0
  415. package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
  416. package/dist/components/Sparkline/Sparkline.module.js +1 -0
  417. package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
  418. package/dist/components/Spinner/Spinner.module.cjs +1 -0
  419. package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
  420. package/dist/components/Spinner/Spinner.module.js +1 -0
  421. package/dist/components/Spinner/Spinner.module.js.map +1 -1
  422. package/dist/components/Stat/Stat.module.cjs +1 -0
  423. package/dist/components/Stat/Stat.module.cjs.map +1 -1
  424. package/dist/components/Stat/Stat.module.js +1 -0
  425. package/dist/components/Stat/Stat.module.js.map +1 -1
  426. package/dist/components/Stepper/Stepper.module.cjs +1 -0
  427. package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
  428. package/dist/components/Stepper/Stepper.module.js +1 -0
  429. package/dist/components/Stepper/Stepper.module.js.map +1 -1
  430. package/dist/components/StepperInput/StepperInput.module.cjs +1 -0
  431. package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
  432. package/dist/components/StepperInput/StepperInput.module.js +1 -0
  433. package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
  434. package/dist/components/Switch/Switch.module.cjs +1 -0
  435. package/dist/components/Switch/Switch.module.cjs.map +1 -1
  436. package/dist/components/Switch/Switch.module.js +1 -0
  437. package/dist/components/Switch/Switch.module.js.map +1 -1
  438. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs +1 -0
  439. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
  440. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js +1 -0
  441. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
  442. package/dist/components/Table/Table.module.cjs +1 -0
  443. package/dist/components/Table/Table.module.cjs.map +1 -1
  444. package/dist/components/Table/Table.module.js +1 -0
  445. package/dist/components/Table/Table.module.js.map +1 -1
  446. package/dist/components/Tabs/Tabs.module.cjs +1 -0
  447. package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
  448. package/dist/components/Tabs/Tabs.module.js +1 -0
  449. package/dist/components/Tabs/Tabs.module.js.map +1 -1
  450. package/dist/components/Tag/Tag.module.cjs +1 -0
  451. package/dist/components/Tag/Tag.module.cjs.map +1 -1
  452. package/dist/components/Tag/Tag.module.js +1 -0
  453. package/dist/components/Tag/Tag.module.js.map +1 -1
  454. package/dist/components/Textarea/Textarea.module.cjs +1 -0
  455. package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
  456. package/dist/components/Textarea/Textarea.module.js +1 -0
  457. package/dist/components/Textarea/Textarea.module.js.map +1 -1
  458. package/dist/components/TimePicker/TimePicker.module.cjs +1 -0
  459. package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
  460. package/dist/components/TimePicker/TimePicker.module.js +1 -0
  461. package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
  462. package/dist/components/Timeline/Timeline.module.cjs +1 -0
  463. package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
  464. package/dist/components/Timeline/Timeline.module.js +1 -0
  465. package/dist/components/Timeline/Timeline.module.js.map +1 -1
  466. package/dist/components/Toast/Toast.module.cjs +1 -0
  467. package/dist/components/Toast/Toast.module.cjs.map +1 -1
  468. package/dist/components/Toast/Toast.module.js +1 -0
  469. package/dist/components/Toast/Toast.module.js.map +1 -1
  470. package/dist/components/Toggle/Toggle.module.cjs +1 -0
  471. package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
  472. package/dist/components/Toggle/Toggle.module.js +1 -0
  473. package/dist/components/Toggle/Toggle.module.js.map +1 -1
  474. package/dist/components/ToggleGroup/ToggleGroup.module.cjs +1 -0
  475. package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
  476. package/dist/components/ToggleGroup/ToggleGroup.module.js +1 -0
  477. package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
  478. package/dist/components/Tooltip/Tooltip.module.cjs +1 -0
  479. package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
  480. package/dist/components/Tooltip/Tooltip.module.js +1 -0
  481. package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
  482. package/dist/components/Tour/Tour.module.cjs +1 -0
  483. package/dist/components/Tour/Tour.module.cjs.map +1 -1
  484. package/dist/components/Tour/Tour.module.js +1 -0
  485. package/dist/components/Tour/Tour.module.js.map +1 -1
  486. package/dist/components/Transfer/Transfer.module.cjs +1 -0
  487. package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
  488. package/dist/components/Transfer/Transfer.module.js +1 -0
  489. package/dist/components/Transfer/Transfer.module.js.map +1 -1
  490. package/dist/components/TreeView/TreeView.module.cjs +1 -0
  491. package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
  492. package/dist/components/TreeView/TreeView.module.js +1 -0
  493. package/dist/components/TreeView/TreeView.module.js.map +1 -1
  494. package/dist/components/TruncateText/TruncateText.module.cjs +1 -0
  495. package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
  496. package/dist/components/TruncateText/TruncateText.module.js +1 -0
  497. package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
  498. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs +1 -0
  499. package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
  500. package/dist/components/UpdatePrompt/UpdatePrompt.module.js +1 -0
  501. package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
  502. package/dist/components/VideoPlayer/VideoPlayer.module.cjs +1 -0
  503. package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
  504. package/dist/components/VideoPlayer/VideoPlayer.module.js +1 -0
  505. package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
  506. package/dist/components/VirtualList/VirtualList.module.cjs +1 -0
  507. package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
  508. package/dist/components/VirtualList/VirtualList.module.js +1 -0
  509. package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
  510. package/dist/components/VirtualTable/VirtualTable.module.cjs +1 -0
  511. package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
  512. package/dist/components/VirtualTable/VirtualTable.module.js +1 -0
  513. package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
  514. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs +1 -0
  515. package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
  516. package/dist/components/VisuallyHidden/VisuallyHidden.module.js +1 -0
  517. package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
  518. package/dist/components/Wizard/Wizard.module.cjs +1 -0
  519. package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
  520. package/dist/components/Wizard/Wizard.module.js +1 -0
  521. package/dist/components/Wizard/Wizard.module.js.map +1 -1
  522. package/dist/editor/RichTextEditor.module.cjs +1 -0
  523. package/dist/editor/RichTextEditor.module.cjs.map +1 -1
  524. package/dist/editor/RichTextEditor.module.js +1 -0
  525. package/dist/editor/RichTextEditor.module.js.map +1 -1
  526. package/dist/geo/TrajectoryMap.module.cjs +1 -0
  527. package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
  528. package/dist/geo/TrajectoryMap.module.js +1 -0
  529. package/dist/geo/TrajectoryMap.module.js.map +1 -1
  530. package/dist/icons/IconPicker.module.cjs +1 -0
  531. package/dist/icons/IconPicker.module.cjs.map +1 -1
  532. package/dist/icons/IconPicker.module.js +1 -0
  533. package/dist/icons/IconPicker.module.js.map +1 -1
  534. package/dist/styles/AIChat.css +1 -78
  535. package/dist/styles/Accordion.css +1 -11
  536. package/dist/styles/Alert.css +1 -31
  537. package/dist/styles/AppBar.css +1 -16
  538. package/dist/styles/AppShell.css +1 -7
  539. package/dist/styles/AspectRatio.css +1 -2
  540. package/dist/styles/AudioPlayer.css +1 -12
  541. package/dist/styles/AudioRecorder.css +1 -19
  542. package/dist/styles/Avatar.css +1 -12
  543. package/dist/styles/AvatarGroup.css +1 -17
  544. package/dist/styles/Badge.css +1 -24
  545. package/dist/styles/Banner.css +1 -12
  546. package/dist/styles/BarList.css +1 -9
  547. package/dist/styles/BarcodeScanner.css +1 -20
  548. package/dist/styles/BottomNavigation.css +1 -9
  549. package/dist/styles/BottomSheet.css +1 -10
  550. package/dist/styles/BrazilMap.css +1 -19
  551. package/dist/styles/Breadcrumbs.css +1 -7
  552. package/dist/styles/Button.css +1 -41
  553. package/dist/styles/Calendar.css +1 -15
  554. package/dist/styles/Card.css +1 -14
  555. package/dist/styles/Carousel.css +1 -16
  556. package/dist/styles/Center.css +1 -4
  557. package/dist/styles/Chat.css +1 -34
  558. package/dist/styles/Checkbox.css +1 -10
  559. package/dist/styles/ChipInput.css +1 -12
  560. package/dist/styles/CodeBlock.css +1 -24
  561. package/dist/styles/Collapsible.css +1 -5
  562. package/dist/styles/Combobox.css +1 -17
  563. package/dist/styles/Command.css +1 -19
  564. package/dist/styles/ContextMenu.css +1 -10
  565. package/dist/styles/CopyButton.css +1 -3
  566. package/dist/styles/DataList.css +1 -2
  567. package/dist/styles/DataTable.css +1 -18
  568. package/dist/styles/DateRangePicker.css +1 -21
  569. package/dist/styles/DescriptionList.css +1 -3
  570. package/dist/styles/Divider.css +1 -10
  571. package/dist/styles/Drawer.css +1 -21
  572. package/dist/styles/DropdownMenu.css +1 -15
  573. package/dist/styles/Dropzone.css +1 -6
  574. package/dist/styles/EmptyState.css +1 -5
  575. package/dist/styles/ErrorState.css +1 -5
  576. package/dist/styles/ErrorText.css +1 -1
  577. package/dist/styles/FileUpload.css +1 -16
  578. package/dist/styles/FilterBar.css +1 -18
  579. package/dist/styles/FloatingActionButton.css +1 -22
  580. package/dist/styles/Form.css +1 -20
  581. package/dist/styles/HoverCard.css +1 -10
  582. package/dist/styles/IconPicker.css +1 -5
  583. package/dist/styles/Image.css +1 -1
  584. package/dist/styles/ImageCropper.css +1 -15
  585. package/dist/styles/Input.css +1 -23
  586. package/dist/styles/InstallBanner.css +1 -7
  587. package/dist/styles/Kanban.css +1 -14
  588. package/dist/styles/Kbd.css +1 -4
  589. package/dist/styles/Label.css +1 -2
  590. package/dist/styles/Layout.css +1 -21
  591. package/dist/styles/Lightbox.css +1 -20
  592. package/dist/styles/ListTile.css +1 -13
  593. package/dist/styles/MapLegend.css +1 -8
  594. package/dist/styles/Markdown.css +1 -23
  595. package/dist/styles/Masonry.css +1 -3
  596. package/dist/styles/Menubar.css +1 -16
  597. package/dist/styles/Modal.css +1 -20
  598. package/dist/styles/ModalsManager.css +1 -1
  599. package/dist/styles/MultiSelect.css +1 -20
  600. package/dist/styles/MunicipalitySearch.css +1 -5
  601. package/dist/styles/NProgress.css +1 -1
  602. package/dist/styles/Navbar.css +1 -9
  603. package/dist/styles/NavigationMenu.css +1 -11
  604. package/dist/styles/NavigationRail.css +1 -13
  605. package/dist/styles/NotificationCenter.css +1 -20
  606. package/dist/styles/OfflineIndicator.css +1 -6
  607. package/dist/styles/Page.css +1 -12
  608. package/dist/styles/Pagination.css +1 -11
  609. package/dist/styles/PasswordInput.css +1 -20
  610. package/dist/styles/PinInput.css +1 -12
  611. package/dist/styles/PixQRCode.css +1 -8
  612. package/dist/styles/Popover.css +1 -9
  613. package/dist/styles/Progress.css +1 -10
  614. package/dist/styles/QRCode.css +1 -2
  615. package/dist/styles/Radio.css +1 -13
  616. package/dist/styles/RangeSlider.css +1 -14
  617. package/dist/styles/RatingStars.css +1 -10
  618. package/dist/styles/RefreshIndicator.css +1 -4
  619. package/dist/styles/Resizable.css +1 -12
  620. package/dist/styles/RichTextEditor.css +1 -18
  621. package/dist/styles/SafeArea.css +1 -6
  622. package/dist/styles/Scheduler.css +1 -23
  623. package/dist/styles/ScrollArea.css +1 -6
  624. package/dist/styles/SearchBar.css +1 -10
  625. package/dist/styles/SegmentedControl.css +1 -11
  626. package/dist/styles/Select.css +1 -13
  627. package/dist/styles/Sidebar.css +1 -18
  628. package/dist/styles/SignaturePad.css +1 -5
  629. package/dist/styles/Skeleton.css +1 -6
  630. package/dist/styles/Slider.css +1 -14
  631. package/dist/styles/Spacer.css +1 -3
  632. package/dist/styles/Sparkline.css +1 -3
  633. package/dist/styles/Spinner.css +1 -11
  634. package/dist/styles/Stat.css +1 -11
  635. package/dist/styles/Stepper.css +1 -16
  636. package/dist/styles/StepperInput.css +1 -14
  637. package/dist/styles/Switch.css +1 -10
  638. package/dist/styles/SyncStatusBadge.css +1 -12
  639. package/dist/styles/Table.css +1 -15
  640. package/dist/styles/Tabs.css +1 -13
  641. package/dist/styles/Tag.css +1 -13
  642. package/dist/styles/Textarea.css +1 -12
  643. package/dist/styles/TimePicker.css +1 -13
  644. package/dist/styles/Timeline.css +1 -16
  645. package/dist/styles/Toast.css +1 -20
  646. package/dist/styles/Toggle.css +1 -11
  647. package/dist/styles/ToggleGroup.css +1 -8
  648. package/dist/styles/Tooltip.css +1 -9
  649. package/dist/styles/Tour.css +1 -19
  650. package/dist/styles/TrajectoryMap.css +1 -15
  651. package/dist/styles/Transfer.css +1 -20
  652. package/dist/styles/TreeView.css +1 -16
  653. package/dist/styles/TruncateText.css +1 -1
  654. package/dist/styles/UpdatePrompt.css +1 -9
  655. package/dist/styles/VideoPlayer.css +1 -22
  656. package/dist/styles/VirtualList.css +1 -4
  657. package/dist/styles/VirtualTable.css +1 -16
  658. package/dist/styles/VisuallyHidden.css +1 -1
  659. package/dist/styles/Wizard.css +1 -3
  660. package/dist/styles/advanced.css +2 -0
  661. package/dist/styles/chat.css +28 -0
  662. package/dist/styles/component/AIChat.css +79 -0
  663. package/dist/styles/component/Accordion.css +12 -0
  664. package/dist/styles/component/Alert.css +32 -0
  665. package/dist/styles/component/AppBar.css +17 -0
  666. package/dist/styles/component/AppShell.css +8 -0
  667. package/dist/styles/component/AspectRatio.css +3 -0
  668. package/dist/styles/component/AudioPlayer.css +13 -0
  669. package/dist/styles/component/AudioRecorder.css +20 -0
  670. package/dist/styles/component/Avatar.css +13 -0
  671. package/dist/styles/component/AvatarGroup.css +18 -0
  672. package/dist/styles/component/Badge.css +25 -0
  673. package/dist/styles/component/Banner.css +13 -0
  674. package/dist/styles/component/BarList.css +10 -0
  675. package/dist/styles/component/BarcodeScanner.css +21 -0
  676. package/dist/styles/component/BottomNavigation.css +10 -0
  677. package/dist/styles/component/BottomSheet.css +11 -0
  678. package/dist/styles/component/BrazilMap.css +20 -0
  679. package/dist/styles/component/Breadcrumbs.css +8 -0
  680. package/dist/styles/component/Button.css +42 -0
  681. package/dist/styles/component/Calendar.css +16 -0
  682. package/dist/styles/component/Card.css +15 -0
  683. package/dist/styles/component/Carousel.css +17 -0
  684. package/dist/styles/component/Center.css +5 -0
  685. package/dist/styles/component/Chat.css +63 -0
  686. package/dist/styles/component/Checkbox.css +11 -0
  687. package/dist/styles/component/ChipInput.css +13 -0
  688. package/dist/styles/component/CodeBlock.css +25 -0
  689. package/dist/styles/component/Collapsible.css +6 -0
  690. package/dist/styles/component/Combobox.css +18 -0
  691. package/dist/styles/component/Command.css +20 -0
  692. package/dist/styles/component/ContextMenu.css +13 -0
  693. package/dist/styles/component/CopyButton.css +4 -0
  694. package/dist/styles/component/DataList.css +3 -0
  695. package/dist/styles/component/DataTable.css +19 -0
  696. package/dist/styles/component/DateRangePicker.css +22 -0
  697. package/dist/styles/component/DescriptionList.css +4 -0
  698. package/dist/styles/component/Divider.css +11 -0
  699. package/dist/styles/component/Drawer.css +22 -0
  700. package/dist/styles/component/DropdownMenu.css +16 -0
  701. package/dist/styles/component/Dropzone.css +7 -0
  702. package/dist/styles/component/EmptyState.css +6 -0
  703. package/dist/styles/component/ErrorState.css +6 -0
  704. package/dist/styles/component/ErrorText.css +2 -0
  705. package/dist/styles/component/FileUpload.css +17 -0
  706. package/dist/styles/component/FilterBar.css +19 -0
  707. package/dist/styles/component/FloatingActionButton.css +23 -0
  708. package/dist/styles/component/Form.css +21 -0
  709. package/dist/styles/component/HoverCard.css +11 -0
  710. package/dist/styles/component/IconPicker.css +6 -0
  711. package/dist/styles/component/Image.css +2 -0
  712. package/dist/styles/component/ImageCropper.css +16 -0
  713. package/dist/styles/component/Input.css +24 -0
  714. package/dist/styles/component/InstallBanner.css +8 -0
  715. package/dist/styles/component/Kanban.css +15 -0
  716. package/dist/styles/component/Kbd.css +5 -0
  717. package/dist/styles/component/Label.css +3 -0
  718. package/dist/styles/component/Layout.css +22 -0
  719. package/dist/styles/component/Lightbox.css +21 -0
  720. package/dist/styles/component/ListTile.css +14 -0
  721. package/dist/styles/component/MapLegend.css +9 -0
  722. package/dist/styles/component/Markdown.css +24 -0
  723. package/dist/styles/component/Masonry.css +4 -0
  724. package/dist/styles/component/Menubar.css +17 -0
  725. package/dist/styles/component/Modal.css +21 -0
  726. package/dist/styles/component/ModalsManager.css +2 -0
  727. package/dist/styles/component/MultiSelect.css +21 -0
  728. package/dist/styles/component/MunicipalitySearch.css +6 -0
  729. package/dist/styles/component/NProgress.css +2 -0
  730. package/dist/styles/component/Navbar.css +10 -0
  731. package/dist/styles/component/NavigationMenu.css +12 -0
  732. package/dist/styles/component/NavigationRail.css +14 -0
  733. package/dist/styles/component/NotificationCenter.css +21 -0
  734. package/dist/styles/component/OfflineIndicator.css +7 -0
  735. package/dist/styles/component/Page.css +13 -0
  736. package/dist/styles/component/Pagination.css +12 -0
  737. package/dist/styles/component/PasswordInput.css +21 -0
  738. package/dist/styles/component/PinInput.css +13 -0
  739. package/dist/styles/component/PixQRCode.css +9 -0
  740. package/dist/styles/component/Popover.css +10 -0
  741. package/dist/styles/component/Progress.css +11 -0
  742. package/dist/styles/component/QRCode.css +3 -0
  743. package/dist/styles/component/Radio.css +14 -0
  744. package/dist/styles/component/RangeSlider.css +15 -0
  745. package/dist/styles/component/RatingStars.css +11 -0
  746. package/dist/styles/component/RefreshIndicator.css +5 -0
  747. package/dist/styles/component/Resizable.css +13 -0
  748. package/dist/styles/component/RichTextEditor.css +19 -0
  749. package/dist/styles/component/SafeArea.css +7 -0
  750. package/dist/styles/component/Scheduler.css +24 -0
  751. package/dist/styles/component/ScrollArea.css +7 -0
  752. package/dist/styles/component/SearchBar.css +11 -0
  753. package/dist/styles/component/SegmentedControl.css +12 -0
  754. package/dist/styles/component/Select.css +14 -0
  755. package/dist/styles/component/Sidebar.css +19 -0
  756. package/dist/styles/component/SignaturePad.css +6 -0
  757. package/dist/styles/component/Skeleton.css +7 -0
  758. package/dist/styles/component/Slider.css +15 -0
  759. package/dist/styles/component/Spacer.css +4 -0
  760. package/dist/styles/component/Sparkline.css +4 -0
  761. package/dist/styles/component/Spinner.css +12 -0
  762. package/dist/styles/component/Stat.css +12 -0
  763. package/dist/styles/component/Stepper.css +17 -0
  764. package/dist/styles/component/StepperInput.css +15 -0
  765. package/dist/styles/component/Switch.css +11 -0
  766. package/dist/styles/component/SyncStatusBadge.css +13 -0
  767. package/dist/styles/component/Table.css +16 -0
  768. package/dist/styles/component/Tabs.css +14 -0
  769. package/dist/styles/component/Tag.css +14 -0
  770. package/dist/styles/component/Textarea.css +13 -0
  771. package/dist/styles/component/TimePicker.css +14 -0
  772. package/dist/styles/component/Timeline.css +17 -0
  773. package/dist/styles/component/Toast.css +21 -0
  774. package/dist/styles/component/Toggle.css +12 -0
  775. package/dist/styles/component/ToggleGroup.css +9 -0
  776. package/dist/styles/component/Tooltip.css +10 -0
  777. package/dist/styles/component/Tour.css +20 -0
  778. package/dist/styles/component/TrajectoryMap.css +16 -0
  779. package/dist/styles/component/Transfer.css +21 -0
  780. package/dist/styles/component/TreeView.css +17 -0
  781. package/dist/styles/component/TruncateText.css +2 -0
  782. package/dist/styles/component/UpdatePrompt.css +10 -0
  783. package/dist/styles/component/VideoPlayer.css +23 -0
  784. package/dist/styles/component/VirtualList.css +5 -0
  785. package/dist/styles/component/VirtualTable.css +17 -0
  786. package/dist/styles/component/VisuallyHidden.css +2 -0
  787. package/dist/styles/component/Wizard.css +4 -0
  788. package/dist/styles/manifest.json +202 -190
  789. package/dist/styles.css +1 -1
  790. package/dist/tempest-react-sdk.cjs +1 -1
  791. package/dist/tempest-react-sdk.d.ts +253 -10
  792. package/dist/tempest-react-sdk.js +169 -167
  793. package/dist/theme/create-theme.cjs +3 -3
  794. package/dist/theme/create-theme.cjs.map +1 -1
  795. package/dist/theme/create-theme.js +109 -57
  796. package/dist/theme/create-theme.js.map +1 -1
  797. package/dist/vite/narrow-tokens.cjs +3 -0
  798. package/dist/vite/narrow-tokens.cjs.map +1 -0
  799. package/dist/vite/narrow-tokens.js +50 -0
  800. package/dist/vite/narrow-tokens.js.map +1 -0
  801. package/dist/vite/tempest-styles.cjs +6 -4
  802. package/dist/vite/tempest-styles.cjs.map +1 -1
  803. package/dist/vite/tempest-styles.js +73 -47
  804. package/dist/vite/tempest-styles.js.map +1 -1
  805. package/dist/vite.d.ts +19 -0
  806. package/loader/css-loader-hooks.mjs +37 -0
  807. package/loader/css-loader.mjs +46 -0
  808. package/package.json +4 -2
@@ -1,2 +1,2 @@
1
- const e=require("../../utils/cn.cjs"),t=require("../Portal/Portal.cjs"),n=require("./ContextMenu.module.cjs");let r=require("react"),i=require("react/jsx-runtime");function a(e){return`separator`in e&&e.separator===!0}function o({items:o,children:s,className:c}){let[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)({x:0,y:0}),[p,m]=(0,r.useState)(-1),h=(0,r.useId)(),g=(0,r.useRef)(null),_=(0,r.useRef)([]),v=o.map((e,t)=>!a(e)&&!e.disabled?t:-1).filter(e=>e!==-1),y=(0,r.useCallback)(()=>{u(!1),m(-1)},[]),b=e=>{e.preventDefault(),f({x:e.clientX,y:e.clientY}),m(-1),u(!0)};(0,r.useEffect)(()=>{if(!l)return;let e=e=>{if(e.key===`Escape`){y();return}if(e.key===`ArrowDown`){e.preventDefault();let t=v.indexOf(p),n=v[(t+1)%v.length]??-1;m(n),_.current[n]?.focus()}if(e.key===`ArrowUp`){e.preventDefault();let t=v.indexOf(p),n=v[(t-1+v.length)%v.length]??-1;m(n),_.current[n]?.focus()}},t=e=>{g.current&&!g.current.contains(e.target)&&y()};return window.addEventListener(`keydown`,e),window.addEventListener(`mousedown`,t),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`mousedown`,t)}},[l,p,v,y]);let x=e=>{e.onSelect?.(),y()};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:n.default.root,onContextMenu:b,children:s}),l&&(0,i.jsx)(t.Portal,{children:(0,i.jsx)(`ul`,{ref:g,id:h,role:`menu`,className:e.cn(n.default.menu,c),style:{top:d.y,left:d.x},children:o.map((t,r)=>a(t)?(0,i.jsx)(`li`,{role:`separator`,className:n.default.separator,"aria-hidden":!0},`separator-${r}`):(0,i.jsx)(`li`,{role:`none`,children:(0,i.jsx)(`button`,{ref:e=>{_.current[r]=e},type:`button`,role:`menuitem`,className:e.cn(n.default.item,t.danger&&n.default.danger,p===r&&n.default.active),disabled:t.disabled,onClick:()=>x(t),onMouseEnter:()=>m(r),children:t.label})},`item-${r}`))})})]})}exports.ContextMenu=o;
1
+ const e=require("../../utils/cn.cjs"),t=require("../Portal/Portal.cjs"),n=require("./ContextMenu.module.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=10;function o(e){return`separator`in e&&e.separator===!0}function s({items:s,children:l,className:u,trigger:d=`contextmenu`,longPressDelay:f=500,viewportMargin:p=8}){let[m,h]=(0,r.useState)(!1),[g,_]=(0,r.useState)({x:0,y:0}),[v,y]=(0,r.useState)(-1),b=(0,r.useId)(),[x,S]=(0,r.useState)(null),C=(0,r.useRef)([]),w=(0,r.useRef)(null),T=(0,r.useRef)(null),E=s.map((e,t)=>!o(e)&&!e.disabled?t:-1).filter(e=>e!==-1),D=(0,r.useCallback)(()=>{h(!1),y(-1)},[]),O=(0,r.useCallback)(e=>{_(e),y(-1),h(!0)},[]),k=(0,r.useCallback)(()=>{w.current!==null&&(clearTimeout(w.current),w.current=null),T.current=null},[]);(0,r.useEffect)(()=>k,[k]);let A=e=>{d!==`click`&&(e.preventDefault(),O({x:e.clientX,y:e.clientY}))},j=e=>{d!==`contextmenu`&&O({x:e.clientX,y:e.clientY})},M=e=>{if(f<=0||e.pointerType===`mouse`)return;let t={x:e.clientX,y:e.clientY};T.current=t,k(),T.current=t,w.current=setTimeout(()=>{w.current=null,T.current=null,c(),O(t)},f)},N=e=>{let t=T.current;t&&w.current!==null&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>a&&k()};(0,r.useEffect)(()=>{if(!m)return;let e=e=>{if(e.key===`Escape`){D();return}let t=t=>{e.preventDefault(),y(t),C.current[t]?.focus()};if(E.length===0)return;let n=E.indexOf(v);e.key===`ArrowDown`&&t(E[(n+1)%E.length]??-1),e.key===`ArrowUp`&&t(E[(n-1+E.length)%E.length]??-1),e.key===`Home`&&t(E[0]??-1),e.key===`End`&&t(E[E.length-1]??-1)},t=e=>{x&&!x.contains(e.target)&&D()};return window.addEventListener(`keydown`,e),window.addEventListener(`mousedown`,t),window.addEventListener(`resize`,D),window.addEventListener(`scroll`,D,!0),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`mousedown`,t),window.removeEventListener(`resize`,D),window.removeEventListener(`scroll`,D,!0)}},[m,v,E,D,x]),(0,r.useLayoutEffect)(()=>{if(!m||!x)return;x.focus({preventScroll:!0});let{offsetWidth:e,offsetHeight:t}=x;if(e===0&&t===0)return;let n=window.innerWidth-e-p,r=window.innerHeight-t-p,i=Math.max(p,Math.min(g.x,n)),a=Math.max(p,Math.min(g.y,r));(i!==g.x||a!==g.y)&&_({x:i,y:a})},[m,x,g.x,g.y,p]);let P=e=>{e.onSelect?.(),D()};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:n.default.root,onContextMenu:A,onClick:j,onPointerDown:M,onPointerMove:N,onPointerUp:k,onPointerCancel:k,children:l}),m&&(0,i.jsx)(t.Portal,{children:(0,i.jsx)(`ul`,{ref:S,id:b,role:`menu`,"aria-orientation":`vertical`,tabIndex:-1,className:e.cn(n.default.menu,u),style:{top:g.y,left:g.x},children:s.map((t,r)=>o(t)?(0,i.jsx)(`li`,{role:`separator`,className:n.default.separator,"aria-hidden":!0},`separator-${r}`):(0,i.jsx)(`li`,{role:`none`,children:(0,i.jsx)(`button`,{ref:e=>{C.current[r]=e},type:`button`,role:`menuitem`,className:e.cn(n.default.item,t.danger&&n.default.danger,v===r&&n.default.active),disabled:t.disabled,onClick:()=>P(t),onMouseEnter:()=>y(r),children:t.label})},`item-${r}`))})})]})}function c(){typeof window>`u`||window.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation()},{capture:!0,once:!0})}exports.ContextMenu=s;
2
2
  //# sourceMappingURL=ContextMenu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.cjs","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body positions the menu against the pointer,\n * flips it inside the viewport, and owns roving focus for the keyboard path — one\n * geometry computed from one anchor point.\n */\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Portal } from \"@/components/Portal\";\nimport styles from \"./ContextMenu.module.css\";\n\nexport type ContextMenuItem =\n | {\n label: ReactNode;\n onSelect?: () => void;\n disabled?: boolean;\n danger?: boolean;\n }\n | { separator: true };\n\nexport interface ContextMenuProps {\n /** Menu entries — selectable items and separators. */\n items: ContextMenuItem[];\n /** Trigger area. Right-clicking anywhere within opens the menu at the cursor. */\n children: ReactNode;\n /** Extra class names forwarded to the menu element. */\n className?: string;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\nfunction isSeparator(item: ContextMenuItem): item is { separator: true } {\n return \"separator\" in item && item.separator === true;\n}\n\n/**\n * Right-click context menu.\n *\n * - Opens at the cursor position on `onContextMenu` (default browser menu suppressed).\n * - Rendered through a {@link Portal} so it escapes parent overflow/stacking contexts.\n * - Closes on outside click, Escape, or item selection.\n * - Arrow Up/Down move focus across selectable items; Enter activates the focused item.\n *\n * @param props - The context menu props.\n * @returns The trigger wrapper plus the portalled menu when open.\n */\nexport function ContextMenu({ items, children, className }: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const id = useId();\n const menuRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n const selectableIndexes = items\n .map((item, index) => (!isSeparator(item) && !item.disabled ? index : -1))\n .filter((i) => i !== -1);\n\n const close = useCallback((): void => {\n setOpen(false);\n setActiveIndex(-1);\n }, []);\n\n const handleContextMenu = (event: React.MouseEvent): void => {\n event.preventDefault();\n setPosition({ x: event.clientX, y: event.clientY });\n setActiveIndex(-1);\n setOpen(true);\n };\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") {\n close();\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const current = selectableIndexes.indexOf(activeIndex);\n const next = selectableIndexes[(current + 1) % selectableIndexes.length] ?? -1;\n setActiveIndex(next);\n itemRefs.current[next]?.focus();\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const current = selectableIndexes.indexOf(activeIndex);\n const prev =\n selectableIndexes[\n (current - 1 + selectableIndexes.length) % selectableIndexes.length\n ] ?? -1;\n setActiveIndex(prev);\n itemRefs.current[prev]?.focus();\n }\n };\n const onDown = (event: MouseEvent): void => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) close();\n };\n window.addEventListener(\"keydown\", onKey);\n window.addEventListener(\"mousedown\", onDown);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"mousedown\", onDown);\n };\n }, [open, activeIndex, selectableIndexes, close]);\n\n const handleSelect = (item: Extract<ContextMenuItem, { label: ReactNode }>): void => {\n item.onSelect?.();\n close();\n };\n\n return (\n <>\n <span className={styles.root} onContextMenu={handleContextMenu}>\n {children}\n </span>\n {open && (\n <Portal>\n <ul\n ref={menuRef}\n id={id}\n role=\"menu\"\n className={cn(styles.menu, className)}\n style={{ top: position.y, left: position.x }}\n >\n {items.map((item, index) => {\n if (isSeparator(item)) {\n return (\n <li\n key={`separator-${index}`}\n role=\"separator\"\n className={styles.separator}\n aria-hidden\n />\n );\n }\n return (\n <li key={`item-${index}`} role=\"none\">\n <button\n ref={(el) => {\n itemRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"menuitem\"\n className={cn(\n styles.item,\n item.danger && styles.danger,\n activeIndex === index && styles.active,\n )}\n disabled={item.disabled}\n onClick={() => handleSelect(item)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {item.label}\n </button>\n </li>\n );\n })}\n </ul>\n </Portal>\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.cjs","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines function-lines — the body owns one anchor point and\n * everything that reads from it: the three ways a menu opens (right click, long\n * press, click), the clamp that keeps it inside the viewport, and roving focus\n * for the keyboard path. Splitting them would hand the same geometry to three\n * files.\n */\nimport { useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport type { PointerEvent as ReactPointerEvent, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Portal } from \"@/components/Portal\";\nimport styles from \"./ContextMenu.module.css\";\n\nexport type ContextMenuItem =\n | {\n label: ReactNode;\n onSelect?: () => void;\n disabled?: boolean;\n danger?: boolean;\n }\n | { separator: true };\n\n/** How the menu is opened by a pointer. Touch always gets the long press. */\nexport type ContextMenuTrigger = \"contextmenu\" | \"click\" | \"both\";\n\nexport interface ContextMenuProps {\n /** Menu entries — selectable items and separators. */\n items: ContextMenuItem[];\n /** Trigger area. Right-clicking anywhere within opens the menu at the cursor. */\n children: ReactNode;\n /** Extra class names forwarded to the menu element. */\n className?: string;\n /**\n * Which pointer gesture opens the menu. Default `\"contextmenu\"`.\n *\n * `\"click\"` is the `⋮` button case, where a right click is the wrong gesture\n * on the desktop and impossible on touch. `\"both\"` keeps the right click and\n * adds the left one.\n */\n trigger?: ContextMenuTrigger;\n /**\n * Hold, in ms, that opens the menu from a coarse pointer. Default `500`.\n *\n * Set `0` to turn the long press off. It is on by default because touch has\n * no right click: measured in Chrome with touch emulation (Pixel 7 and\n * iPhone 13 profiles), a 900 ms hold fires `pointerdown`, `touchstart`,\n * `pointerup`, `touchend` and `click` — and no `contextmenu` at all. Every\n * action behind this menu was unreachable on a phone.\n */\n longPressDelay?: number;\n /**\n * Gap, in px, kept between the menu and the edge of the viewport. Default `8`.\n */\n viewportMargin?: number;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\n/** Movement, in px, that reads as a scroll rather than a hold. */\nconst LONG_PRESS_MOVE_TOLERANCE = 10;\n\nfunction isSeparator(item: ContextMenuItem): item is { separator: true } {\n return \"separator\" in item && item.separator === true;\n}\n\n/**\n * Context menu — right click, long press, or click.\n *\n * - Opens at the pointer on `contextmenu`, and on a long press from touch or pen,\n * which is the gesture those pointers have instead of a right click. `trigger`\n * adds or replaces the mouse gesture; the long press is independent of it.\n * - Clamped inside the viewport after it mounts, so a menu opened near an edge\n * moves in rather than overflowing — measured before the clamp: a 180 px menu\n * opened at `x=235` in a 320 px window ran 95 px off screen, cutting the right\n * edge off every label.\n * - Rendered through a {@link Portal} so it escapes parent overflow/stacking\n * contexts.\n * - Closes on outside click, Escape, scroll, resize, or item selection.\n * - Arrow Up/Down move focus across selectable items and wrap; Home/End jump to\n * the ends; Enter activates the focused item. The menu itself takes focus when\n * it opens, so a screen reader announces it instead of staying on the trigger.\n *\n * @param props - The context menu props.\n * @returns The trigger wrapper plus the portalled menu when open.\n */\nexport function ContextMenu({\n items,\n children,\n className,\n trigger = \"contextmenu\",\n longPressDelay = 500,\n viewportMargin = 8,\n}: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const id = useId();\n const [menuNode, setMenuNode] = useState<HTMLUListElement | null>(null);\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const longPressTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const longPressOrigin = useRef<Position | null>(null);\n\n const selectableIndexes = items\n .map((item, index) => (!isSeparator(item) && !item.disabled ? index : -1))\n .filter((i) => i !== -1);\n\n const close = useCallback((): void => {\n setOpen(false);\n setActiveIndex(-1);\n }, []);\n\n const openAt = useCallback((point: Position): void => {\n setPosition(point);\n setActiveIndex(-1);\n setOpen(true);\n }, []);\n\n const cancelLongPress = useCallback((): void => {\n if (longPressTimer.current !== null) {\n clearTimeout(longPressTimer.current);\n longPressTimer.current = null;\n }\n longPressOrigin.current = null;\n }, []);\n\n useEffect(() => cancelLongPress, [cancelLongPress]);\n\n const handleContextMenu = (event: React.MouseEvent): void => {\n if (trigger === \"click\") return;\n event.preventDefault();\n openAt({ x: event.clientX, y: event.clientY });\n };\n\n const handleClick = (event: React.MouseEvent): void => {\n if (trigger === \"contextmenu\") return;\n openAt({ x: event.clientX, y: event.clientY });\n };\n\n /**\n * Start the hold that stands in for a right click on a coarse pointer.\n *\n * A mouse is excluded: it has `contextmenu`, and holding the left button is\n * how a drag starts.\n */\n const handlePointerDown = (event: ReactPointerEvent): void => {\n if (longPressDelay <= 0 || event.pointerType === \"mouse\") return;\n const point = { x: event.clientX, y: event.clientY };\n longPressOrigin.current = point;\n cancelLongPress();\n longPressOrigin.current = point;\n longPressTimer.current = setTimeout(() => {\n longPressTimer.current = null;\n longPressOrigin.current = null;\n suppressNextClick();\n openAt(point);\n }, longPressDelay);\n };\n\n /**\n * Cancel the hold once the finger travels — otherwise every scroll that\n * starts on the trigger opens a menu, which is the difference between a\n * usable long press and an infuriating one.\n */\n const handlePointerMove = (event: ReactPointerEvent): void => {\n const origin = longPressOrigin.current;\n if (!origin || longPressTimer.current === null) return;\n if (\n Math.hypot(event.clientX - origin.x, event.clientY - origin.y) >\n LONG_PRESS_MOVE_TOLERANCE\n ) {\n cancelLongPress();\n }\n };\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") {\n close();\n return;\n }\n const move = (next: number): void => {\n event.preventDefault();\n setActiveIndex(next);\n itemRefs.current[next]?.focus();\n };\n if (selectableIndexes.length === 0) return;\n const current = selectableIndexes.indexOf(activeIndex);\n if (event.key === \"ArrowDown\") {\n move(selectableIndexes[(current + 1) % selectableIndexes.length] ?? -1);\n }\n if (event.key === \"ArrowUp\") {\n move(\n selectableIndexes[\n (current - 1 + selectableIndexes.length) % selectableIndexes.length\n ] ?? -1,\n );\n }\n if (event.key === \"Home\") {\n move(selectableIndexes[0] ?? -1);\n }\n if (event.key === \"End\") {\n move(selectableIndexes[selectableIndexes.length - 1] ?? -1);\n }\n };\n const onDown = (event: MouseEvent): void => {\n if (menuNode && !menuNode.contains(event.target as Node)) close();\n };\n window.addEventListener(\"keydown\", onKey);\n window.addEventListener(\"mousedown\", onDown);\n window.addEventListener(\"resize\", close);\n window.addEventListener(\"scroll\", close, true);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"mousedown\", onDown);\n window.removeEventListener(\"resize\", close);\n window.removeEventListener(\"scroll\", close, true);\n };\n }, [open, activeIndex, selectableIndexes, close, menuNode]);\n\n /**\n * Pull the menu inside the viewport, and take focus.\n *\n * Keyed off the node rather than off `open`, because {@link Portal} renders\n * `null` on its first pass and mounts on an effect — an effect that reads a\n * ref when `open` flips runs while the menu does not exist yet, measures\n * nothing and focuses nothing. A callback ref in state is what makes this\n * run on the render that has the element.\n *\n * `useLayoutEffect` runs before paint, so the menu is never painted at the\n * overflowing position first.\n *\n * The size comes from `offsetWidth`/`offsetHeight` rather than from\n * `getBoundingClientRect`, which reports the **transformed** box: the menu\n * enters at `scale(0.96)`, so the rect is 4% small and the clamp lets the\n * grown menu back over the edge. Measured in Chrome at 320 px wide, a 180 px\n * menu came back at `right: 316` against a margin that asked for 312.\n */\n useLayoutEffect(() => {\n if (!open || !menuNode) return;\n menuNode.focus({ preventScroll: true });\n const { offsetWidth, offsetHeight } = menuNode;\n if (offsetWidth === 0 && offsetHeight === 0) return;\n const maxLeft = window.innerWidth - offsetWidth - viewportMargin;\n const maxTop = window.innerHeight - offsetHeight - viewportMargin;\n const left = Math.max(viewportMargin, Math.min(position.x, maxLeft));\n const top = Math.max(viewportMargin, Math.min(position.y, maxTop));\n if (left !== position.x || top !== position.y) setPosition({ x: left, y: top });\n }, [open, menuNode, position.x, position.y, viewportMargin]);\n\n const handleSelect = (item: Extract<ContextMenuItem, { label: ReactNode }>): void => {\n item.onSelect?.();\n close();\n };\n\n return (\n <>\n <span\n className={styles.root}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={cancelLongPress}\n onPointerCancel={cancelLongPress}\n >\n {children}\n </span>\n {open && (\n <Portal>\n <ul\n ref={setMenuNode}\n id={id}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n className={cn(styles.menu, className)}\n style={{ top: position.y, left: position.x }}\n >\n {items.map((item, index) => {\n if (isSeparator(item)) {\n return (\n <li\n key={`separator-${index}`}\n role=\"separator\"\n className={styles.separator}\n aria-hidden\n />\n );\n }\n return (\n <li key={`item-${index}`} role=\"none\">\n <button\n ref={(el) => {\n itemRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"menuitem\"\n className={cn(\n styles.item,\n item.danger && styles.danger,\n activeIndex === index && styles.active,\n )}\n disabled={item.disabled}\n onClick={() => handleSelect(item)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {item.label}\n </button>\n </li>\n );\n })}\n </ul>\n </Portal>\n )}\n </>\n );\n}\n\n/**\n * Swallow the click a finger leaves behind after a long press.\n *\n * The hold fires while the finger is still down, so the browser goes on to\n * deliver `pointerup` and then `click` to whatever is under it — measured, that\n * is the same element the menu was just opened from. Without this, opening the\n * menu on a chat bubble also opens the bubble.\n *\n * Capture phase and `once`, so the listener never outlives the gesture that\n * installed it, and a later genuine click is untouched.\n */\nfunction suppressNextClick(): void {\n if (typeof window === \"undefined\") return;\n window.addEventListener(\n \"click\",\n (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n { capture: true, once: true },\n );\n}\n"],"mappings":"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"}
@@ -1,91 +1,143 @@
1
1
  import { cn as e } from "../../utils/cn.js";
2
2
  import { Portal as t } from "../Portal/Portal.js";
3
3
  import n from "./ContextMenu.module.js";
4
- import { useCallback as r, useEffect as i, useId as a, useRef as o, useState as s } from "react";
5
- import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { useCallback as r, useEffect as i, useId as a, useLayoutEffect as o, useRef as s, useState as c } from "react";
5
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
6
6
  //#region src/components/ContextMenu/ContextMenu.tsx
7
- function d(e) {
7
+ var f = 10;
8
+ function p(e) {
8
9
  return "separator" in e && e.separator === !0;
9
10
  }
10
- function f({ items: f, children: p, className: m }) {
11
- let [h, g] = s(!1), [_, v] = s({
11
+ function m({ items: m, children: g, className: _, trigger: v = "contextmenu", longPressDelay: y = 500, viewportMargin: b = 8 }) {
12
+ let [x, S] = c(!1), [C, w] = c({
12
13
  x: 0,
13
14
  y: 0
14
- }), [y, b] = s(-1), x = a(), S = o(null), C = o([]), w = f.map((e, t) => !d(e) && !e.disabled ? t : -1).filter((e) => e !== -1), T = r(() => {
15
- g(!1), b(-1);
16
- }, []), E = (e) => {
17
- e.preventDefault(), v({
15
+ }), [T, E] = c(-1), D = a(), [O, k] = c(null), A = s([]), j = s(null), M = s(null), N = m.map((e, t) => !p(e) && !e.disabled ? t : -1).filter((e) => e !== -1), P = r(() => {
16
+ S(!1), E(-1);
17
+ }, []), F = r((e) => {
18
+ w(e), E(-1), S(!0);
19
+ }, []), I = r(() => {
20
+ j.current !== null && (clearTimeout(j.current), j.current = null), M.current = null;
21
+ }, []);
22
+ i(() => I, [I]);
23
+ let L = (e) => {
24
+ v !== "click" && (e.preventDefault(), F({
18
25
  x: e.clientX,
19
26
  y: e.clientY
20
- }), b(-1), g(!0);
27
+ }));
28
+ }, R = (e) => {
29
+ v !== "contextmenu" && F({
30
+ x: e.clientX,
31
+ y: e.clientY
32
+ });
33
+ }, z = (e) => {
34
+ if (y <= 0 || e.pointerType === "mouse") return;
35
+ let t = {
36
+ x: e.clientX,
37
+ y: e.clientY
38
+ };
39
+ M.current = t, I(), M.current = t, j.current = setTimeout(() => {
40
+ j.current = null, M.current = null, h(), F(t);
41
+ }, y);
42
+ }, B = (e) => {
43
+ let t = M.current;
44
+ t && j.current !== null && Math.hypot(e.clientX - t.x, e.clientY - t.y) > f && I();
21
45
  };
22
46
  i(() => {
23
- if (!h) return;
47
+ if (!x) return;
24
48
  let e = (e) => {
25
49
  if (e.key === "Escape") {
26
- T();
50
+ P();
27
51
  return;
28
52
  }
29
- if (e.key === "ArrowDown") {
30
- e.preventDefault();
31
- let t = w.indexOf(y), n = w[(t + 1) % w.length] ?? -1;
32
- b(n), C.current[n]?.focus();
33
- }
34
- if (e.key === "ArrowUp") {
35
- e.preventDefault();
36
- let t = w.indexOf(y), n = w[(t - 1 + w.length) % w.length] ?? -1;
37
- b(n), C.current[n]?.focus();
38
- }
53
+ let t = (t) => {
54
+ e.preventDefault(), E(t), A.current[t]?.focus();
55
+ };
56
+ if (N.length === 0) return;
57
+ let n = N.indexOf(T);
58
+ e.key === "ArrowDown" && t(N[(n + 1) % N.length] ?? -1), e.key === "ArrowUp" && t(N[(n - 1 + N.length) % N.length] ?? -1), e.key === "Home" && t(N[0] ?? -1), e.key === "End" && t(N[N.length - 1] ?? -1);
39
59
  }, t = (e) => {
40
- S.current && !S.current.contains(e.target) && T();
60
+ O && !O.contains(e.target) && P();
41
61
  };
42
- return window.addEventListener("keydown", e), window.addEventListener("mousedown", t), () => {
43
- window.removeEventListener("keydown", e), window.removeEventListener("mousedown", t);
62
+ return window.addEventListener("keydown", e), window.addEventListener("mousedown", t), window.addEventListener("resize", P), window.addEventListener("scroll", P, !0), () => {
63
+ window.removeEventListener("keydown", e), window.removeEventListener("mousedown", t), window.removeEventListener("resize", P), window.removeEventListener("scroll", P, !0);
44
64
  };
45
65
  }, [
46
- h,
47
- y,
48
- w,
49
- T
66
+ x,
67
+ T,
68
+ N,
69
+ P,
70
+ O
71
+ ]), o(() => {
72
+ if (!x || !O) return;
73
+ O.focus({ preventScroll: !0 });
74
+ let { offsetWidth: e, offsetHeight: t } = O;
75
+ if (e === 0 && t === 0) return;
76
+ let n = window.innerWidth - e - b, r = window.innerHeight - t - b, i = Math.max(b, Math.min(C.x, n)), a = Math.max(b, Math.min(C.y, r));
77
+ (i !== C.x || a !== C.y) && w({
78
+ x: i,
79
+ y: a
80
+ });
81
+ }, [
82
+ x,
83
+ O,
84
+ C.x,
85
+ C.y,
86
+ b
50
87
  ]);
51
- let D = (e) => {
52
- e.onSelect?.(), T();
88
+ let V = (e) => {
89
+ e.onSelect?.(), P();
53
90
  };
54
- return /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("span", {
91
+ return /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("span", {
55
92
  className: n.root,
56
- onContextMenu: E,
57
- children: p
58
- }), h && /* @__PURE__ */ l(t, { children: /* @__PURE__ */ l("ul", {
59
- ref: S,
60
- id: x,
93
+ onContextMenu: L,
94
+ onClick: R,
95
+ onPointerDown: z,
96
+ onPointerMove: B,
97
+ onPointerUp: I,
98
+ onPointerCancel: I,
99
+ children: g
100
+ }), x && /* @__PURE__ */ u(t, { children: /* @__PURE__ */ u("ul", {
101
+ ref: k,
102
+ id: D,
61
103
  role: "menu",
62
- className: e(n.menu, m),
104
+ "aria-orientation": "vertical",
105
+ tabIndex: -1,
106
+ className: e(n.menu, _),
63
107
  style: {
64
- top: _.y,
65
- left: _.x
108
+ top: C.y,
109
+ left: C.x
66
110
  },
67
- children: f.map((t, r) => d(t) ? /* @__PURE__ */ l("li", {
111
+ children: m.map((t, r) => p(t) ? /* @__PURE__ */ u("li", {
68
112
  role: "separator",
69
113
  className: n.separator,
70
114
  "aria-hidden": !0
71
- }, `separator-${r}`) : /* @__PURE__ */ l("li", {
115
+ }, `separator-${r}`) : /* @__PURE__ */ u("li", {
72
116
  role: "none",
73
- children: /* @__PURE__ */ l("button", {
117
+ children: /* @__PURE__ */ u("button", {
74
118
  ref: (e) => {
75
- C.current[r] = e;
119
+ A.current[r] = e;
76
120
  },
77
121
  type: "button",
78
122
  role: "menuitem",
79
- className: e(n.item, t.danger && n.danger, y === r && n.active),
123
+ className: e(n.item, t.danger && n.danger, T === r && n.active),
80
124
  disabled: t.disabled,
81
- onClick: () => D(t),
82
- onMouseEnter: () => b(r),
125
+ onClick: () => V(t),
126
+ onMouseEnter: () => E(r),
83
127
  children: t.label
84
128
  })
85
129
  }, `item-${r}`))
86
130
  }) })] });
87
131
  }
132
+ function h() {
133
+ typeof window > "u" || window.addEventListener("click", (e) => {
134
+ e.preventDefault(), e.stopPropagation();
135
+ }, {
136
+ capture: !0,
137
+ once: !0
138
+ });
139
+ }
88
140
  //#endregion
89
- export { f as ContextMenu };
141
+ export { m as ContextMenu };
90
142
 
91
143
  //# sourceMappingURL=ContextMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["/**\n * @tempest-limits function-lines — the body positions the menu against the pointer,\n * flips it inside the viewport, and owns roving focus for the keyboard path — one\n * geometry computed from one anchor point.\n */\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Portal } from \"@/components/Portal\";\nimport styles from \"./ContextMenu.module.css\";\n\nexport type ContextMenuItem =\n | {\n label: ReactNode;\n onSelect?: () => void;\n disabled?: boolean;\n danger?: boolean;\n }\n | { separator: true };\n\nexport interface ContextMenuProps {\n /** Menu entries — selectable items and separators. */\n items: ContextMenuItem[];\n /** Trigger area. Right-clicking anywhere within opens the menu at the cursor. */\n children: ReactNode;\n /** Extra class names forwarded to the menu element. */\n className?: string;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\nfunction isSeparator(item: ContextMenuItem): item is { separator: true } {\n return \"separator\" in item && item.separator === true;\n}\n\n/**\n * Right-click context menu.\n *\n * - Opens at the cursor position on `onContextMenu` (default browser menu suppressed).\n * - Rendered through a {@link Portal} so it escapes parent overflow/stacking contexts.\n * - Closes on outside click, Escape, or item selection.\n * - Arrow Up/Down move focus across selectable items; Enter activates the focused item.\n *\n * @param props - The context menu props.\n * @returns The trigger wrapper plus the portalled menu when open.\n */\nexport function ContextMenu({ items, children, className }: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const id = useId();\n const menuRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n const selectableIndexes = items\n .map((item, index) => (!isSeparator(item) && !item.disabled ? index : -1))\n .filter((i) => i !== -1);\n\n const close = useCallback((): void => {\n setOpen(false);\n setActiveIndex(-1);\n }, []);\n\n const handleContextMenu = (event: React.MouseEvent): void => {\n event.preventDefault();\n setPosition({ x: event.clientX, y: event.clientY });\n setActiveIndex(-1);\n setOpen(true);\n };\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") {\n close();\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const current = selectableIndexes.indexOf(activeIndex);\n const next = selectableIndexes[(current + 1) % selectableIndexes.length] ?? -1;\n setActiveIndex(next);\n itemRefs.current[next]?.focus();\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const current = selectableIndexes.indexOf(activeIndex);\n const prev =\n selectableIndexes[\n (current - 1 + selectableIndexes.length) % selectableIndexes.length\n ] ?? -1;\n setActiveIndex(prev);\n itemRefs.current[prev]?.focus();\n }\n };\n const onDown = (event: MouseEvent): void => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) close();\n };\n window.addEventListener(\"keydown\", onKey);\n window.addEventListener(\"mousedown\", onDown);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"mousedown\", onDown);\n };\n }, [open, activeIndex, selectableIndexes, close]);\n\n const handleSelect = (item: Extract<ContextMenuItem, { label: ReactNode }>): void => {\n item.onSelect?.();\n close();\n };\n\n return (\n <>\n <span className={styles.root} onContextMenu={handleContextMenu}>\n {children}\n </span>\n {open && (\n <Portal>\n <ul\n ref={menuRef}\n id={id}\n role=\"menu\"\n className={cn(styles.menu, className)}\n style={{ top: position.y, left: position.x }}\n >\n {items.map((item, index) => {\n if (isSeparator(item)) {\n return (\n <li\n key={`separator-${index}`}\n role=\"separator\"\n className={styles.separator}\n aria-hidden\n />\n );\n }\n return (\n <li key={`item-${index}`} role=\"none\">\n <button\n ref={(el) => {\n itemRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"menuitem\"\n className={cn(\n styles.item,\n item.danger && styles.danger,\n activeIndex === index && styles.active,\n )}\n disabled={item.disabled}\n onClick={() => handleSelect(item)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {item.label}\n </button>\n </li>\n );\n })}\n </ul>\n </Portal>\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.js","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["/**\n * @tempest-limits file-lines function-lines — the body owns one anchor point and\n * everything that reads from it: the three ways a menu opens (right click, long\n * press, click), the clamp that keeps it inside the viewport, and roving focus\n * for the keyboard path. Splitting them would hand the same geometry to three\n * files.\n */\nimport { useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from \"react\";\nimport type { PointerEvent as ReactPointerEvent, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { Portal } from \"@/components/Portal\";\nimport styles from \"./ContextMenu.module.css\";\n\nexport type ContextMenuItem =\n | {\n label: ReactNode;\n onSelect?: () => void;\n disabled?: boolean;\n danger?: boolean;\n }\n | { separator: true };\n\n/** How the menu is opened by a pointer. Touch always gets the long press. */\nexport type ContextMenuTrigger = \"contextmenu\" | \"click\" | \"both\";\n\nexport interface ContextMenuProps {\n /** Menu entries — selectable items and separators. */\n items: ContextMenuItem[];\n /** Trigger area. Right-clicking anywhere within opens the menu at the cursor. */\n children: ReactNode;\n /** Extra class names forwarded to the menu element. */\n className?: string;\n /**\n * Which pointer gesture opens the menu. Default `\"contextmenu\"`.\n *\n * `\"click\"` is the `⋮` button case, where a right click is the wrong gesture\n * on the desktop and impossible on touch. `\"both\"` keeps the right click and\n * adds the left one.\n */\n trigger?: ContextMenuTrigger;\n /**\n * Hold, in ms, that opens the menu from a coarse pointer. Default `500`.\n *\n * Set `0` to turn the long press off. It is on by default because touch has\n * no right click: measured in Chrome with touch emulation (Pixel 7 and\n * iPhone 13 profiles), a 900 ms hold fires `pointerdown`, `touchstart`,\n * `pointerup`, `touchend` and `click` — and no `contextmenu` at all. Every\n * action behind this menu was unreachable on a phone.\n */\n longPressDelay?: number;\n /**\n * Gap, in px, kept between the menu and the edge of the viewport. Default `8`.\n */\n viewportMargin?: number;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\n/** Movement, in px, that reads as a scroll rather than a hold. */\nconst LONG_PRESS_MOVE_TOLERANCE = 10;\n\nfunction isSeparator(item: ContextMenuItem): item is { separator: true } {\n return \"separator\" in item && item.separator === true;\n}\n\n/**\n * Context menu — right click, long press, or click.\n *\n * - Opens at the pointer on `contextmenu`, and on a long press from touch or pen,\n * which is the gesture those pointers have instead of a right click. `trigger`\n * adds or replaces the mouse gesture; the long press is independent of it.\n * - Clamped inside the viewport after it mounts, so a menu opened near an edge\n * moves in rather than overflowing — measured before the clamp: a 180 px menu\n * opened at `x=235` in a 320 px window ran 95 px off screen, cutting the right\n * edge off every label.\n * - Rendered through a {@link Portal} so it escapes parent overflow/stacking\n * contexts.\n * - Closes on outside click, Escape, scroll, resize, or item selection.\n * - Arrow Up/Down move focus across selectable items and wrap; Home/End jump to\n * the ends; Enter activates the focused item. The menu itself takes focus when\n * it opens, so a screen reader announces it instead of staying on the trigger.\n *\n * @param props - The context menu props.\n * @returns The trigger wrapper plus the portalled menu when open.\n */\nexport function ContextMenu({\n items,\n children,\n className,\n trigger = \"contextmenu\",\n longPressDelay = 500,\n viewportMargin = 8,\n}: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const id = useId();\n const [menuNode, setMenuNode] = useState<HTMLUListElement | null>(null);\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const longPressTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const longPressOrigin = useRef<Position | null>(null);\n\n const selectableIndexes = items\n .map((item, index) => (!isSeparator(item) && !item.disabled ? index : -1))\n .filter((i) => i !== -1);\n\n const close = useCallback((): void => {\n setOpen(false);\n setActiveIndex(-1);\n }, []);\n\n const openAt = useCallback((point: Position): void => {\n setPosition(point);\n setActiveIndex(-1);\n setOpen(true);\n }, []);\n\n const cancelLongPress = useCallback((): void => {\n if (longPressTimer.current !== null) {\n clearTimeout(longPressTimer.current);\n longPressTimer.current = null;\n }\n longPressOrigin.current = null;\n }, []);\n\n useEffect(() => cancelLongPress, [cancelLongPress]);\n\n const handleContextMenu = (event: React.MouseEvent): void => {\n if (trigger === \"click\") return;\n event.preventDefault();\n openAt({ x: event.clientX, y: event.clientY });\n };\n\n const handleClick = (event: React.MouseEvent): void => {\n if (trigger === \"contextmenu\") return;\n openAt({ x: event.clientX, y: event.clientY });\n };\n\n /**\n * Start the hold that stands in for a right click on a coarse pointer.\n *\n * A mouse is excluded: it has `contextmenu`, and holding the left button is\n * how a drag starts.\n */\n const handlePointerDown = (event: ReactPointerEvent): void => {\n if (longPressDelay <= 0 || event.pointerType === \"mouse\") return;\n const point = { x: event.clientX, y: event.clientY };\n longPressOrigin.current = point;\n cancelLongPress();\n longPressOrigin.current = point;\n longPressTimer.current = setTimeout(() => {\n longPressTimer.current = null;\n longPressOrigin.current = null;\n suppressNextClick();\n openAt(point);\n }, longPressDelay);\n };\n\n /**\n * Cancel the hold once the finger travels — otherwise every scroll that\n * starts on the trigger opens a menu, which is the difference between a\n * usable long press and an infuriating one.\n */\n const handlePointerMove = (event: ReactPointerEvent): void => {\n const origin = longPressOrigin.current;\n if (!origin || longPressTimer.current === null) return;\n if (\n Math.hypot(event.clientX - origin.x, event.clientY - origin.y) >\n LONG_PRESS_MOVE_TOLERANCE\n ) {\n cancelLongPress();\n }\n };\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") {\n close();\n return;\n }\n const move = (next: number): void => {\n event.preventDefault();\n setActiveIndex(next);\n itemRefs.current[next]?.focus();\n };\n if (selectableIndexes.length === 0) return;\n const current = selectableIndexes.indexOf(activeIndex);\n if (event.key === \"ArrowDown\") {\n move(selectableIndexes[(current + 1) % selectableIndexes.length] ?? -1);\n }\n if (event.key === \"ArrowUp\") {\n move(\n selectableIndexes[\n (current - 1 + selectableIndexes.length) % selectableIndexes.length\n ] ?? -1,\n );\n }\n if (event.key === \"Home\") {\n move(selectableIndexes[0] ?? -1);\n }\n if (event.key === \"End\") {\n move(selectableIndexes[selectableIndexes.length - 1] ?? -1);\n }\n };\n const onDown = (event: MouseEvent): void => {\n if (menuNode && !menuNode.contains(event.target as Node)) close();\n };\n window.addEventListener(\"keydown\", onKey);\n window.addEventListener(\"mousedown\", onDown);\n window.addEventListener(\"resize\", close);\n window.addEventListener(\"scroll\", close, true);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"mousedown\", onDown);\n window.removeEventListener(\"resize\", close);\n window.removeEventListener(\"scroll\", close, true);\n };\n }, [open, activeIndex, selectableIndexes, close, menuNode]);\n\n /**\n * Pull the menu inside the viewport, and take focus.\n *\n * Keyed off the node rather than off `open`, because {@link Portal} renders\n * `null` on its first pass and mounts on an effect — an effect that reads a\n * ref when `open` flips runs while the menu does not exist yet, measures\n * nothing and focuses nothing. A callback ref in state is what makes this\n * run on the render that has the element.\n *\n * `useLayoutEffect` runs before paint, so the menu is never painted at the\n * overflowing position first.\n *\n * The size comes from `offsetWidth`/`offsetHeight` rather than from\n * `getBoundingClientRect`, which reports the **transformed** box: the menu\n * enters at `scale(0.96)`, so the rect is 4% small and the clamp lets the\n * grown menu back over the edge. Measured in Chrome at 320 px wide, a 180 px\n * menu came back at `right: 316` against a margin that asked for 312.\n */\n useLayoutEffect(() => {\n if (!open || !menuNode) return;\n menuNode.focus({ preventScroll: true });\n const { offsetWidth, offsetHeight } = menuNode;\n if (offsetWidth === 0 && offsetHeight === 0) return;\n const maxLeft = window.innerWidth - offsetWidth - viewportMargin;\n const maxTop = window.innerHeight - offsetHeight - viewportMargin;\n const left = Math.max(viewportMargin, Math.min(position.x, maxLeft));\n const top = Math.max(viewportMargin, Math.min(position.y, maxTop));\n if (left !== position.x || top !== position.y) setPosition({ x: left, y: top });\n }, [open, menuNode, position.x, position.y, viewportMargin]);\n\n const handleSelect = (item: Extract<ContextMenuItem, { label: ReactNode }>): void => {\n item.onSelect?.();\n close();\n };\n\n return (\n <>\n <span\n className={styles.root}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={cancelLongPress}\n onPointerCancel={cancelLongPress}\n >\n {children}\n </span>\n {open && (\n <Portal>\n <ul\n ref={setMenuNode}\n id={id}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n className={cn(styles.menu, className)}\n style={{ top: position.y, left: position.x }}\n >\n {items.map((item, index) => {\n if (isSeparator(item)) {\n return (\n <li\n key={`separator-${index}`}\n role=\"separator\"\n className={styles.separator}\n aria-hidden\n />\n );\n }\n return (\n <li key={`item-${index}`} role=\"none\">\n <button\n ref={(el) => {\n itemRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"menuitem\"\n className={cn(\n styles.item,\n item.danger && styles.danger,\n activeIndex === index && styles.active,\n )}\n disabled={item.disabled}\n onClick={() => handleSelect(item)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {item.label}\n </button>\n </li>\n );\n })}\n </ul>\n </Portal>\n )}\n </>\n );\n}\n\n/**\n * Swallow the click a finger leaves behind after a long press.\n *\n * The hold fires while the finger is still down, so the browser goes on to\n * deliver `pointerup` and then `click` to whatever is under it — measured, that\n * is the same element the menu was just opened from. Without this, opening the\n * menu on a chat bubble also opens the bubble.\n *\n * Capture phase and `once`, so the listener never outlives the gesture that\n * installed it, and a later genuine click is untouched.\n */\nfunction suppressNextClick(): void {\n if (typeof window === \"undefined\") return;\n window.addEventListener(\n \"click\",\n (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n { capture: true, once: true },\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/ContextMenu.css");
1
2
  var e=`tempest_root_OxRHj`,t=`tempest_menu_MDn4t`,n=`tempest_tempest-context-menu-in_fNuOl`,r=`tempest_item_PoiMY`,i=`tempest_active_ATcDu`,a=`tempest_danger_COgly`,o=`tempest_separator_omuCz`,s={root:e,menu:t,tempestContextMenuIn:n,item:r,active:i,danger:a,separator:o};exports.active=i,exports.danger=a,exports.default=s,exports.item=r,exports.menu=t,exports.root=e,exports.separator=o,exports.tempestContextMenuIn=n;
2
3
  //# sourceMappingURL=ContextMenu.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.module.cjs","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.module.css"],"sourcesContent":[".root {\n display: contents;\n}\n\n.menu {\n position: fixed;\n z-index: var(--tempest-z-popover);\n min-width: 180px;\n max-width: 320px;\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n box-shadow: var(--tempest-shadow-lg);\n padding: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-base);\n list-style: none;\n margin: 0;\n animation: tempest-context-menu-in var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-2);\n width: 100%;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n background: none;\n border: none;\n border-radius: var(--tempest-radius-sm);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--tempest-leading-snug);\n text-align: left;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover:not(:disabled) {\n background-color: var(--tempest-surface);\n }\n}\n\n.item:focus,\n.item.active {\n outline: none;\n background-color: var(--tempest-surface);\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.item.danger {\n color: var(--tempest-danger);\n}\n\n.separator {\n height: 1px;\n background-color: var(--tempest-border);\n margin: var(--tempest-space-1) 0;\n}\n\n@keyframes tempest-context-menu-in {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu {\n animation: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ContextMenu.module.cjs","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.module.css"],"sourcesContent":[".root {\n display: contents;\n}\n\n/*\n * A hold on a coarse pointer is this component's right click, and the platform\n * has its own ideas about what a hold means: iOS raises the callout and both\n * platforms start a text selection. Scoped to `pointer: coarse` so a mouse user\n * keeps ordinary selection over the same content.\n */\n@media (pointer: coarse) {\n .root {\n -webkit-touch-callout: none;\n user-select: none;\n }\n}\n\n/*\n * The menu takes focus when it opens so a screen reader announces it, and that\n * focus gets no ring of its own: measured in Chrome, focusing it from a long\n * press still matches `:focus-visible`, which drew a heavy ring around the whole\n * menu after every touch. The indicator that matters is on the focused item,\n * which is where the arrow keys move next.\n */\n.menu:focus {\n outline: none;\n}\n\n.menu {\n position: fixed;\n z-index: var(--tempest-z-popover);\n min-width: 180px;\n max-width: 320px;\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n box-shadow: var(--tempest-shadow-lg);\n padding: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-base);\n list-style: none;\n margin: 0;\n animation: tempest-context-menu-in var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-2);\n width: 100%;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n background: none;\n border: none;\n border-radius: var(--tempest-radius-sm);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--tempest-leading-snug);\n text-align: left;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover:not(:disabled) {\n background-color: var(--tempest-surface);\n }\n}\n\n.item:focus,\n.item.active {\n outline: none;\n background-color: var(--tempest-surface);\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.item.danger {\n color: var(--tempest-danger);\n}\n\n.separator {\n height: 1px;\n background-color: var(--tempest-border);\n margin: var(--tempest-space-1) 0;\n}\n\n@keyframes tempest-context-menu-in {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/ContextMenu.css";
1
2
  //#region src/components/ContextMenu/ContextMenu.module.css
2
3
  var e = "tempest_root_OxRHj", t = "tempest_menu_MDn4t", n = "tempest_tempest-context-menu-in_fNuOl", r = "tempest_item_PoiMY", i = "tempest_active_ATcDu", a = "tempest_danger_COgly", o = "tempest_separator_omuCz", s = {
3
4
  root: e,
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.module.js","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.module.css"],"sourcesContent":[".root {\n display: contents;\n}\n\n.menu {\n position: fixed;\n z-index: var(--tempest-z-popover);\n min-width: 180px;\n max-width: 320px;\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n box-shadow: var(--tempest-shadow-lg);\n padding: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-base);\n list-style: none;\n margin: 0;\n animation: tempest-context-menu-in var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-2);\n width: 100%;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n background: none;\n border: none;\n border-radius: var(--tempest-radius-sm);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--tempest-leading-snug);\n text-align: left;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover:not(:disabled) {\n background-color: var(--tempest-surface);\n }\n}\n\n.item:focus,\n.item.active {\n outline: none;\n background-color: var(--tempest-surface);\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.item.danger {\n color: var(--tempest-danger);\n}\n\n.separator {\n height: 1px;\n background-color: var(--tempest-border);\n margin: var(--tempest-space-1) 0;\n}\n\n@keyframes tempest-context-menu-in {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu {\n animation: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ContextMenu.module.js","names":[],"sources":["../../../src/components/ContextMenu/ContextMenu.module.css"],"sourcesContent":[".root {\n display: contents;\n}\n\n/*\n * A hold on a coarse pointer is this component's right click, and the platform\n * has its own ideas about what a hold means: iOS raises the callout and both\n * platforms start a text selection. Scoped to `pointer: coarse` so a mouse user\n * keeps ordinary selection over the same content.\n */\n@media (pointer: coarse) {\n .root {\n -webkit-touch-callout: none;\n user-select: none;\n }\n}\n\n/*\n * The menu takes focus when it opens so a screen reader announces it, and that\n * focus gets no ring of its own: measured in Chrome, focusing it from a long\n * press still matches `:focus-visible`, which drew a heavy ring around the whole\n * menu after every touch. The indicator that matters is on the focused item,\n * which is where the arrow keys move next.\n */\n.menu:focus {\n outline: none;\n}\n\n.menu {\n position: fixed;\n z-index: var(--tempest-z-popover);\n min-width: 180px;\n max-width: 320px;\n background-color: var(--tempest-bg);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n box-shadow: var(--tempest-shadow-lg);\n padding: var(--tempest-space-1);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-base);\n list-style: none;\n margin: 0;\n animation: tempest-context-menu-in var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--tempest-space-2);\n width: 100%;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n background: none;\n border: none;\n border-radius: var(--tempest-radius-sm);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--tempest-leading-snug);\n text-align: left;\n cursor: pointer;\n transition: var(--tempest-transition-color);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .item:hover:not(:disabled) {\n background-color: var(--tempest-surface);\n }\n}\n\n.item:focus,\n.item.active {\n outline: none;\n background-color: var(--tempest-surface);\n}\n\n.item:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.item.danger {\n color: var(--tempest-danger);\n}\n\n.separator {\n height: 1px;\n background-color: var(--tempest-border);\n margin: var(--tempest-space-1) 0;\n}\n\n@keyframes tempest-context-menu-in {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu {\n animation: none;\n }\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/CopyButton.css");
1
2
  var e=`tempest_button_58f9i`,t=`tempest_copied_WkLgR`,n={button:e,copied:t};exports.button=e,exports.copied=t,exports.default=n;
2
3
  //# sourceMappingURL=CopyButton.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.module.cjs","names":[],"sources":["../../../src/components/CopyButton/CopyButton.module.css"],"sourcesContent":[".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-1) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-sm);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.button:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.copied {\n color: var(--tempest-primary-foreground, var(--tempest-text-on-primary));\n background-color: var(--tempest-primary);\n border-color: var(--tempest-primary);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"CopyButton.module.cjs","names":[],"sources":["../../../src/components/CopyButton/CopyButton.module.css"],"sourcesContent":[".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-1) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-sm);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.button:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.copied {\n color: var(--tempest-primary-foreground, var(--tempest-text-on-primary));\n background-color: var(--tempest-primary);\n border-color: var(--tempest-primary);\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/CopyButton.css";
1
2
  //#region src/components/CopyButton/CopyButton.module.css
2
3
  var e = "tempest_button_58f9i", t = "tempest_copied_WkLgR", n = {
3
4
  button: e,
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.module.js","names":[],"sources":["../../../src/components/CopyButton/CopyButton.module.css"],"sourcesContent":[".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-1) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-sm);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.button:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.copied {\n color: var(--tempest-primary-foreground, var(--tempest-text-on-primary));\n background-color: var(--tempest-primary);\n border-color: var(--tempest-primary);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"CopyButton.module.js","names":[],"sources":["../../../src/components/CopyButton/CopyButton.module.css"],"sourcesContent":[".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--tempest-space-1);\n padding: var(--tempest-space-1) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-sm);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n line-height: var(--tempest-leading-snug);\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.button:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.copied {\n color: var(--tempest-primary-foreground, var(--tempest-text-on-primary));\n background-color: var(--tempest-primary);\n border-color: var(--tempest-primary);\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/DataList.css");
1
2
  var e=`tempest_list_bAP4Q`,t=`tempest_item_oRy5T`,n={list:e,item:t};exports.default=n,exports.item=t,exports.list=e;
2
3
  //# sourceMappingURL=DataList.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataList.module.cjs","names":[],"sources":["../../../src/components/DataList/DataList.module.css"],"sourcesContent":[".list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.item {\n margin: 0;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DataList.module.cjs","names":[],"sources":["../../../src/components/DataList/DataList.module.css"],"sourcesContent":[".list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.item {\n margin: 0;\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/DataList.css";
1
2
  //#region src/components/DataList/DataList.module.css
2
3
  var e = "tempest_list_bAP4Q", t = "tempest_item_oRy5T", n = {
3
4
  list: e,
@@ -1 +1 @@
1
- {"version":3,"file":"DataList.module.js","names":[],"sources":["../../../src/components/DataList/DataList.module.css"],"sourcesContent":[".list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.item {\n margin: 0;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DataList.module.js","names":[],"sources":["../../../src/components/DataList/DataList.module.css"],"sourcesContent":[".list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.item {\n margin: 0;\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/DataTable.css");
1
2
  var e=`tempest_wrapper_iB6ka`,t=`tempest_search_2y-yM`,n=`tempest_pending_AzPOe`,r=`tempest_loading_o14rI`,i=`tempest_loadingRow_PsjGm`,a=`tempest_sortButton_9p6w4`,o=`tempest_sortIndicator_bZMlH`,s=`tempest_cellWrap_8-ugE`,c=`tempest_cellButton_BgVe-`,l=`tempest_cellButtonInvalid_6MDdd`,u=`tempest_cellEditor_LfeJW`,d=`tempest_cellEditorInvalid_J7e2W`,f=`tempest_cellError_CRf3e`,p={wrapper:e,search:t,pending:n,loading:r,loadingRow:i,sortButton:a,sortIndicator:o,cellWrap:s,cellButton:c,cellButtonInvalid:l,cellEditor:u,cellEditorInvalid:d,cellError:f};exports.cellButton=c,exports.cellButtonInvalid=l,exports.cellEditor=u,exports.cellEditorInvalid=d,exports.cellError=f,exports.cellWrap=s,exports.default=p,exports.loading=r,exports.loadingRow=i,exports.pending=n,exports.search=t,exports.sortButton=a,exports.sortIndicator=o,exports.wrapper=e;
2
3
  //# sourceMappingURL=DataTable.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.module.cjs","names":[],"sources":["../../../src/components/DataTable/DataTable.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n}\n\n.search {\n max-width: 20rem;\n}\n\n/*\n * A page swap keeps the rows it already has, dimmed. Replacing them with a\n * spinner would collapse the table to nothing and bounce whatever sits below it\n * back up, which is the jump the user's cursor was resting on.\n */\n.pending {\n opacity: 0.6;\n transition: opacity var(--tempest-duration-fast, 120ms) ease;\n pointer-events: none;\n}\n\n.loading {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n padding: var(--tempest-space-3, 0.75rem) 0;\n}\n\n.loadingRow {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--tempest-space-4, 1rem);\n align-items: center;\n}\n\n.sortButton {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n}\n\n.sortIndicator {\n font-size: 0.75em;\n opacity: 0.7;\n}\n\n/* ── Inline editing ─────────────────────────────────────────────────────────── */\n\n.cellWrap {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1, 0.25rem);\n align-items: stretch;\n width: 100%;\n}\n\n/*\n * The dashed bottom edge is a resting affordance, not only a hover one: on a touch\n * screen there is no hover, so an editable cell that looks exactly like a read-only\n * one is undiscoverable. It is the weakest mark that still says \"this is editable\";\n * hover and focus then promote it to a full box.\n */\n.cellButton {\n position: relative;\n display: block;\n width: 100%;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px dashed transparent;\n border-bottom-color: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background: none;\n font: inherit;\n color: inherit;\n text-align: inherit;\n cursor: pointer;\n}\n\n.cellButton:hover {\n border-color: var(--tempest-border-strong);\n background-color: var(--tempest-surface-2);\n}\n\n.cellButton:focus-visible {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellButtonInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * Touch: grow the hit area to the cell's own padding — exactly `--tempest-space-3`\n * vertically and `--tempest-space-4` horizontally in `Table.module.css` — so the\n * whole `<td>` is tappable and the target clears 44px without spilling into the\n * neighbouring row, which a symmetric slop would do in a dense table.\n */\n@media (pointer: coarse) {\n .cellButton::after {\n content: \"\";\n position: absolute;\n inset-block: calc(-1 * var(--tempest-space-3, 0.75rem));\n inset-inline: calc(-1 * var(--tempest-space-4, 1rem));\n }\n}\n\n.cellButton[aria-busy=\"true\"] {\n opacity: 0.6;\n}\n\n.cellEditor {\n width: 100%;\n min-width: 0;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px solid var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-bg);\n font: inherit;\n color: var(--tempest-text);\n}\n\n.cellEditor:focus {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellEditorInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * The message sits on a tinted fill because `--tempest-danger-fg` over\n * `--tempest-danger-bg` is a pair `contrast.test.ts` verifies in both themes;\n * danger text straight onto the table background is not.\n */\n.cellError {\n padding: 0.125rem var(--tempest-space-2, 0.5rem);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-danger-bg);\n color: var(--tempest-danger-fg);\n font-size: var(--tempest-text-sm);\n line-height: 1.4;\n white-space: normal;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DataTable.module.cjs","names":[],"sources":["../../../src/components/DataTable/DataTable.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n}\n\n.search {\n max-width: 20rem;\n}\n\n/*\n * A page swap keeps the rows it already has, dimmed. Replacing them with a\n * spinner would collapse the table to nothing and bounce whatever sits below it\n * back up, which is the jump the user's cursor was resting on.\n */\n.pending {\n opacity: 0.6;\n transition: opacity var(--tempest-duration-fast, 120ms) ease;\n pointer-events: none;\n}\n\n.loading {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n padding: var(--tempest-space-3, 0.75rem) 0;\n}\n\n.loadingRow {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--tempest-space-4, 1rem);\n align-items: center;\n}\n\n.sortButton {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n}\n\n.sortIndicator {\n font-size: 0.75em;\n opacity: 0.7;\n}\n\n/* ── Inline editing ─────────────────────────────────────────────────────────── */\n\n.cellWrap {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1, 0.25rem);\n align-items: stretch;\n width: 100%;\n}\n\n/*\n * The dashed bottom edge is a resting affordance, not only a hover one: on a touch\n * screen there is no hover, so an editable cell that looks exactly like a read-only\n * one is undiscoverable. It is the weakest mark that still says \"this is editable\";\n * hover and focus then promote it to a full box.\n */\n.cellButton {\n position: relative;\n display: block;\n width: 100%;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px dashed transparent;\n border-bottom-color: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background: none;\n font: inherit;\n color: inherit;\n text-align: inherit;\n cursor: pointer;\n}\n\n.cellButton:hover {\n border-color: var(--tempest-border-strong);\n background-color: var(--tempest-surface-2);\n}\n\n.cellButton:focus-visible {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellButtonInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * Touch: grow the hit area to the cell's own padding — exactly `--tempest-space-3`\n * vertically and `--tempest-space-4` horizontally in `Table.module.css` — so the\n * whole `<td>` is tappable and the target clears 44px without spilling into the\n * neighbouring row, which a symmetric slop would do in a dense table.\n */\n@media (pointer: coarse) {\n .cellButton::after {\n content: \"\";\n position: absolute;\n inset-block: calc(-1 * var(--tempest-space-3, 0.75rem));\n inset-inline: calc(-1 * var(--tempest-space-4, 1rem));\n }\n}\n\n.cellButton[aria-busy=\"true\"] {\n opacity: 0.6;\n}\n\n.cellEditor {\n width: 100%;\n min-width: 0;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px solid var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-bg);\n font: inherit;\n color: var(--tempest-text);\n}\n\n.cellEditor:focus {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellEditorInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * The message sits on a tinted fill because `--tempest-danger-fg` over\n * `--tempest-danger-bg` is a pair `contrast.test.ts` verifies in both themes;\n * danger text straight onto the table background is not.\n */\n.cellError {\n padding: 0.125rem var(--tempest-space-2, 0.5rem);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-danger-bg);\n color: var(--tempest-danger-fg);\n font-size: var(--tempest-text-sm);\n line-height: 1.4;\n white-space: normal;\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/DataTable.css";
1
2
  //#region src/components/DataTable/DataTable.module.css
2
3
  var e = "tempest_wrapper_iB6ka", t = "tempest_search_2y-yM", n = "tempest_pending_AzPOe", r = "tempest_loading_o14rI", i = "tempest_loadingRow_PsjGm", a = "tempest_sortButton_9p6w4", o = "tempest_sortIndicator_bZMlH", s = "tempest_cellWrap_8-ugE", c = "tempest_cellButton_BgVe-", l = "tempest_cellButtonInvalid_6MDdd", u = "tempest_cellEditor_LfeJW", d = "tempest_cellEditorInvalid_J7e2W", f = "tempest_cellError_CRf3e", p = {
3
4
  wrapper: e,
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.module.js","names":[],"sources":["../../../src/components/DataTable/DataTable.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n}\n\n.search {\n max-width: 20rem;\n}\n\n/*\n * A page swap keeps the rows it already has, dimmed. Replacing them with a\n * spinner would collapse the table to nothing and bounce whatever sits below it\n * back up, which is the jump the user's cursor was resting on.\n */\n.pending {\n opacity: 0.6;\n transition: opacity var(--tempest-duration-fast, 120ms) ease;\n pointer-events: none;\n}\n\n.loading {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n padding: var(--tempest-space-3, 0.75rem) 0;\n}\n\n.loadingRow {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--tempest-space-4, 1rem);\n align-items: center;\n}\n\n.sortButton {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n}\n\n.sortIndicator {\n font-size: 0.75em;\n opacity: 0.7;\n}\n\n/* ── Inline editing ─────────────────────────────────────────────────────────── */\n\n.cellWrap {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1, 0.25rem);\n align-items: stretch;\n width: 100%;\n}\n\n/*\n * The dashed bottom edge is a resting affordance, not only a hover one: on a touch\n * screen there is no hover, so an editable cell that looks exactly like a read-only\n * one is undiscoverable. It is the weakest mark that still says \"this is editable\";\n * hover and focus then promote it to a full box.\n */\n.cellButton {\n position: relative;\n display: block;\n width: 100%;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px dashed transparent;\n border-bottom-color: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background: none;\n font: inherit;\n color: inherit;\n text-align: inherit;\n cursor: pointer;\n}\n\n.cellButton:hover {\n border-color: var(--tempest-border-strong);\n background-color: var(--tempest-surface-2);\n}\n\n.cellButton:focus-visible {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellButtonInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * Touch: grow the hit area to the cell's own padding — exactly `--tempest-space-3`\n * vertically and `--tempest-space-4` horizontally in `Table.module.css` — so the\n * whole `<td>` is tappable and the target clears 44px without spilling into the\n * neighbouring row, which a symmetric slop would do in a dense table.\n */\n@media (pointer: coarse) {\n .cellButton::after {\n content: \"\";\n position: absolute;\n inset-block: calc(-1 * var(--tempest-space-3, 0.75rem));\n inset-inline: calc(-1 * var(--tempest-space-4, 1rem));\n }\n}\n\n.cellButton[aria-busy=\"true\"] {\n opacity: 0.6;\n}\n\n.cellEditor {\n width: 100%;\n min-width: 0;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px solid var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-bg);\n font: inherit;\n color: var(--tempest-text);\n}\n\n.cellEditor:focus {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellEditorInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * The message sits on a tinted fill because `--tempest-danger-fg` over\n * `--tempest-danger-bg` is a pair `contrast.test.ts` verifies in both themes;\n * danger text straight onto the table background is not.\n */\n.cellError {\n padding: 0.125rem var(--tempest-space-2, 0.5rem);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-danger-bg);\n color: var(--tempest-danger-fg);\n font-size: var(--tempest-text-sm);\n line-height: 1.4;\n white-space: normal;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DataTable.module.js","names":[],"sources":["../../../src/components/DataTable/DataTable.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n}\n\n.search {\n max-width: 20rem;\n}\n\n/*\n * A page swap keeps the rows it already has, dimmed. Replacing them with a\n * spinner would collapse the table to nothing and bounce whatever sits below it\n * back up, which is the jump the user's cursor was resting on.\n */\n.pending {\n opacity: 0.6;\n transition: opacity var(--tempest-duration-fast, 120ms) ease;\n pointer-events: none;\n}\n\n.loading {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-3, 0.75rem);\n padding: var(--tempest-space-3, 0.75rem) 0;\n}\n\n.loadingRow {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n gap: var(--tempest-space-4, 1rem);\n align-items: center;\n}\n\n.sortButton {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0;\n border: none;\n background: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n user-select: none;\n}\n\n.sortIndicator {\n font-size: 0.75em;\n opacity: 0.7;\n}\n\n/* ── Inline editing ─────────────────────────────────────────────────────────── */\n\n.cellWrap {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-1, 0.25rem);\n align-items: stretch;\n width: 100%;\n}\n\n/*\n * The dashed bottom edge is a resting affordance, not only a hover one: on a touch\n * screen there is no hover, so an editable cell that looks exactly like a read-only\n * one is undiscoverable. It is the weakest mark that still says \"this is editable\";\n * hover and focus then promote it to a full box.\n */\n.cellButton {\n position: relative;\n display: block;\n width: 100%;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px dashed transparent;\n border-bottom-color: var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background: none;\n font: inherit;\n color: inherit;\n text-align: inherit;\n cursor: pointer;\n}\n\n.cellButton:hover {\n border-color: var(--tempest-border-strong);\n background-color: var(--tempest-surface-2);\n}\n\n.cellButton:focus-visible {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellButtonInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * Touch: grow the hit area to the cell's own padding — exactly `--tempest-space-3`\n * vertically and `--tempest-space-4` horizontally in `Table.module.css` — so the\n * whole `<td>` is tappable and the target clears 44px without spilling into the\n * neighbouring row, which a symmetric slop would do in a dense table.\n */\n@media (pointer: coarse) {\n .cellButton::after {\n content: \"\";\n position: absolute;\n inset-block: calc(-1 * var(--tempest-space-3, 0.75rem));\n inset-inline: calc(-1 * var(--tempest-space-4, 1rem));\n }\n}\n\n.cellButton[aria-busy=\"true\"] {\n opacity: 0.6;\n}\n\n.cellEditor {\n width: 100%;\n min-width: 0;\n margin: calc(-1 * var(--tempest-space-1, 0.25rem)) calc(-1 * var(--tempest-space-2, 0.5rem));\n padding: var(--tempest-space-1, 0.25rem) var(--tempest-space-2, 0.5rem);\n border: 1px solid var(--tempest-border-strong);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-bg);\n font: inherit;\n color: var(--tempest-text);\n}\n\n.cellEditor:focus {\n outline: none;\n box-shadow: 0 0 0 var(--tempest-focus-ring-width) var(--tempest-focus-ring-color);\n}\n\n.cellEditorInvalid {\n border-color: var(--tempest-danger-border);\n}\n\n/*\n * The message sits on a tinted fill because `--tempest-danger-fg` over\n * `--tempest-danger-bg` is a pair `contrast.test.ts` verifies in both themes;\n * danger text straight onto the table background is not.\n */\n.cellError {\n padding: 0.125rem var(--tempest-space-2, 0.5rem);\n border-radius: var(--tempest-radius-sm, 0.25rem);\n background-color: var(--tempest-danger-bg);\n color: var(--tempest-danger-fg);\n font-size: var(--tempest-text-sm);\n line-height: 1.4;\n white-space: normal;\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/DateRangePicker.css");
1
2
  var e=`tempest_root_fVC66`,t=`tempest_header_sTdRM`,n=`tempest_headerSpacer_nqeNO`,r=`tempest_nav_7nFJE`,i=`tempest_months_fbwtK`,a=`tempest_month_0WfUc`,o=`tempest_title_OGQrm`,s=`tempest_weekdays_nYTrg`,c=`tempest_grid_O0eUF`,l=`tempest_weekday_cy-Mz`,u=`tempest_day_-V6FX`,d=`tempest_outside_3otid`,f=`tempest_today_gwmhs`,p=`tempest_inRange_iQJYA`,m=`tempest_selected_DRsBO`,h=`tempest_rangeStart_-Oe1u`,g=`tempest_rangeEnd_mUaKW`,_={root:e,header:t,headerSpacer:n,nav:r,months:i,month:a,title:o,weekdays:s,grid:c,weekday:l,day:u,outside:d,today:f,inRange:p,selected:m,rangeStart:h,rangeEnd:g};exports.day=u,exports.default=_,exports.grid=c,exports.header=t,exports.headerSpacer=n,exports.inRange=p,exports.month=a,exports.months=i,exports.nav=r,exports.outside=d,exports.rangeEnd=g,exports.rangeStart=h,exports.root=e,exports.selected=m,exports.title=o,exports.today=f,exports.weekday=l,exports.weekdays=s;
2
3
  //# sourceMappingURL=DateRangePicker.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.module.cjs","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DateRangePicker.module.cjs","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/DateRangePicker.css";
1
2
  //#region src/components/DateRangePicker/DateRangePicker.module.css
2
3
  var e = "tempest_root_fVC66", t = "tempest_header_sTdRM", n = "tempest_headerSpacer_nqeNO", r = "tempest_nav_7nFJE", i = "tempest_months_fbwtK", a = "tempest_month_0WfUc", o = "tempest_title_OGQrm", s = "tempest_weekdays_nYTrg", c = "tempest_grid_O0eUF", l = "tempest_weekday_cy-Mz", u = "tempest_day_-V6FX", d = "tempest_outside_3otid", f = "tempest_today_gwmhs", p = "tempest_inRange_iQJYA", m = "tempest_selected_DRsBO", h = "tempest_rangeStart_-Oe1u", g = "tempest_rangeEnd_mUaKW", _ = {
3
4
  root: e,
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.module.js","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DateRangePicker.module.js","names":[],"sources":["../../../src/components/DateRangePicker/DateRangePicker.module.css"],"sourcesContent":[".root {\n display: inline-flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n padding: var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-lg);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-family: var(--tempest-font-sans);\n user-select: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--tempest-space-2);\n}\n\n.headerSpacer {\n flex: 1;\n}\n\n.nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background-color: var(--tempest-surface);\n color: var(--tempest-text);\n font-size: var(--tempest-text-lg);\n line-height: 1;\n cursor: pointer;\n transition: background-color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.nav:hover {\n background-color: var(--tempest-surface-2);\n}\n\n.nav:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.months {\n display: flex;\n flex-wrap: wrap;\n gap: var(--tempest-space-5);\n}\n\n.month {\n display: flex;\n flex-direction: column;\n gap: var(--tempest-space-2);\n}\n\n.title {\n text-align: center;\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-semibold);\n}\n\n.weekdays,\n.grid {\n display: grid;\n grid-template-columns: repeat(7, 2.25rem);\n gap: var(--tempest-space-1);\n}\n\n.weekday {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1.5rem;\n font-size: var(--tempest-text-2xs);\n font-weight: var(--tempest-weight-semibold);\n color: var(--tempest-text-muted);\n text-transform: uppercase;\n}\n\n.day {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border: 1px solid transparent;\n border-radius: var(--tempest-radius-md);\n background-color: transparent;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n cursor: pointer;\n transition:\n background-color var(--tempest-duration-fast) var(--tempest-ease-out),\n color var(--tempest-duration-fast) var(--tempest-ease-out);\n}\n\n.day:hover:not(:disabled) {\n background-color: var(--tempest-surface-2);\n}\n\n.day:focus-visible {\n outline: var(--tempest-focus-ring-width) solid var(--tempest-focus-ring-color);\n outline-offset: var(--tempest-focus-ring-offset);\n}\n\n.day:disabled {\n color: var(--tempest-text-muted);\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.outside {\n /* No extra opacity: subtle-on-surface already reads as de-emphasised, and\n fading it further dropped the contrast to 2.11:1 (WCAG AA needs 4.5:1)\n for dates that are still clickable. */\n color: var(--tempest-text-subtle);\n}\n\n.today {\n font-weight: var(--tempest-weight-semibold);\n border-color: var(--tempest-primary);\n}\n\n.inRange {\n background-color: var(--tempest-primary-soft);\n color: var(--tempest-primary-on-soft);\n border-radius: 0;\n}\n\n.selected,\n.selected:hover {\n background-color: var(--tempest-primary);\n color: var(--tempest-primary-foreground);\n border-color: var(--tempest-primary);\n}\n\n.rangeStart {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rangeEnd {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/DescriptionList.css");
1
2
  var e=`tempest_list_fwIXq`,t=`tempest_term_QkQNZ`,n=`tempest_description_e1bNN`,r={list:e,term:t,description:n};exports.default=r,exports.description=n,exports.list=e,exports.term=t;
2
3
  //# sourceMappingURL=DescriptionList.module.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptionList.module.cjs","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DescriptionList.module.cjs","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
@@ -1,3 +1,4 @@
1
+ import "../../styles/component/DescriptionList.css";
1
2
  //#region src/components/DescriptionList/DescriptionList.module.css
2
3
  var e = "tempest_list_fwIXq", t = "tempest_term_QkQNZ", n = "tempest_description_e1bNN", r = {
3
4
  list: e,
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptionList.module.js","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DescriptionList.module.js","names":[],"sources":["../../../src/components/DescriptionList/DescriptionList.module.css"],"sourcesContent":[".list {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: var(--tempest-space-1) var(--tempest-space-4);\n margin: 0;\n}\n\n.term {\n color: var(--tempest-text-subtle);\n font-size: var(--tempest-text-sm);\n font-weight: var(--tempest-weight-medium);\n}\n\n.description {\n margin: 0;\n color: var(--tempest-text);\n font-size: var(--tempest-text-sm);\n}\n"],"mappings":";"}
@@ -1,2 +1,3 @@
1
+ require("../../styles/component/Divider.css");
1
2
  var e=`tempest_divider_KSGsi`,t=`tempest_horizontal_pZ05Y`,n=`tempest_bare_elDbS`,r=`tempest_vertical_p-jD4`,i=`tempest_dashed_JWxCU`,a=`tempest_alignStart_QAIi1`,o=`tempest_alignEnd_eZDwa`,s={divider:e,horizontal:t,bare:n,vertical:r,dashed:i,alignStart:a,alignEnd:o};exports.alignEnd=o,exports.alignStart=a,exports.bare=n,exports.dashed=i,exports.default=s,exports.divider=e,exports.horizontal=t,exports.vertical=r;
2
3
  //# sourceMappingURL=Divider.module.cjs.map