@lidofinance/lido-app-ui 1.12.0 → 1.14.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 (679) hide show
  1. package/README.md +85 -19
  2. package/dist/README.md +85 -19
  3. package/dist/cjs/accordion/Accordion.cjs +1 -0
  4. package/dist/cjs/accordion/Accordion.cjs.map +1 -1
  5. package/dist/cjs/address/Address.cjs +50 -0
  6. package/dist/cjs/address/Address.cjs.map +1 -0
  7. package/dist/cjs/address/Address.module.css.cjs +6 -0
  8. package/dist/cjs/address/Address.module.css.cjs.map +1 -0
  9. package/dist/cjs/address-button/AddressButton.cjs +49 -0
  10. package/dist/cjs/address-button/AddressButton.cjs.map +1 -0
  11. package/dist/cjs/address-button/AddressButton.module.css.cjs +6 -0
  12. package/dist/cjs/address-button/AddressButton.module.css.cjs.map +1 -0
  13. package/dist/cjs/badge/Badge.cjs +1 -0
  14. package/dist/cjs/badge/Badge.cjs.map +1 -1
  15. package/dist/cjs/banner/Banner.cjs +1 -0
  16. package/dist/cjs/banner/Banner.cjs.map +1 -1
  17. package/dist/cjs/breadcrumbs/Breadcrumbs.cjs +55 -26
  18. package/dist/cjs/breadcrumbs/Breadcrumbs.cjs.map +1 -1
  19. package/dist/cjs/breadcrumbs/Breadcrumbs.module.css.cjs +1 -1
  20. package/dist/cjs/button/Button.cjs +15 -24
  21. package/dist/cjs/button/Button.cjs.map +1 -1
  22. package/dist/cjs/button/Button.module.css.cjs +1 -1
  23. package/dist/cjs/button/ButtonContent.cjs +50 -0
  24. package/dist/cjs/button/ButtonContent.cjs.map +1 -0
  25. package/dist/cjs/button/LinkButton.cjs +46 -0
  26. package/dist/cjs/button/LinkButton.cjs.map +1 -0
  27. package/dist/cjs/card/Card.cjs +1 -0
  28. package/dist/cjs/card/Card.cjs.map +1 -1
  29. package/dist/cjs/checkbox/Checkbox.cjs +1 -0
  30. package/dist/cjs/checkbox/Checkbox.cjs.map +1 -1
  31. package/dist/cjs/copy/Copy.cjs +55 -0
  32. package/dist/cjs/copy/Copy.cjs.map +1 -0
  33. package/dist/cjs/copy/Copy.module.css.cjs +6 -0
  34. package/dist/cjs/copy/Copy.module.css.cjs.map +1 -0
  35. package/dist/cjs/copy/useCopy.cjs +33 -0
  36. package/dist/cjs/copy/useCopy.cjs.map +1 -0
  37. package/dist/cjs/counter/Counter.cjs +6 -2
  38. package/dist/cjs/counter/Counter.cjs.map +1 -1
  39. package/dist/cjs/counter/CounterSlot.cjs +19 -2
  40. package/dist/cjs/counter/CounterSlot.cjs.map +1 -1
  41. package/dist/cjs/counter/CounterSlot.module.css.cjs +1 -1
  42. package/dist/cjs/data-list/DataList.cjs +1 -0
  43. package/dist/cjs/data-list/DataList.cjs.map +1 -1
  44. package/dist/cjs/data-list/DataList.module.css.cjs +1 -1
  45. package/dist/cjs/data-list/DataListRow.cjs +7 -12
  46. package/dist/cjs/data-list/DataListRow.cjs.map +1 -1
  47. package/dist/cjs/disclaimer/Disclaimer.cjs +10 -3
  48. package/dist/cjs/disclaimer/Disclaimer.cjs.map +1 -1
  49. package/dist/cjs/divider/Divider.cjs +5 -0
  50. package/dist/cjs/divider/Divider.cjs.map +1 -1
  51. package/dist/cjs/error-page/ErrorPage.cjs +14 -7
  52. package/dist/cjs/error-page/ErrorPage.cjs.map +1 -1
  53. package/dist/cjs/footer/Footer.cjs +10 -2
  54. package/dist/cjs/footer/Footer.cjs.map +1 -1
  55. package/dist/cjs/grid/Grid.cjs +7 -3
  56. package/dist/cjs/grid/Grid.cjs.map +1 -1
  57. package/dist/cjs/grid/Grid.module.css.cjs +1 -1
  58. package/dist/cjs/grid/GridItem.cjs +2 -0
  59. package/dist/cjs/grid/GridItem.cjs.map +1 -1
  60. package/dist/cjs/header/Header.cjs +10 -2
  61. package/dist/cjs/header/Header.cjs.map +1 -1
  62. package/dist/cjs/header/HeaderNav.cjs +33 -21
  63. package/dist/cjs/header/HeaderNav.cjs.map +1 -1
  64. package/dist/cjs/header/HeaderNav.module.css.cjs +1 -1
  65. package/dist/cjs/hex/Hex.cjs +41 -0
  66. package/dist/cjs/hex/Hex.cjs.map +1 -0
  67. package/dist/cjs/hex/Hex.module.css.cjs +6 -0
  68. package/dist/cjs/hex/Hex.module.css.cjs.map +1 -0
  69. package/dist/cjs/hex/trimHex.cjs +15 -0
  70. package/dist/cjs/hex/trimHex.cjs.map +1 -0
  71. package/dist/cjs/hidden/Hidden.cjs +10 -4
  72. package/dist/cjs/hidden/Hidden.cjs.map +1 -1
  73. package/dist/cjs/hooks/Portal.cjs +14 -11
  74. package/dist/cjs/hooks/Portal.cjs.map +1 -1
  75. package/dist/cjs/hooks/useBodyScrollLock.cjs +49 -13
  76. package/dist/cjs/hooks/useBodyScrollLock.cjs.map +1 -1
  77. package/dist/cjs/hooks/useEdgeFade.cjs +60 -0
  78. package/dist/cjs/hooks/useEdgeFade.cjs.map +1 -0
  79. package/dist/cjs/hooks/useEscape.cjs +8 -5
  80. package/dist/cjs/hooks/useEscape.cjs.map +1 -1
  81. package/dist/cjs/hooks/useFocusTrap.cjs +61 -24
  82. package/dist/cjs/hooks/useFocusTrap.cjs.map +1 -1
  83. package/dist/cjs/hooks/useHideOthers.cjs +51 -0
  84. package/dist/cjs/hooks/useHideOthers.cjs.map +1 -0
  85. package/dist/cjs/hooks/useOutsideClick.cjs +31 -4
  86. package/dist/cjs/hooks/useOutsideClick.cjs.map +1 -1
  87. package/dist/cjs/icon-button/CloseButton.cjs +27 -0
  88. package/dist/cjs/icon-button/CloseButton.cjs.map +1 -0
  89. package/dist/cjs/icon-button/IconButton.cjs +6 -1
  90. package/dist/cjs/icon-button/IconButton.cjs.map +1 -1
  91. package/dist/cjs/icon-button/IconButton.module.css.cjs +1 -1
  92. package/dist/cjs/icons/TokenIcon.cjs +2 -0
  93. package/dist/cjs/icons/TokenIcon.cjs.map +1 -1
  94. package/dist/cjs/identicon/Identicon.cjs +2 -0
  95. package/dist/cjs/identicon/Identicon.cjs.map +1 -1
  96. package/dist/cjs/index.cjs +67 -5
  97. package/dist/cjs/index.cjs.map +1 -1
  98. package/dist/cjs/index.css +14 -4
  99. package/dist/cjs/info-tooltip/InfoTooltip.cjs +34 -0
  100. package/dist/cjs/info-tooltip/InfoTooltip.cjs.map +1 -0
  101. package/dist/cjs/info-tooltip/InfoTooltip.module.css.cjs +6 -0
  102. package/dist/cjs/info-tooltip/InfoTooltip.module.css.cjs.map +1 -0
  103. package/dist/cjs/input/Input.cjs +4 -8
  104. package/dist/cjs/input/Input.cjs.map +1 -1
  105. package/dist/cjs/input/Input.module.css.cjs +1 -1
  106. package/dist/cjs/link-provider/Anchor.cjs +23 -2
  107. package/dist/cjs/link-provider/Anchor.cjs.map +1 -1
  108. package/dist/cjs/link-provider/LinkProvider.cjs +1 -1
  109. package/dist/cjs/link-provider/LinkProvider.cjs.map +1 -1
  110. package/dist/cjs/logo/Logo.cjs +8 -0
  111. package/dist/cjs/logo/Logo.cjs.map +1 -1
  112. package/dist/cjs/message-box/MessageBox.cjs +1 -0
  113. package/dist/cjs/message-box/MessageBox.cjs.map +1 -1
  114. package/dist/cjs/modal/Modal.cjs +73 -15
  115. package/dist/cjs/modal/Modal.cjs.map +1 -1
  116. package/dist/cjs/nav-link/NavLink.cjs +6 -4
  117. package/dist/cjs/nav-link/NavLink.cjs.map +1 -1
  118. package/dist/cjs/notification/Notification.cjs +12 -6
  119. package/dist/cjs/notification/Notification.cjs.map +1 -1
  120. package/dist/cjs/page-layout/Layout.cjs +25 -0
  121. package/dist/cjs/page-layout/Layout.cjs.map +1 -0
  122. package/dist/cjs/page-layout/Layout.module.css.cjs +6 -0
  123. package/dist/cjs/page-layout/Layout.module.css.cjs.map +1 -0
  124. package/dist/cjs/page-layout/Main.cjs +29 -0
  125. package/dist/cjs/page-layout/Main.cjs.map +1 -0
  126. package/dist/cjs/page-layout/Main.module.css.cjs +6 -0
  127. package/dist/cjs/page-layout/Main.module.css.cjs.map +1 -0
  128. package/dist/cjs/page-layout/PageContent.cjs +22 -0
  129. package/dist/cjs/page-layout/PageContent.cjs.map +1 -0
  130. package/dist/cjs/page-layout/PageContent.module.css.cjs +6 -0
  131. package/dist/cjs/page-layout/PageContent.module.css.cjs.map +1 -0
  132. package/dist/cjs/pagination/Pagination.cjs +11 -6
  133. package/dist/cjs/pagination/Pagination.cjs.map +1 -1
  134. package/dist/cjs/popover/Popover.cjs +71 -15
  135. package/dist/cjs/popover/Popover.cjs.map +1 -1
  136. package/dist/cjs/radio-button/RadioButton.cjs +1 -0
  137. package/dist/cjs/radio-button/RadioButton.cjs.map +1 -1
  138. package/dist/cjs/rich-input/RichInput.cjs +22 -46
  139. package/dist/cjs/rich-input/RichInput.cjs.map +1 -1
  140. package/dist/cjs/rich-input/RichInput.module.css.cjs +1 -1
  141. package/dist/cjs/section-title/SectionTitle.cjs +9 -10
  142. package/dist/cjs/section-title/SectionTitle.cjs.map +1 -1
  143. package/dist/cjs/section-title/SectionTitle.module.css.cjs +1 -1
  144. package/dist/cjs/segmented-control/SegmentedControl.cjs +1 -0
  145. package/dist/cjs/segmented-control/SegmentedControl.cjs.map +1 -1
  146. package/dist/cjs/segmented-control/SegmentedControlCard.cjs +1 -0
  147. package/dist/cjs/segmented-control/SegmentedControlCard.cjs.map +1 -1
  148. package/dist/cjs/sidebar/Sidebar.cjs +141 -0
  149. package/dist/cjs/sidebar/Sidebar.cjs.map +1 -0
  150. package/dist/cjs/sidebar/Sidebar.module.css.cjs +6 -0
  151. package/dist/cjs/sidebar/Sidebar.module.css.cjs.map +1 -0
  152. package/dist/cjs/sidebar/SidebarContext.cjs +13 -0
  153. package/dist/cjs/sidebar/SidebarContext.cjs.map +1 -0
  154. package/dist/cjs/sidebar/SidebarGroup.cjs +37 -0
  155. package/dist/cjs/sidebar/SidebarGroup.cjs.map +1 -0
  156. package/dist/cjs/sidebar/SidebarGroup.module.css.cjs +6 -0
  157. package/dist/cjs/sidebar/SidebarGroup.module.css.cjs.map +1 -0
  158. package/dist/cjs/sidebar/SidebarInset.cjs +25 -0
  159. package/dist/cjs/sidebar/SidebarInset.cjs.map +1 -0
  160. package/dist/cjs/sidebar/SidebarInset.module.css.cjs +6 -0
  161. package/dist/cjs/sidebar/SidebarInset.module.css.cjs.map +1 -0
  162. package/dist/cjs/sidebar/SidebarItem.cjs +42 -0
  163. package/dist/cjs/sidebar/SidebarItem.cjs.map +1 -0
  164. package/dist/cjs/sidebar/SidebarItem.module.css.cjs +6 -0
  165. package/dist/cjs/sidebar/SidebarItem.module.css.cjs.map +1 -0
  166. package/dist/cjs/sidebar/SidebarLayout.cjs +41 -0
  167. package/dist/cjs/sidebar/SidebarLayout.cjs.map +1 -0
  168. package/dist/cjs/sidebar/SidebarLayout.module.css.cjs +6 -0
  169. package/dist/cjs/sidebar/SidebarLayout.module.css.cjs.map +1 -0
  170. package/dist/cjs/sidebar/SidebarToggle.cjs +44 -0
  171. package/dist/cjs/sidebar/SidebarToggle.cjs.map +1 -0
  172. package/dist/cjs/sidebar/SidebarToggle.module.css.cjs +6 -0
  173. package/dist/cjs/sidebar/SidebarToggle.module.css.cjs.map +1 -0
  174. package/dist/cjs/sidebar/useSidebarDrawer.cjs +47 -0
  175. package/dist/cjs/sidebar/useSidebarDrawer.cjs.map +1 -0
  176. package/dist/cjs/skeleton/Skeleton.cjs +18 -20
  177. package/dist/cjs/skeleton/Skeleton.cjs.map +1 -1
  178. package/dist/cjs/skip-link/SkipLink.cjs +52 -0
  179. package/dist/cjs/skip-link/SkipLink.cjs.map +1 -0
  180. package/dist/cjs/skip-link/SkipLink.module.css.cjs +6 -0
  181. package/dist/cjs/skip-link/SkipLink.module.css.cjs.map +1 -0
  182. package/dist/cjs/slider/Slider.cjs +1 -0
  183. package/dist/cjs/slider/Slider.cjs.map +1 -1
  184. package/dist/cjs/small-card/SmallCard.cjs +6 -2
  185. package/dist/cjs/small-card/SmallCard.cjs.map +1 -1
  186. package/dist/cjs/stack/Stack.cjs +27 -7
  187. package/dist/cjs/stack/Stack.cjs.map +1 -1
  188. package/dist/cjs/stack/Stack.module.css.cjs +1 -1
  189. package/dist/cjs/stat-item/StatItem.cjs +4 -8
  190. package/dist/cjs/stat-item/StatItem.cjs.map +1 -1
  191. package/dist/cjs/stat-item/StatItem.module.css.cjs +1 -1
  192. package/dist/cjs/switch/Switch.cjs +1 -0
  193. package/dist/cjs/switch/Switch.cjs.map +1 -1
  194. package/dist/cjs/tabs/Tabs.cjs +1 -0
  195. package/dist/cjs/tabs/Tabs.cjs.map +1 -1
  196. package/dist/cjs/tag/Tag.cjs +73 -8
  197. package/dist/cjs/tag/Tag.cjs.map +1 -1
  198. package/dist/cjs/tag/Tag.module.css.cjs +1 -1
  199. package/dist/cjs/text-link/TextLink.cjs +10 -13
  200. package/dist/cjs/text-link/TextLink.cjs.map +1 -1
  201. package/dist/cjs/text-link/TextLink.module.css.cjs +1 -1
  202. package/dist/cjs/theme-switcher/ThemeSwitcher.cjs +13 -5
  203. package/dist/cjs/theme-switcher/ThemeSwitcher.cjs.map +1 -1
  204. package/dist/cjs/theme-switcher/ThemeSwitcher.module.css.cjs +6 -0
  205. package/dist/cjs/theme-switcher/ThemeSwitcher.module.css.cjs.map +1 -0
  206. package/dist/cjs/token-amount/TokenAmount.cjs +1 -0
  207. package/dist/cjs/token-amount/TokenAmount.cjs.map +1 -1
  208. package/dist/cjs/token-selector/TokenSelector.cjs +56 -64
  209. package/dist/cjs/token-selector/TokenSelector.cjs.map +1 -1
  210. package/dist/cjs/tooltip/Tooltip.cjs +42 -27
  211. package/dist/cjs/tooltip/Tooltip.cjs.map +1 -1
  212. package/dist/cjs/tx-status/TxStatus.cjs +2 -0
  213. package/dist/cjs/tx-status/TxStatus.cjs.map +1 -1
  214. package/dist/cjs/typography/Typography.cjs +2 -0
  215. package/dist/cjs/typography/Typography.cjs.map +1 -1
  216. package/dist/cjs/utils/ActionElement.cjs +2 -13
  217. package/dist/cjs/utils/ActionElement.cjs.map +1 -1
  218. package/dist/cjs/utils/breakpoints.cjs +26 -0
  219. package/dist/cjs/utils/breakpoints.cjs.map +1 -0
  220. package/dist/cjs/utils/responsive.cjs +19 -30
  221. package/dist/cjs/utils/responsive.cjs.map +1 -1
  222. package/dist/cjs/utils/surface.module.css.cjs +6 -0
  223. package/dist/cjs/utils/surface.module.css.cjs.map +1 -0
  224. package/dist/esm/accordion/Accordion.mjs +1 -0
  225. package/dist/esm/accordion/Accordion.mjs.map +1 -1
  226. package/dist/esm/address/Address.mjs +46 -0
  227. package/dist/esm/address/Address.mjs.map +1 -0
  228. package/dist/esm/address/Address.module.css.mjs +4 -0
  229. package/dist/esm/address/Address.module.css.mjs.map +1 -0
  230. package/dist/esm/address-button/AddressButton.mjs +45 -0
  231. package/dist/esm/address-button/AddressButton.mjs.map +1 -0
  232. package/dist/esm/address-button/AddressButton.module.css.mjs +4 -0
  233. package/dist/esm/address-button/AddressButton.module.css.mjs.map +1 -0
  234. package/dist/esm/badge/Badge.mjs +1 -0
  235. package/dist/esm/badge/Badge.mjs.map +1 -1
  236. package/dist/esm/banner/Banner.mjs +1 -0
  237. package/dist/esm/banner/Banner.mjs.map +1 -1
  238. package/dist/esm/breadcrumbs/Breadcrumbs.mjs +56 -27
  239. package/dist/esm/breadcrumbs/Breadcrumbs.mjs.map +1 -1
  240. package/dist/esm/breadcrumbs/Breadcrumbs.module.css.mjs +1 -1
  241. package/dist/esm/button/Button.mjs +16 -25
  242. package/dist/esm/button/Button.mjs.map +1 -1
  243. package/dist/esm/button/Button.module.css.mjs +1 -1
  244. package/dist/esm/button/ButtonContent.mjs +45 -0
  245. package/dist/esm/button/ButtonContent.mjs.map +1 -0
  246. package/dist/esm/button/LinkButton.mjs +42 -0
  247. package/dist/esm/button/LinkButton.mjs.map +1 -0
  248. package/dist/esm/card/Card.mjs +1 -0
  249. package/dist/esm/card/Card.mjs.map +1 -1
  250. package/dist/esm/checkbox/Checkbox.mjs +1 -0
  251. package/dist/esm/checkbox/Checkbox.mjs.map +1 -1
  252. package/dist/esm/copy/Copy.mjs +51 -0
  253. package/dist/esm/copy/Copy.mjs.map +1 -0
  254. package/dist/esm/copy/Copy.module.css.mjs +4 -0
  255. package/dist/esm/copy/Copy.module.css.mjs.map +1 -0
  256. package/dist/esm/copy/useCopy.mjs +29 -0
  257. package/dist/esm/copy/useCopy.mjs.map +1 -0
  258. package/dist/esm/counter/Counter.mjs +6 -2
  259. package/dist/esm/counter/Counter.mjs.map +1 -1
  260. package/dist/esm/counter/CounterSlot.mjs +19 -3
  261. package/dist/esm/counter/CounterSlot.mjs.map +1 -1
  262. package/dist/esm/counter/CounterSlot.module.css.mjs +1 -1
  263. package/dist/esm/data-list/DataList.mjs +1 -0
  264. package/dist/esm/data-list/DataList.mjs.map +1 -1
  265. package/dist/esm/data-list/DataList.module.css.mjs +1 -1
  266. package/dist/esm/data-list/DataListRow.mjs +7 -12
  267. package/dist/esm/data-list/DataListRow.mjs.map +1 -1
  268. package/dist/esm/disclaimer/Disclaimer.mjs +10 -3
  269. package/dist/esm/disclaimer/Disclaimer.mjs.map +1 -1
  270. package/dist/esm/divider/Divider.mjs +5 -0
  271. package/dist/esm/divider/Divider.mjs.map +1 -1
  272. package/dist/esm/error-page/ErrorPage.mjs +14 -7
  273. package/dist/esm/error-page/ErrorPage.mjs.map +1 -1
  274. package/dist/esm/footer/Footer.mjs +10 -2
  275. package/dist/esm/footer/Footer.mjs.map +1 -1
  276. package/dist/esm/grid/Grid.mjs +8 -4
  277. package/dist/esm/grid/Grid.mjs.map +1 -1
  278. package/dist/esm/grid/Grid.module.css.mjs +1 -1
  279. package/dist/esm/grid/GridItem.mjs +2 -0
  280. package/dist/esm/grid/GridItem.mjs.map +1 -1
  281. package/dist/esm/header/Header.mjs +10 -2
  282. package/dist/esm/header/Header.mjs.map +1 -1
  283. package/dist/esm/header/HeaderNav.mjs +34 -22
  284. package/dist/esm/header/HeaderNav.mjs.map +1 -1
  285. package/dist/esm/header/HeaderNav.module.css.mjs +1 -1
  286. package/dist/esm/hex/Hex.mjs +37 -0
  287. package/dist/esm/hex/Hex.mjs.map +1 -0
  288. package/dist/esm/hex/Hex.module.css.mjs +4 -0
  289. package/dist/esm/hex/Hex.module.css.mjs.map +1 -0
  290. package/dist/esm/hex/trimHex.mjs +11 -0
  291. package/dist/esm/hex/trimHex.mjs.map +1 -0
  292. package/dist/esm/hidden/Hidden.mjs +10 -4
  293. package/dist/esm/hidden/Hidden.mjs.map +1 -1
  294. package/dist/esm/hooks/Portal.mjs +16 -13
  295. package/dist/esm/hooks/Portal.mjs.map +1 -1
  296. package/dist/esm/hooks/useBodyScrollLock.mjs +49 -13
  297. package/dist/esm/hooks/useBodyScrollLock.mjs.map +1 -1
  298. package/dist/esm/hooks/useEdgeFade.mjs +56 -0
  299. package/dist/esm/hooks/useEdgeFade.mjs.map +1 -0
  300. package/dist/esm/hooks/useEscape.mjs +8 -5
  301. package/dist/esm/hooks/useEscape.mjs.map +1 -1
  302. package/dist/esm/hooks/useFocusTrap.mjs +61 -24
  303. package/dist/esm/hooks/useFocusTrap.mjs.map +1 -1
  304. package/dist/esm/hooks/useHideOthers.mjs +47 -0
  305. package/dist/esm/hooks/useHideOthers.mjs.map +1 -0
  306. package/dist/esm/hooks/useOutsideClick.mjs +31 -4
  307. package/dist/esm/hooks/useOutsideClick.mjs.map +1 -1
  308. package/dist/esm/icon-button/CloseButton.mjs +23 -0
  309. package/dist/esm/icon-button/CloseButton.mjs.map +1 -0
  310. package/dist/esm/icon-button/IconButton.mjs +6 -1
  311. package/dist/esm/icon-button/IconButton.mjs.map +1 -1
  312. package/dist/esm/icon-button/IconButton.module.css.mjs +1 -1
  313. package/dist/esm/icons/TokenIcon.mjs +2 -0
  314. package/dist/esm/icons/TokenIcon.mjs.map +1 -1
  315. package/dist/esm/identicon/Identicon.mjs +2 -0
  316. package/dist/esm/identicon/Identicon.mjs.map +1 -1
  317. package/dist/esm/index.css +14 -4
  318. package/dist/esm/index.mjs +35 -1
  319. package/dist/esm/index.mjs.map +1 -1
  320. package/dist/esm/info-tooltip/InfoTooltip.mjs +30 -0
  321. package/dist/esm/info-tooltip/InfoTooltip.mjs.map +1 -0
  322. package/dist/esm/info-tooltip/InfoTooltip.module.css.mjs +4 -0
  323. package/dist/esm/info-tooltip/InfoTooltip.module.css.mjs.map +1 -0
  324. package/dist/esm/input/Input.mjs +4 -8
  325. package/dist/esm/input/Input.mjs.map +1 -1
  326. package/dist/esm/input/Input.module.css.mjs +1 -1
  327. package/dist/esm/link-provider/Anchor.mjs +23 -2
  328. package/dist/esm/link-provider/Anchor.mjs.map +1 -1
  329. package/dist/esm/link-provider/LinkProvider.mjs +1 -1
  330. package/dist/esm/link-provider/LinkProvider.mjs.map +1 -1
  331. package/dist/esm/logo/Logo.mjs +9 -1
  332. package/dist/esm/logo/Logo.mjs.map +1 -1
  333. package/dist/esm/message-box/MessageBox.mjs +1 -0
  334. package/dist/esm/message-box/MessageBox.mjs.map +1 -1
  335. package/dist/esm/modal/Modal.mjs +74 -17
  336. package/dist/esm/modal/Modal.mjs.map +1 -1
  337. package/dist/esm/nav-link/NavLink.mjs +6 -4
  338. package/dist/esm/nav-link/NavLink.mjs.map +1 -1
  339. package/dist/esm/notification/Notification.mjs +13 -7
  340. package/dist/esm/notification/Notification.mjs.map +1 -1
  341. package/dist/esm/page-layout/Layout.mjs +21 -0
  342. package/dist/esm/page-layout/Layout.mjs.map +1 -0
  343. package/dist/esm/page-layout/Layout.module.css.mjs +4 -0
  344. package/dist/esm/page-layout/Layout.module.css.mjs.map +1 -0
  345. package/dist/esm/page-layout/Main.mjs +24 -0
  346. package/dist/esm/page-layout/Main.mjs.map +1 -0
  347. package/dist/esm/page-layout/Main.module.css.mjs +4 -0
  348. package/dist/esm/page-layout/Main.module.css.mjs.map +1 -0
  349. package/dist/esm/page-layout/PageContent.mjs +18 -0
  350. package/dist/esm/page-layout/PageContent.mjs.map +1 -0
  351. package/dist/esm/page-layout/PageContent.module.css.mjs +4 -0
  352. package/dist/esm/page-layout/PageContent.module.css.mjs.map +1 -0
  353. package/dist/esm/pagination/Pagination.mjs +12 -7
  354. package/dist/esm/pagination/Pagination.mjs.map +1 -1
  355. package/dist/esm/popover/Popover.mjs +72 -16
  356. package/dist/esm/popover/Popover.mjs.map +1 -1
  357. package/dist/esm/radio-button/RadioButton.mjs +1 -0
  358. package/dist/esm/radio-button/RadioButton.mjs.map +1 -1
  359. package/dist/esm/rich-input/RichInput.mjs +23 -47
  360. package/dist/esm/rich-input/RichInput.mjs.map +1 -1
  361. package/dist/esm/rich-input/RichInput.module.css.mjs +1 -1
  362. package/dist/esm/section-title/SectionTitle.mjs +9 -10
  363. package/dist/esm/section-title/SectionTitle.mjs.map +1 -1
  364. package/dist/esm/section-title/SectionTitle.module.css.mjs +1 -1
  365. package/dist/esm/segmented-control/SegmentedControl.mjs +1 -0
  366. package/dist/esm/segmented-control/SegmentedControl.mjs.map +1 -1
  367. package/dist/esm/segmented-control/SegmentedControlCard.mjs +1 -0
  368. package/dist/esm/segmented-control/SegmentedControlCard.mjs.map +1 -1
  369. package/dist/esm/sidebar/Sidebar.mjs +136 -0
  370. package/dist/esm/sidebar/Sidebar.mjs.map +1 -0
  371. package/dist/esm/sidebar/Sidebar.module.css.mjs +4 -0
  372. package/dist/esm/sidebar/Sidebar.module.css.mjs.map +1 -0
  373. package/dist/esm/sidebar/SidebarContext.mjs +8 -0
  374. package/dist/esm/sidebar/SidebarContext.mjs.map +1 -0
  375. package/dist/esm/sidebar/SidebarGroup.mjs +33 -0
  376. package/dist/esm/sidebar/SidebarGroup.mjs.map +1 -0
  377. package/dist/esm/sidebar/SidebarGroup.module.css.mjs +4 -0
  378. package/dist/esm/sidebar/SidebarGroup.module.css.mjs.map +1 -0
  379. package/dist/esm/sidebar/SidebarInset.mjs +21 -0
  380. package/dist/esm/sidebar/SidebarInset.mjs.map +1 -0
  381. package/dist/esm/sidebar/SidebarInset.module.css.mjs +4 -0
  382. package/dist/esm/sidebar/SidebarInset.module.css.mjs.map +1 -0
  383. package/dist/esm/sidebar/SidebarItem.mjs +38 -0
  384. package/dist/esm/sidebar/SidebarItem.mjs.map +1 -0
  385. package/dist/esm/sidebar/SidebarItem.module.css.mjs +4 -0
  386. package/dist/esm/sidebar/SidebarItem.module.css.mjs.map +1 -0
  387. package/dist/esm/sidebar/SidebarLayout.mjs +37 -0
  388. package/dist/esm/sidebar/SidebarLayout.mjs.map +1 -0
  389. package/dist/esm/sidebar/SidebarLayout.module.css.mjs +4 -0
  390. package/dist/esm/sidebar/SidebarLayout.module.css.mjs.map +1 -0
  391. package/dist/esm/sidebar/SidebarToggle.mjs +40 -0
  392. package/dist/esm/sidebar/SidebarToggle.mjs.map +1 -0
  393. package/dist/esm/sidebar/SidebarToggle.module.css.mjs +4 -0
  394. package/dist/esm/sidebar/SidebarToggle.module.css.mjs.map +1 -0
  395. package/dist/esm/sidebar/useSidebarDrawer.mjs +43 -0
  396. package/dist/esm/sidebar/useSidebarDrawer.mjs.map +1 -0
  397. package/dist/esm/skeleton/Skeleton.mjs +18 -20
  398. package/dist/esm/skeleton/Skeleton.mjs.map +1 -1
  399. package/dist/esm/skip-link/SkipLink.mjs +48 -0
  400. package/dist/esm/skip-link/SkipLink.mjs.map +1 -0
  401. package/dist/esm/skip-link/SkipLink.module.css.mjs +4 -0
  402. package/dist/esm/skip-link/SkipLink.module.css.mjs.map +1 -0
  403. package/dist/esm/slider/Slider.mjs +1 -0
  404. package/dist/esm/slider/Slider.mjs.map +1 -1
  405. package/dist/esm/small-card/SmallCard.mjs +6 -2
  406. package/dist/esm/small-card/SmallCard.mjs.map +1 -1
  407. package/dist/esm/stack/Stack.mjs +28 -9
  408. package/dist/esm/stack/Stack.mjs.map +1 -1
  409. package/dist/esm/stack/Stack.module.css.mjs +1 -1
  410. package/dist/esm/stat-item/StatItem.mjs +4 -8
  411. package/dist/esm/stat-item/StatItem.mjs.map +1 -1
  412. package/dist/esm/stat-item/StatItem.module.css.mjs +1 -1
  413. package/dist/esm/switch/Switch.mjs +1 -0
  414. package/dist/esm/switch/Switch.mjs.map +1 -1
  415. package/dist/esm/tabs/Tabs.mjs +1 -0
  416. package/dist/esm/tabs/Tabs.mjs.map +1 -1
  417. package/dist/esm/tag/Tag.mjs +74 -9
  418. package/dist/esm/tag/Tag.mjs.map +1 -1
  419. package/dist/esm/tag/Tag.module.css.mjs +1 -1
  420. package/dist/esm/text-link/TextLink.mjs +10 -13
  421. package/dist/esm/text-link/TextLink.mjs.map +1 -1
  422. package/dist/esm/text-link/TextLink.module.css.mjs +1 -1
  423. package/dist/esm/theme-switcher/ThemeSwitcher.mjs +14 -6
  424. package/dist/esm/theme-switcher/ThemeSwitcher.mjs.map +1 -1
  425. package/dist/esm/theme-switcher/ThemeSwitcher.module.css.mjs +4 -0
  426. package/dist/esm/theme-switcher/ThemeSwitcher.module.css.mjs.map +1 -0
  427. package/dist/esm/token-amount/TokenAmount.mjs +1 -0
  428. package/dist/esm/token-amount/TokenAmount.mjs.map +1 -1
  429. package/dist/esm/token-selector/TokenSelector.mjs +58 -66
  430. package/dist/esm/token-selector/TokenSelector.mjs.map +1 -1
  431. package/dist/esm/tooltip/Tooltip.mjs +42 -27
  432. package/dist/esm/tooltip/Tooltip.mjs.map +1 -1
  433. package/dist/esm/tx-status/TxStatus.mjs +2 -0
  434. package/dist/esm/tx-status/TxStatus.mjs.map +1 -1
  435. package/dist/esm/typography/Typography.mjs +2 -0
  436. package/dist/esm/typography/Typography.mjs.map +1 -1
  437. package/dist/esm/utils/ActionElement.mjs +2 -13
  438. package/dist/esm/utils/ActionElement.mjs.map +1 -1
  439. package/dist/esm/utils/breakpoints.mjs +19 -0
  440. package/dist/esm/utils/breakpoints.mjs.map +1 -0
  441. package/dist/esm/utils/responsive.mjs +17 -27
  442. package/dist/esm/utils/responsive.mjs.map +1 -1
  443. package/dist/esm/utils/surface.module.css.mjs +4 -0
  444. package/dist/esm/utils/surface.module.css.mjs.map +1 -0
  445. package/dist/index.css +14 -4
  446. package/dist/styles/breakpoints.css +16 -12
  447. package/dist/styles/typography-mixins.css +8 -0
  448. package/dist/types/accordion/Accordion.d.ts +3 -0
  449. package/dist/types/accordion/Accordion.d.ts.map +1 -1
  450. package/dist/types/address/Address.d.ts +16 -0
  451. package/dist/types/address/Address.d.ts.map +1 -0
  452. package/dist/types/address/index.d.ts +3 -0
  453. package/dist/types/address/index.d.ts.map +1 -0
  454. package/dist/types/address-button/AddressButton.d.ts +13 -0
  455. package/dist/types/address-button/AddressButton.d.ts.map +1 -0
  456. package/dist/types/address-button/index.d.ts +3 -0
  457. package/dist/types/address-button/index.d.ts.map +1 -0
  458. package/dist/types/badge/Badge.d.ts +1 -0
  459. package/dist/types/badge/Badge.d.ts.map +1 -1
  460. package/dist/types/banner/Banner.d.ts +1 -0
  461. package/dist/types/banner/Banner.d.ts.map +1 -1
  462. package/dist/types/breadcrumbs/Breadcrumbs.d.ts +17 -1
  463. package/dist/types/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  464. package/dist/types/breadcrumbs/index.d.ts +1 -1
  465. package/dist/types/breadcrumbs/index.d.ts.map +1 -1
  466. package/dist/types/button/Button.d.ts +6 -26
  467. package/dist/types/button/Button.d.ts.map +1 -1
  468. package/dist/types/button/ButtonContent.d.ts +10 -0
  469. package/dist/types/button/ButtonContent.d.ts.map +1 -0
  470. package/dist/types/button/LinkButton.d.ts +10 -0
  471. package/dist/types/button/LinkButton.d.ts.map +1 -0
  472. package/dist/types/button/index.d.ts +2 -0
  473. package/dist/types/button/index.d.ts.map +1 -1
  474. package/dist/types/button/types.d.ts +26 -0
  475. package/dist/types/button/types.d.ts.map +1 -0
  476. package/dist/types/card/Card.d.ts +1 -0
  477. package/dist/types/card/Card.d.ts.map +1 -1
  478. package/dist/types/checkbox/Checkbox.d.ts +3 -0
  479. package/dist/types/checkbox/Checkbox.d.ts.map +1 -1
  480. package/dist/types/colors/colorTokens.d.ts.map +1 -1
  481. package/dist/types/copy/Copy.d.ts +10 -0
  482. package/dist/types/copy/Copy.d.ts.map +1 -0
  483. package/dist/types/copy/index.d.ts +5 -0
  484. package/dist/types/copy/index.d.ts.map +1 -0
  485. package/dist/types/copy/useCopy.d.ts +9 -0
  486. package/dist/types/copy/useCopy.d.ts.map +1 -0
  487. package/dist/types/counter/Counter.d.ts +6 -2
  488. package/dist/types/counter/Counter.d.ts.map +1 -1
  489. package/dist/types/counter/CounterSlot.d.ts +3 -0
  490. package/dist/types/counter/CounterSlot.d.ts.map +1 -1
  491. package/dist/types/data-list/DataList.d.ts +1 -0
  492. package/dist/types/data-list/DataList.d.ts.map +1 -1
  493. package/dist/types/data-list/DataListRow.d.ts +1 -0
  494. package/dist/types/data-list/DataListRow.d.ts.map +1 -1
  495. package/dist/types/disclaimer/Disclaimer.d.ts +9 -2
  496. package/dist/types/disclaimer/Disclaimer.d.ts.map +1 -1
  497. package/dist/types/divider/Divider.d.ts +5 -0
  498. package/dist/types/divider/Divider.d.ts.map +1 -1
  499. package/dist/types/divider/index.d.ts +1 -1
  500. package/dist/types/divider/index.d.ts.map +1 -1
  501. package/dist/types/error-page/ErrorPage.d.ts +17 -4
  502. package/dist/types/error-page/ErrorPage.d.ts.map +1 -1
  503. package/dist/types/footer/Footer.d.ts +17 -2
  504. package/dist/types/footer/Footer.d.ts.map +1 -1
  505. package/dist/types/footer/index.d.ts +1 -1
  506. package/dist/types/footer/index.d.ts.map +1 -1
  507. package/dist/types/grid/Grid.d.ts +21 -22
  508. package/dist/types/grid/Grid.d.ts.map +1 -1
  509. package/dist/types/grid/GridItem.d.ts +14 -10
  510. package/dist/types/grid/GridItem.d.ts.map +1 -1
  511. package/dist/types/grid/index.d.ts +2 -2
  512. package/dist/types/grid/index.d.ts.map +1 -1
  513. package/dist/types/header/Header.d.ts +15 -2
  514. package/dist/types/header/Header.d.ts.map +1 -1
  515. package/dist/types/header/HeaderNav.d.ts +10 -2
  516. package/dist/types/header/HeaderNav.d.ts.map +1 -1
  517. package/dist/types/header/index.d.ts +2 -2
  518. package/dist/types/header/index.d.ts.map +1 -1
  519. package/dist/types/hex/Hex.d.ts +10 -0
  520. package/dist/types/hex/Hex.d.ts.map +1 -0
  521. package/dist/types/hex/index.d.ts +4 -0
  522. package/dist/types/hex/index.d.ts.map +1 -0
  523. package/dist/types/hex/trimHex.d.ts +2 -0
  524. package/dist/types/hex/trimHex.d.ts.map +1 -0
  525. package/dist/types/hidden/Hidden.d.ts +20 -6
  526. package/dist/types/hidden/Hidden.d.ts.map +1 -1
  527. package/dist/types/hidden/index.d.ts +1 -1
  528. package/dist/types/hidden/index.d.ts.map +1 -1
  529. package/dist/types/hooks/Portal.d.ts +2 -5
  530. package/dist/types/hooks/Portal.d.ts.map +1 -1
  531. package/dist/types/hooks/index.d.ts +2 -0
  532. package/dist/types/hooks/index.d.ts.map +1 -1
  533. package/dist/types/hooks/useBodyScrollLock.d.ts +4 -2
  534. package/dist/types/hooks/useBodyScrollLock.d.ts.map +1 -1
  535. package/dist/types/hooks/useEdgeFade.d.ts +7 -0
  536. package/dist/types/hooks/useEdgeFade.d.ts.map +1 -0
  537. package/dist/types/hooks/useEscape.d.ts +4 -2
  538. package/dist/types/hooks/useEscape.d.ts.map +1 -1
  539. package/dist/types/hooks/useFocusTrap.d.ts +7 -3
  540. package/dist/types/hooks/useFocusTrap.d.ts.map +1 -1
  541. package/dist/types/hooks/useHideOthers.d.ts +3 -0
  542. package/dist/types/hooks/useHideOthers.d.ts.map +1 -0
  543. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  544. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  545. package/dist/types/hooks/useOutsideClick.d.ts +4 -2
  546. package/dist/types/hooks/useOutsideClick.d.ts.map +1 -1
  547. package/dist/types/icon-button/CloseButton.d.ts +9 -0
  548. package/dist/types/icon-button/CloseButton.d.ts.map +1 -0
  549. package/dist/types/icon-button/IconButton.d.ts +15 -2
  550. package/dist/types/icon-button/IconButton.d.ts.map +1 -1
  551. package/dist/types/icon-button/index.d.ts +2 -0
  552. package/dist/types/icon-button/index.d.ts.map +1 -1
  553. package/dist/types/icons/TokenIcon.d.ts +1 -0
  554. package/dist/types/icons/TokenIcon.d.ts.map +1 -1
  555. package/dist/types/identicon/Identicon.d.ts +5 -0
  556. package/dist/types/identicon/Identicon.d.ts.map +1 -1
  557. package/dist/types/index.d.ts +13 -0
  558. package/dist/types/index.d.ts.map +1 -1
  559. package/dist/types/info-tooltip/InfoTooltip.d.ts +12 -0
  560. package/dist/types/info-tooltip/InfoTooltip.d.ts.map +1 -0
  561. package/dist/types/info-tooltip/index.d.ts +3 -0
  562. package/dist/types/info-tooltip/index.d.ts.map +1 -0
  563. package/dist/types/input/Input.d.ts +1 -0
  564. package/dist/types/input/Input.d.ts.map +1 -1
  565. package/dist/types/link-provider/Anchor.d.ts +17 -1
  566. package/dist/types/link-provider/Anchor.d.ts.map +1 -1
  567. package/dist/types/link-provider/LinkProvider.d.ts +8 -2
  568. package/dist/types/link-provider/LinkProvider.d.ts.map +1 -1
  569. package/dist/types/link-provider/index.d.ts +1 -1
  570. package/dist/types/link-provider/index.d.ts.map +1 -1
  571. package/dist/types/logo/Logo.d.ts +20 -3
  572. package/dist/types/logo/Logo.d.ts.map +1 -1
  573. package/dist/types/logo/index.d.ts +1 -1
  574. package/dist/types/logo/index.d.ts.map +1 -1
  575. package/dist/types/message-box/MessageBox.d.ts +3 -0
  576. package/dist/types/message-box/MessageBox.d.ts.map +1 -1
  577. package/dist/types/modal/Modal.d.ts +21 -3
  578. package/dist/types/modal/Modal.d.ts.map +1 -1
  579. package/dist/types/modal/index.d.ts +2 -2
  580. package/dist/types/modal/index.d.ts.map +1 -1
  581. package/dist/types/nav-link/NavLink.d.ts +17 -0
  582. package/dist/types/nav-link/NavLink.d.ts.map +1 -1
  583. package/dist/types/nav-link/index.d.ts +1 -1
  584. package/dist/types/nav-link/index.d.ts.map +1 -1
  585. package/dist/types/notification/Notification.d.ts +7 -2
  586. package/dist/types/notification/Notification.d.ts.map +1 -1
  587. package/dist/types/page-layout/Layout.d.ts +5 -0
  588. package/dist/types/page-layout/Layout.d.ts.map +1 -0
  589. package/dist/types/page-layout/Main.d.ts +6 -0
  590. package/dist/types/page-layout/Main.d.ts.map +1 -0
  591. package/dist/types/page-layout/PageContent.d.ts +7 -0
  592. package/dist/types/page-layout/PageContent.d.ts.map +1 -0
  593. package/dist/types/page-layout/index.d.ts +7 -0
  594. package/dist/types/page-layout/index.d.ts.map +1 -0
  595. package/dist/types/pagination/Pagination.d.ts +3 -0
  596. package/dist/types/pagination/Pagination.d.ts.map +1 -1
  597. package/dist/types/popover/Popover.d.ts +32 -4
  598. package/dist/types/popover/Popover.d.ts.map +1 -1
  599. package/dist/types/popover/index.d.ts +1 -1
  600. package/dist/types/popover/index.d.ts.map +1 -1
  601. package/dist/types/radio-button/RadioButton.d.ts +3 -0
  602. package/dist/types/radio-button/RadioButton.d.ts.map +1 -1
  603. package/dist/types/rich-input/RichInput.d.ts +8 -1
  604. package/dist/types/rich-input/RichInput.d.ts.map +1 -1
  605. package/dist/types/section-title/SectionTitle.d.ts +8 -2
  606. package/dist/types/section-title/SectionTitle.d.ts.map +1 -1
  607. package/dist/types/section-title/index.d.ts +1 -1
  608. package/dist/types/section-title/index.d.ts.map +1 -1
  609. package/dist/types/segmented-control/SegmentedControl.d.ts +1 -0
  610. package/dist/types/segmented-control/SegmentedControl.d.ts.map +1 -1
  611. package/dist/types/segmented-control/SegmentedControlCard.d.ts +1 -0
  612. package/dist/types/segmented-control/SegmentedControlCard.d.ts.map +1 -1
  613. package/dist/types/sidebar/Sidebar.d.ts +15 -0
  614. package/dist/types/sidebar/Sidebar.d.ts.map +1 -0
  615. package/dist/types/sidebar/SidebarContext.d.ts +6 -0
  616. package/dist/types/sidebar/SidebarContext.d.ts.map +1 -0
  617. package/dist/types/sidebar/SidebarGroup.d.ts +7 -0
  618. package/dist/types/sidebar/SidebarGroup.d.ts.map +1 -0
  619. package/dist/types/sidebar/SidebarInset.d.ts +5 -0
  620. package/dist/types/sidebar/SidebarInset.d.ts.map +1 -0
  621. package/dist/types/sidebar/SidebarItem.d.ts +10 -0
  622. package/dist/types/sidebar/SidebarItem.d.ts.map +1 -0
  623. package/dist/types/sidebar/SidebarLayout.d.ts +18 -0
  624. package/dist/types/sidebar/SidebarLayout.d.ts.map +1 -0
  625. package/dist/types/sidebar/SidebarToggle.d.ts +13 -0
  626. package/dist/types/sidebar/SidebarToggle.d.ts.map +1 -0
  627. package/dist/types/sidebar/index.d.ts +17 -0
  628. package/dist/types/sidebar/index.d.ts.map +1 -0
  629. package/dist/types/sidebar/useSidebarDrawer.d.ts +23 -0
  630. package/dist/types/sidebar/useSidebarDrawer.d.ts.map +1 -0
  631. package/dist/types/skeleton/Skeleton.d.ts +17 -3
  632. package/dist/types/skeleton/Skeleton.d.ts.map +1 -1
  633. package/dist/types/skip-link/SkipLink.d.ts +11 -0
  634. package/dist/types/skip-link/SkipLink.d.ts.map +1 -0
  635. package/dist/types/skip-link/index.d.ts +3 -0
  636. package/dist/types/skip-link/index.d.ts.map +1 -0
  637. package/dist/types/slider/Slider.d.ts +1 -0
  638. package/dist/types/slider/Slider.d.ts.map +1 -1
  639. package/dist/types/small-card/SmallCard.d.ts +21 -2
  640. package/dist/types/small-card/SmallCard.d.ts.map +1 -1
  641. package/dist/types/stack/Stack.d.ts +24 -15
  642. package/dist/types/stack/Stack.d.ts.map +1 -1
  643. package/dist/types/stack/index.d.ts +1 -1
  644. package/dist/types/stack/index.d.ts.map +1 -1
  645. package/dist/types/stat-item/StatItem.d.ts +6 -0
  646. package/dist/types/stat-item/StatItem.d.ts.map +1 -1
  647. package/dist/types/switch/Switch.d.ts +3 -0
  648. package/dist/types/switch/Switch.d.ts.map +1 -1
  649. package/dist/types/tabs/Tabs.d.ts +1 -0
  650. package/dist/types/tabs/Tabs.d.ts.map +1 -1
  651. package/dist/types/tag/Tag.d.ts +31 -3
  652. package/dist/types/tag/Tag.d.ts.map +1 -1
  653. package/dist/types/text-link/TextLink.d.ts +25 -2
  654. package/dist/types/text-link/TextLink.d.ts.map +1 -1
  655. package/dist/types/text-link/index.d.ts +1 -1
  656. package/dist/types/text-link/index.d.ts.map +1 -1
  657. package/dist/types/theme-switcher/ThemeSwitcher.d.ts +9 -3
  658. package/dist/types/theme-switcher/ThemeSwitcher.d.ts.map +1 -1
  659. package/dist/types/token-amount/TokenAmount.d.ts +1 -0
  660. package/dist/types/token-amount/TokenAmount.d.ts.map +1 -1
  661. package/dist/types/token-selector/TokenSelector.d.ts +5 -1
  662. package/dist/types/token-selector/TokenSelector.d.ts.map +1 -1
  663. package/dist/types/tooltip/Tooltip.d.ts +2 -0
  664. package/dist/types/tooltip/Tooltip.d.ts.map +1 -1
  665. package/dist/types/tx-status/TxStatus.d.ts +3 -0
  666. package/dist/types/tx-status/TxStatus.d.ts.map +1 -1
  667. package/dist/types/typography/Typography.d.ts +4 -0
  668. package/dist/types/typography/Typography.d.ts.map +1 -1
  669. package/dist/types/utils/ActionElement.d.ts +4 -4
  670. package/dist/types/utils/ActionElement.d.ts.map +1 -1
  671. package/dist/types/utils/breakpoints.d.ts +16 -0
  672. package/dist/types/utils/breakpoints.d.ts.map +1 -0
  673. package/dist/types/utils/index.d.ts +5 -2
  674. package/dist/types/utils/index.d.ts.map +1 -1
  675. package/dist/types/utils/polymorphic.d.ts +15 -0
  676. package/dist/types/utils/polymorphic.d.ts.map +1 -0
  677. package/dist/types/utils/responsive.d.ts +29 -14
  678. package/dist/types/utils/responsive.d.ts.map +1 -1
  679. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoTooltip.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -6,9 +6,9 @@ const react = require('react');
6
6
  const cn = require('classnames');
7
7
  const Input_module = require('./Input.module.css.cjs');
8
8
  const jsxRuntime = require('react/jsx-runtime');
9
- const Tooltip = require('../tooltip/Tooltip.cjs');
10
- const IconInfo = require('../icons/components/base/IconInfo.cjs');
9
+ const InfoTooltip = require('../info-tooltip/InfoTooltip.cjs');
11
10
 
11
+ /** Bordered text field; `icon` adds a leading icon, `label`/`description`/`error` add the field chrome, `tooltip` puts an info icon next to the label. */
12
12
  const Input = /*#__PURE__*/react.forwardRef((_ref, ref) => {
13
13
  let {
14
14
  size = 'default',
@@ -39,12 +39,8 @@ const Input = /*#__PURE__*/react.forwardRef((_ref, ref) => {
39
39
  htmlFor: inputId,
40
40
  "data-testid": dataTestId?.label,
41
41
  children: label
42
- }), tooltip != null ? /*#__PURE__*/jsxRuntime.jsx(Tooltip.Tooltip, {
43
- content: tooltip,
44
- children: /*#__PURE__*/jsxRuntime.jsx(IconInfo.IconInfo, {
45
- className: Input_module.tooltipIcon,
46
- "aria-hidden": "true"
47
- })
42
+ }), tooltip != null ? /*#__PURE__*/jsxRuntime.jsx(InfoTooltip.InfoTooltip, {
43
+ content: tooltip
48
44
  }) : null]
49
45
  }) : null, /*#__PURE__*/jsxRuntime.jsxs("label", {
50
46
  className: cn(Input_module.root, Input_module[size], {
@@ -1 +1 @@
1
- {"version":3,"file":"Input.cjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { IconInfo } from '../icons'\nimport { Tooltip } from '../tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputDataTestId = {\n root?: string\n label?: string\n icon?: string\n input?: string\n error?: string\n description?: string\n}\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n dataTestId?: InputDataTestId\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div\n className={cn(styles.field, className)}\n data-testid={dataTestId?.root}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n className={styles.label}\n htmlFor={inputId}\n data-testid={dataTestId?.label}\n >\n {label}\n </label>\n {tooltip != null ? (\n <Tooltip content={tooltip}>\n <IconInfo className={styles.tooltipIcon} aria-hidden='true' />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n data-testid={dataTestId?.input}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p\n id={errorId}\n className={styles.errorText}\n role='alert'\n data-testid={dataTestId?.error}\n >\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","dataTestId","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","root","children","labelRow","_jsx","htmlFor","Tooltip","content","IconInfo","tooltipIcon","input","undefined","errorText","role","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Input.cjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { InfoTooltip } from '../info-tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputDataTestId = {\n root?: string\n label?: string\n icon?: string\n input?: string\n error?: string\n description?: string\n}\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n dataTestId?: InputDataTestId\n}\n\n/** Bordered text field; `icon` adds a leading icon, `label`/`description`/`error` add the field chrome, `tooltip` puts an info icon next to the label. */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div\n className={cn(styles.field, className)}\n data-testid={dataTestId?.root}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n className={styles.label}\n htmlFor={inputId}\n data-testid={dataTestId?.label}\n >\n {label}\n </label>\n {tooltip != null ? <InfoTooltip content={tooltip} /> : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n data-testid={dataTestId?.input}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p\n id={errorId}\n className={styles.errorText}\n role='alert'\n data-testid={dataTestId?.error}\n >\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","dataTestId","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","root","children","labelRow","_jsx","htmlFor","InfoTooltip","content","input","undefined","errorText","role","displayName"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const styles = {"field":"Input-module_field__INC-m","labelRow":"Input-module_labelRow__AT-Kg","label":"Input-module_label__1UZiS","tooltipIcon":"Input-module_tooltipIcon__W8NYt","root":"Input-module_root__zCKm2","input":"Input-module_input__paElZ","error":"Input-module_error__kcS-O","disabled":"Input-module_disabled__fbybp","default":"Input-module_default__UeWH5","small":"Input-module_small__ESlJP","icon":"Input-module_icon__2IBf9","errorText":"Input-module_errorText__jYCqP","description":"Input-module_description__EVlJm"};
3
+ const styles = {"field":"Input-module_field__INC-m","labelRow":"Input-module_labelRow__AT-Kg","label":"Input-module_label__1UZiS","root":"Input-module_root__zCKm2","input":"Input-module_input__paElZ","error":"Input-module_error__kcS-O","disabled":"Input-module_disabled__fbybp","default":"Input-module_default__UeWH5","small":"Input-module_small__ESlJP","icon":"Input-module_icon__2IBf9","errorText":"Input-module_errorText__jYCqP","description":"Input-module_description__EVlJm"};
4
4
 
5
5
  module.exports = styles;
6
6
  //# sourceMappingURL=Input.module.css.cjs.map
@@ -17,13 +17,33 @@ const pickLink = (_ref, href, _ref2) => {
17
17
  download
18
18
  } = _ref2;
19
19
  if (ABSOLUTE_URL.test(href)) return externalComponent;
20
- if (href.startsWith('#') || target && target !== '_self' || download !== undefined) return undefined;
20
+ if (href.startsWith('#') || target && target !== '_self' || download != null && download !== false) return undefined;
21
21
  return component;
22
22
  };
23
23
 
24
24
  /** `<a>` that hands in-app hrefs to `LinkProvider`'s `component` and absolute URLs to its `externalComponent`. */
25
- const Anchor = /*#__PURE__*/react.forwardRef((props, ref) => {
25
+ const Anchor = /*#__PURE__*/react.forwardRef((_ref3, ref) => {
26
+ let {
27
+ external,
28
+ disabled,
29
+ linkProps,
30
+ ...rest
31
+ } = _ref3;
26
32
  const links = LinkProvider.useLinkComponents();
33
+ const props = {
34
+ ...rest,
35
+ ...(external && {
36
+ target: rest.target ?? '_blank',
37
+ rel: rest.rel ?? 'noopener noreferrer'
38
+ }),
39
+ ...(disabled && {
40
+ href: undefined,
41
+ onClick: undefined,
42
+ tabIndex: undefined,
43
+ role: rest.role ?? 'link',
44
+ 'aria-disabled': true
45
+ })
46
+ };
27
47
  const {
28
48
  href
29
49
  } = props;
@@ -32,6 +52,7 @@ const Anchor = /*#__PURE__*/react.forwardRef((props, ref) => {
32
52
  if (Link) return /*#__PURE__*/jsxRuntime.jsx(Link, {
33
53
  ref: ref,
34
54
  ...props,
55
+ ...linkProps,
35
56
  href: href
36
57
  });
37
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Anchor.cjs","sources":["../../../src/link-provider/Anchor.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes } from 'react'\n\nimport { useLinkComponents, type LinkComponents } from './LinkProvider'\n\nconst ABSOLUTE_URL = /^([a-z][a-z\\d+.-]*:|\\/\\/)/i\n\nconst pickLink = (\n { component, externalComponent }: LinkComponents,\n href: string,\n { target, download }: AnchorHTMLAttributes<HTMLAnchorElement>,\n) => {\n if (ABSOLUTE_URL.test(href)) return externalComponent\n if (\n href.startsWith('#') ||\n (target && target !== '_self') ||\n download !== undefined\n )\n return undefined\n return component\n}\n\n/** `<a>` that hands in-app hrefs to `LinkProvider`'s `component` and absolute URLs to its `externalComponent`. */\nexport const Anchor = forwardRef<\n HTMLAnchorElement,\n AnchorHTMLAttributes<HTMLAnchorElement>\n>((props, ref) => {\n const links = useLinkComponents()\n const { href } = props\n\n if (href !== undefined) {\n const Link = pickLink(links, href, props)\n if (Link) return <Link ref={ref} {...props} href={href} />\n }\n\n // eslint-disable-next-line jsx-a11y/anchor-has-content -- children arrive via props\n return <a ref={ref} {...props} />\n})\n\nAnchor.displayName = 'Anchor'\n"],"names":["ABSOLUTE_URL","pickLink","_ref","href","_ref2","component","externalComponent","target","download","test","startsWith","undefined","Anchor","forwardRef","props","ref","links","useLinkComponents","Link","_jsx","displayName"],"mappings":";;;;;;;;AAIA,MAAMA,YAAY,GAAG,4BAA4B,CAAA;AAEjD,MAAMC,QAAQ,GAAGA,CAAAC,IAAA,EAEfC,IAAY,EAAAC,KAAA,KAET;EAAA,IAHH;IAAEC,SAAS;AAAEC,IAAAA,iBAAAA;AAAkC,GAAC,GAAAJ,IAAA,CAAA;EAAA,IAEhD;IAAEK,MAAM;AAAEC,IAAAA,QAAAA;AAAkD,GAAC,GAAAJ,KAAA,CAAA;EAE7D,IAAIJ,YAAY,CAACS,IAAI,CAACN,IAAI,CAAC,EAAE,OAAOG,iBAAiB,CAAA;AACrD,EAAA,IACEH,IAAI,CAACO,UAAU,CAAC,GAAG,CAAC,IACnBH,MAAM,IAAIA,MAAM,KAAK,OAAQ,IAC9BC,QAAQ,KAAKG,SAAS,EAEtB,OAAOA,SAAS,CAAA;AAClB,EAAA,OAAON,SAAS,CAAA;AAClB,CAAC,CAAA;;AAED;AACO,MAAMO,MAAM,gBAAGC,gBAAU,CAG9B,CAACC,KAAK,EAAEC,GAAG,KAAK;AAChB,EAAA,MAAMC,KAAK,GAAGC,8BAAiB,EAAE,CAAA;EACjC,MAAM;AAAEd,IAAAA,IAAAA;AAAK,GAAC,GAAGW,KAAK,CAAA;EAEtB,IAAIX,IAAI,KAAKQ,SAAS,EAAE;IACtB,MAAMO,IAAI,GAAGjB,QAAQ,CAACe,KAAK,EAAEb,IAAI,EAAEW,KAAK,CAAC,CAAA;AACzC,IAAA,IAAII,IAAI,EAAE,oBAAOC,cAAA,CAACD,IAAI,EAAA;AAACH,MAAAA,GAAG,EAAEA,GAAI;AAAA,MAAA,GAAKD,KAAK;AAAEX,MAAAA,IAAI,EAAEA,IAAAA;AAAK,KAAE,CAAC,CAAA;AAC5D,GAAA;;AAEA;AACA,EAAA,oBAAOgB,cAAA,CAAA,GAAA,EAAA;AAAGJ,IAAAA,GAAG,EAAEA,GAAI;IAAA,GAAKD,KAAAA;AAAK,GAAG,CAAC,CAAA;AACnC,CAAC,EAAC;AAEFF,MAAM,CAACQ,WAAW,GAAG,QAAQ;;;;"}
1
+ {"version":3,"file":"Anchor.cjs","sources":["../../../src/link-provider/Anchor.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes } from 'react'\n\nimport {\n useLinkComponents,\n type LinkComponents,\n type LinkRouterProps,\n} from './LinkProvider'\n\nconst ABSOLUTE_URL = /^([a-z][a-z\\d+.-]*:|\\/\\/)/i\n\nexport type AnchorProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n /** Opens in a new tab: defaults `target` to `_blank` and `rel` to `noopener noreferrer`; an explicit `rel` wins. */\n external?: boolean\n /** Renders an href-less `role='link'` with `aria-disabled`, and drops `onClick`. */\n disabled?: boolean\n /** Router-only props (e.g. `prefetch`), passed to `LinkProvider` components and never to a plain `<a>`. */\n linkProps?: LinkRouterProps\n}\n\nconst pickLink = (\n { component, externalComponent }: LinkComponents,\n href: string,\n { target, download }: AnchorHTMLAttributes<HTMLAnchorElement>,\n) => {\n if (ABSOLUTE_URL.test(href)) return externalComponent\n if (\n href.startsWith('#') ||\n (target && target !== '_self') ||\n (download != null && download !== false)\n )\n return undefined\n return component\n}\n\n/** `<a>` that hands in-app hrefs to `LinkProvider`'s `component` and absolute URLs to its `externalComponent`. */\nexport const Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(\n ({ external, disabled, linkProps, ...rest }, ref) => {\n const links = useLinkComponents()\n const props: AnchorHTMLAttributes<HTMLAnchorElement> = {\n ...rest,\n ...(external && {\n target: rest.target ?? '_blank',\n rel: rest.rel ?? 'noopener noreferrer',\n }),\n ...(disabled && {\n href: undefined,\n onClick: undefined,\n tabIndex: undefined,\n role: rest.role ?? 'link',\n 'aria-disabled': true,\n }),\n }\n const { href } = props\n\n if (href !== undefined) {\n const Link = pickLink(links, href, props)\n if (Link) return <Link ref={ref} {...props} {...linkProps} href={href} />\n }\n\n // eslint-disable-next-line jsx-a11y/anchor-has-content -- children arrive via props\n return <a ref={ref} {...props} />\n },\n)\n\nAnchor.displayName = 'Anchor'\n"],"names":["ABSOLUTE_URL","pickLink","_ref","href","_ref2","component","externalComponent","target","download","test","startsWith","undefined","Anchor","forwardRef","_ref3","ref","external","disabled","linkProps","rest","links","useLinkComponents","props","rel","onClick","tabIndex","role","Link","_jsx","displayName"],"mappings":";;;;;;;;AAQA,MAAMA,YAAY,GAAG,4BAA4B,CAAA;AAWjD,MAAMC,QAAQ,GAAGA,CAAAC,IAAA,EAEfC,IAAY,EAAAC,KAAA,KAET;EAAA,IAHH;IAAEC,SAAS;AAAEC,IAAAA,iBAAAA;AAAkC,GAAC,GAAAJ,IAAA,CAAA;EAAA,IAEhD;IAAEK,MAAM;AAAEC,IAAAA,QAAAA;AAAkD,GAAC,GAAAJ,KAAA,CAAA;EAE7D,IAAIJ,YAAY,CAACS,IAAI,CAACN,IAAI,CAAC,EAAE,OAAOG,iBAAiB,CAAA;EACrD,IACEH,IAAI,CAACO,UAAU,CAAC,GAAG,CAAC,IACnBH,MAAM,IAAIA,MAAM,KAAK,OAAQ,IAC7BC,QAAQ,IAAI,IAAI,IAAIA,QAAQ,KAAK,KAAM,EAExC,OAAOG,SAAS,CAAA;AAClB,EAAA,OAAON,SAAS,CAAA;AAClB,CAAC,CAAA;;AAED;AACO,MAAMO,MAAM,gBAAGC,gBAAU,CAC9B,CAAAC,KAAA,EAA6CC,GAAG,KAAK;EAAA,IAApD;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,SAAS;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAL,KAAA,CAAA;AACzC,EAAA,MAAMM,KAAK,GAAGC,8BAAiB,EAAE,CAAA;AACjC,EAAA,MAAMC,KAA8C,GAAG;AACrD,IAAA,GAAGH,IAAI;AACP,IAAA,IAAIH,QAAQ,IAAI;AACdT,MAAAA,MAAM,EAAEY,IAAI,CAACZ,MAAM,IAAI,QAAQ;AAC/BgB,MAAAA,GAAG,EAAEJ,IAAI,CAACI,GAAG,IAAI,qBAAA;AACnB,KAAC,CAAC;AACF,IAAA,IAAIN,QAAQ,IAAI;AACdd,MAAAA,IAAI,EAAEQ,SAAS;AACfa,MAAAA,OAAO,EAAEb,SAAS;AAClBc,MAAAA,QAAQ,EAAEd,SAAS;AACnBe,MAAAA,IAAI,EAAEP,IAAI,CAACO,IAAI,IAAI,MAAM;AACzB,MAAA,eAAe,EAAE,IAAA;KAClB,CAAA;GACF,CAAA;EACD,MAAM;AAAEvB,IAAAA,IAAAA;AAAK,GAAC,GAAGmB,KAAK,CAAA;EAEtB,IAAInB,IAAI,KAAKQ,SAAS,EAAE;IACtB,MAAMgB,IAAI,GAAG1B,QAAQ,CAACmB,KAAK,EAAEjB,IAAI,EAAEmB,KAAK,CAAC,CAAA;AACzC,IAAA,IAAIK,IAAI,EAAE,oBAAOC,cAAA,CAACD,IAAI,EAAA;AAACZ,MAAAA,GAAG,EAAEA,GAAI;AAAA,MAAA,GAAKO,KAAK;AAAA,MAAA,GAAMJ,SAAS;AAAEf,MAAAA,IAAI,EAAEA,IAAAA;AAAK,KAAE,CAAC,CAAA;AAC3E,GAAA;;AAEA;AACA,EAAA,oBAAOyB,cAAA,CAAA,GAAA,EAAA;AAAGb,IAAAA,GAAG,EAAEA,GAAI;IAAA,GAAKO,KAAAA;AAAK,GAAG,CAAC,CAAA;AACnC,CACF,EAAC;AAEDV,MAAM,CAACiB,WAAW,GAAG,QAAQ;;;;"}
@@ -6,7 +6,7 @@ const react = require('react');
6
6
  const jsxRuntime = require('react/jsx-runtime');
7
7
 
8
8
  const LinkContext = /*#__PURE__*/react.createContext({});
9
- /** Renders app-ui links with your components: `component` for in-app hrefs (e.g. Next.js `Link`), `externalComponent` for absolute URLs; both must forward `ref` to an `<a>`. Pass stable references (module-level, not inline functions): inline ones remount every link on each render. */
9
+ /** Renders app-ui links with your components: `component` for in-app hrefs (e.g. Next.js `Link`), `externalComponent` for absolute URLs; both must be `forwardRef` components that forward `ref` to an `<a>`. Pass stable references (module-level, not inline functions): inline ones remount every link on each render. In-app hash links, `download` links and non-`_self` `target` links stay a plain `<a>`; absolute URLs always go to `externalComponent` when set. `TextLink`, `NavLink`, `SmallCard`, `LinkButton`, `Tag`, `Breadcrumbs` items and `Logo` with `href` use it. */
10
10
  const LinkProvider = _ref => {
11
11
  let {
12
12
  component,
@@ -1 +1 @@
1
- {"version":3,"file":"LinkProvider.cjs","sources":["../../../src/link-provider/LinkProvider.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useMemo,\n type AnchorHTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react'\n\nexport type LinkComponentProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string\n ref?: Ref<HTMLAnchorElement>\n}\n\nexport type LinkComponent = (props: LinkComponentProps) => ReactNode\n\nexport type LinkComponents = {\n component?: LinkComponent\n externalComponent?: LinkComponent\n}\n\nconst LinkContext = createContext<LinkComponents>({})\n\nexport type LinkProviderProps = LinkComponents & {\n children?: ReactNode\n}\n\n/** Renders app-ui links with your components: `component` for in-app hrefs (e.g. Next.js `Link`), `externalComponent` for absolute URLs; both must forward `ref` to an `<a>`. Pass stable references (module-level, not inline functions): inline ones remount every link on each render. */\nexport const LinkProvider = ({\n component,\n externalComponent,\n children,\n}: LinkProviderProps) => {\n const value = useMemo(\n () => ({ component, externalComponent }),\n [component, externalComponent],\n )\n return <LinkContext.Provider value={value}>{children}</LinkContext.Provider>\n}\n\nexport const useLinkComponents = () => useContext(LinkContext)\n"],"names":["LinkContext","createContext","LinkProvider","_ref","component","externalComponent","children","value","useMemo","_jsx","Provider","useLinkComponents","useContext"],"mappings":";;;;;;;AAqBA,MAAMA,WAAW,gBAAGC,mBAAa,CAAiB,EAAE,CAAC,CAAA;AAMrD;AACaC,MAAAA,YAAY,GAAGC,IAAA,IAIH;EAAA,IAJI;IAC3BC,SAAS;IACTC,iBAAiB;AACjBC,IAAAA,QAAAA;AACiB,GAAC,GAAAH,IAAA,CAAA;AAClB,EAAA,MAAMI,KAAK,GAAGC,aAAO,CACnB,OAAO;IAAEJ,SAAS;AAAEC,IAAAA,iBAAAA;AAAkB,GAAC,CAAC,EACxC,CAACD,SAAS,EAAEC,iBAAiB,CAC/B,CAAC,CAAA;AACD,EAAA,oBAAOI,cAAA,CAACT,WAAW,CAACU,QAAQ,EAAA;AAACH,IAAAA,KAAK,EAAEA,KAAM;AAAAD,IAAAA,QAAA,EAAEA,QAAAA;AAAQ,GAAuB,CAAC,CAAA;AAC9E,EAAC;AAEM,MAAMK,iBAAiB,GAAGA,MAAMC,gBAAU,CAACZ,WAAW;;;;;"}
1
+ {"version":3,"file":"LinkProvider.cjs","sources":["../../../src/link-provider/LinkProvider.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useMemo,\n type AnchorHTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react'\n\n/** Augment via `declare module '@lidofinance/lido-app-ui'` to type router-only props (e.g. Next's `prefetch`), set per link with `linkProps`. */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface LinkRouterProps {}\n\nexport type LinkComponentProps = AnchorHTMLAttributes<HTMLAnchorElement> &\n LinkRouterProps & {\n href: string\n ref?: Ref<HTMLAnchorElement>\n }\n\n/** Wrap adapters in `forwardRef`: under React 18 `ref` arrives as the second argument, never as a prop. */\nexport type LinkComponent = (props: LinkComponentProps) => ReactNode\n\nexport type LinkComponents = {\n /** Renders in-app hrefs (relative, not hash, `download` or non-`_self` `target`). */\n component?: LinkComponent\n /** Renders absolute URLs, including `mailto:` and protocol-relative `//`. */\n externalComponent?: LinkComponent\n}\n\nconst LinkContext = createContext<LinkComponents>({})\n\nexport type LinkProviderProps = LinkComponents & {\n children?: ReactNode\n}\n\n/** Renders app-ui links with your components: `component` for in-app hrefs (e.g. Next.js `Link`), `externalComponent` for absolute URLs; both must be `forwardRef` components that forward `ref` to an `<a>`. Pass stable references (module-level, not inline functions): inline ones remount every link on each render. In-app hash links, `download` links and non-`_self` `target` links stay a plain `<a>`; absolute URLs always go to `externalComponent` when set. `TextLink`, `NavLink`, `SmallCard`, `LinkButton`, `Tag`, `Breadcrumbs` items and `Logo` with `href` use it. */\nexport const LinkProvider = ({\n component,\n externalComponent,\n children,\n}: LinkProviderProps) => {\n const value = useMemo(\n () => ({ component, externalComponent }),\n [component, externalComponent],\n )\n return <LinkContext.Provider value={value}>{children}</LinkContext.Provider>\n}\n\nexport const useLinkComponents = () => useContext(LinkContext)\n"],"names":["LinkContext","createContext","LinkProvider","_ref","component","externalComponent","children","value","useMemo","_jsx","Provider","useLinkComponents","useContext"],"mappings":";;;;;;;AA6BA,MAAMA,WAAW,gBAAGC,mBAAa,CAAiB,EAAE,CAAC,CAAA;AAMrD;AACaC,MAAAA,YAAY,GAAGC,IAAA,IAIH;EAAA,IAJI;IAC3BC,SAAS;IACTC,iBAAiB;AACjBC,IAAAA,QAAAA;AACiB,GAAC,GAAAH,IAAA,CAAA;AAClB,EAAA,MAAMI,KAAK,GAAGC,aAAO,CACnB,OAAO;IAAEJ,SAAS;AAAEC,IAAAA,iBAAAA;AAAkB,GAAC,CAAC,EACxC,CAACD,SAAS,EAAEC,iBAAiB,CAC/B,CAAC,CAAA;AACD,EAAA,oBAAOI,cAAA,CAACT,WAAW,CAACU,QAAQ,EAAA;AAACH,IAAAA,KAAK,EAAEA,KAAM;AAAAD,IAAAA,QAAA,EAAEA,QAAAA;AAAQ,GAAuB,CAAC,CAAA;AAC9E,EAAC;AAEM,MAAMK,iBAAiB,GAAGA,MAAMC,gBAAU,CAACZ,WAAW;;;;;"}
@@ -33,13 +33,17 @@ const WORDMARK = /*#__PURE__*/jsxRuntime.jsx("span", {
33
33
  })
34
34
  })
35
35
  });
36
+
37
+ /** Lido droplet with wordmark and an optional product name. */
36
38
  const Logo = /*#__PURE__*/react.forwardRef((_ref, ref) => {
37
39
  let {
38
40
  variant = 'full',
39
41
  product,
40
42
  href,
43
+ external,
41
44
  onClick,
42
45
  className,
46
+ dataTestId,
43
47
  ...rest
44
48
  } = _ref;
45
49
  const label = product ? `Lido ${product}` : 'Lido';
@@ -53,6 +57,7 @@ const Logo = /*#__PURE__*/react.forwardRef((_ref, ref) => {
53
57
  "aria-hidden": "true"
54
58
  }), /*#__PURE__*/jsxRuntime.jsx("span", {
55
59
  className: Logo_module.product,
60
+ "data-testid": dataTestId?.product,
56
61
  children: product
57
62
  })]
58
63
  }) : null]
@@ -63,7 +68,9 @@ const Logo = /*#__PURE__*/react.forwardRef((_ref, ref) => {
63
68
  ref: ref,
64
69
  className: cn(classes, Logo_module.interactive),
65
70
  "aria-label": label,
71
+ "data-testid": dataTestId?.root,
66
72
  href,
73
+ external: href ? external : undefined,
67
74
  onClick,
68
75
  ...rest,
69
76
  children: content
@@ -74,6 +81,7 @@ const Logo = /*#__PURE__*/react.forwardRef((_ref, ref) => {
74
81
  role: "img",
75
82
  "aria-label": label,
76
83
  className: classes,
84
+ "data-testid": dataTestId?.root,
77
85
  ...rest,
78
86
  children: content
79
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Logo.cjs","sources":["../../../src/logo/Logo.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type Ref } from 'react'\n\nimport cn from 'classnames'\n\nimport { ActionElement, type ActionElementProps } from '../utils'\nimport styles from './Logo.module.css'\n\nexport type LogoVariant = 'full' | 'compact' | 'auto'\n\nexport type LogoProps = Omit<HTMLAttributes<HTMLElement>, 'children'> & {\n variant?: LogoVariant\n product?: string\n href?: string\n}\n\nconst DROPLET = (\n <svg\n className={styles.droplet}\n viewBox='38 26 23 32'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M49.485 26L57.6 38.398l-8.116 4.613-8.117-4.613L49.485 26zM43.85 37.81l5.634-8.602 5.633 8.601-5.633 3.201-5.634-3.2z'\n />\n <path d='M49.478 45.736l-9.416-5.35-.255.39c-2.896 4.428-2.25 10.226 1.554 13.945 4.48 4.372 11.747 4.372 16.233 0 3.812-3.719 4.458-9.517 1.554-13.945l-.254-.39-9.416 5.35z' />\n </svg>\n)\n\nconst WORDMARK = (\n <span className={styles.wordmark}>\n <svg\n className={styles.wordmarkSvg}\n viewBox='61 26 101 32'\n fill='currentColor'\n aria-hidden='true'\n >\n <path d='M90.17 50.449H79.462V33.551h3.267v13.917h7.441v2.981zm16.422 0h-3.267V33.551h3.267V50.45zm13.242 0V33.551h5.597c.85 0 1.54.029 2.062.093 1.351.156 2.519.624 3.492 1.398.988.773 1.735 1.767 2.244 2.98.515 1.207.769 2.534.769 3.982 0 1.448-.254 2.775-.769 3.988-.516 1.207-1.264 2.193-2.244 2.967-.98.773-2.141 1.242-3.492 1.398-.53.064-1.219.092-2.062.092h-5.597zm5.597-3.002c.85 0 1.474-.043 1.873-.12a3.218 3.218 0 001.801-1.001 5.002 5.002 0 001.082-1.923 7.97 7.97 0 00.363-2.406 7.96 7.96 0 00-.371-2.442c-.239-.76-.602-1.398-1.096-1.916a3.123 3.123 0 00-1.779-.972c-.399-.078-1.023-.12-1.873-.12h-2.279V47.44h2.279v.007zm28.191 3.357c-1.707 0-3.188-.362-4.458-1.093a7.432 7.432 0 01-2.919-3.102c-.675-1.327-1.009-2.867-1.009-4.613 0-1.745.334-3.285 1.009-4.613.683-1.327 1.656-2.356 2.919-3.087 1.263-.738 2.751-1.1 4.458-1.1 1.706 0 3.187.37 4.457 1.1a7.27 7.27 0 012.904 3.087c.683 1.328 1.024 2.868 1.024 4.613 0 1.746-.341 3.286-1.024 4.613-.675 1.328-1.641 2.364-2.904 3.102-1.263.73-2.751 1.093-4.457 1.093zm.094-3.002c1.06 0 1.946-.242 2.664-.717.719-.476 1.264-1.15 1.619-2.016.363-.865.538-1.887.538-3.065 0-1.817-.422-3.237-1.271-4.259-.849-1.021-2.098-1.54-3.746-1.54-1.06 0-1.946.242-2.664.717-.719.476-1.264 1.15-1.619 2.016-.363.865-.538 1.887-.538 3.066 0 1.816.421 3.236 1.271 4.258.849 1.022 2.098 1.54 3.746 1.54z' />\n </svg>\n </span>\n)\n\nexport const Logo = forwardRef<HTMLElement, LogoProps>(\n ({ variant = 'full', product, href, onClick, className, ...rest }, ref) => {\n const label = product ? `Lido ${product}` : 'Lido'\n const content = (\n <>\n <span className={styles.mark}>\n {DROPLET}\n {variant === 'compact' ? null : WORDMARK}\n </span>\n {product ? (\n <>\n <span className={styles.divider} aria-hidden='true' />\n <span className={styles.product}>{product}</span>\n </>\n ) : null}\n </>\n )\n const classes = cn(styles.root, styles[variant], className)\n\n if (href || onClick) {\n return (\n <ActionElement\n ref={ref as Ref<HTMLAnchorElement | HTMLButtonElement>}\n className={cn(classes, styles.interactive)}\n aria-label={label}\n {...({ href, onClick, ...rest } as ActionElementProps)}\n >\n {content}\n </ActionElement>\n )\n }\n\n return (\n <span\n ref={ref as Ref<HTMLSpanElement>}\n role='img'\n aria-label={label}\n className={classes}\n {...rest}\n >\n {content}\n </span>\n )\n },\n)\n\nLogo.displayName = 'Logo'\n"],"names":["DROPLET","_jsxs","className","styles","droplet","viewBox","fill","children","_jsx","fillRule","clipRule","d","WORDMARK","wordmark","wordmarkSvg","Logo","forwardRef","_ref","ref","variant","product","href","onClick","rest","label","content","_Fragment","mark","divider","classes","cn","root","ActionElement","interactive","role","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Logo.cjs","sources":["../../../src/logo/Logo.tsx"],"sourcesContent":["import {\n forwardRef,\n type AnchorHTMLAttributes,\n type HTMLAttributes,\n type Ref,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { ActionElement } from '../utils'\nimport styles from './Logo.module.css'\n\nexport type LogoVariant = 'full' | 'compact' | 'auto'\n\nexport type LogoDataTestId = { root?: string; product?: string }\n\nexport type LogoProps = Omit<HTMLAttributes<HTMLElement>, 'children'> &\n Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'target' | 'download'> & {\n /** `full` shows the wordmark, `compact` drops it, `auto` drops it below `--lido-app-ui-breakpoint-logo` (1024px), overridable per instance with `--lido-app-ui-logo-breakpoint`. */\n variant?: LogoVariant\n /** Product name shown after a divider and added to the accessible name. */\n product?: string\n /** Renders a link; with only `onClick` it renders a button, otherwise a plain `role=\"img\"` element. */\n href?: string\n /** Opens the link in a new tab; needs `href`. */\n external?: boolean\n dataTestId?: LogoDataTestId\n }\n\nconst DROPLET = (\n <svg\n className={styles.droplet}\n viewBox='38 26 23 32'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M49.485 26L57.6 38.398l-8.116 4.613-8.117-4.613L49.485 26zM43.85 37.81l5.634-8.602 5.633 8.601-5.633 3.201-5.634-3.2z'\n />\n <path d='M49.478 45.736l-9.416-5.35-.255.39c-2.896 4.428-2.25 10.226 1.554 13.945 4.48 4.372 11.747 4.372 16.233 0 3.812-3.719 4.458-9.517 1.554-13.945l-.254-.39-9.416 5.35z' />\n </svg>\n)\n\nconst WORDMARK = (\n <span className={styles.wordmark}>\n <svg\n className={styles.wordmarkSvg}\n viewBox='61 26 101 32'\n fill='currentColor'\n aria-hidden='true'\n >\n <path d='M90.17 50.449H79.462V33.551h3.267v13.917h7.441v2.981zm16.422 0h-3.267V33.551h3.267V50.45zm13.242 0V33.551h5.597c.85 0 1.54.029 2.062.093 1.351.156 2.519.624 3.492 1.398.988.773 1.735 1.767 2.244 2.98.515 1.207.769 2.534.769 3.982 0 1.448-.254 2.775-.769 3.988-.516 1.207-1.264 2.193-2.244 2.967-.98.773-2.141 1.242-3.492 1.398-.53.064-1.219.092-2.062.092h-5.597zm5.597-3.002c.85 0 1.474-.043 1.873-.12a3.218 3.218 0 001.801-1.001 5.002 5.002 0 001.082-1.923 7.97 7.97 0 00.363-2.406 7.96 7.96 0 00-.371-2.442c-.239-.76-.602-1.398-1.096-1.916a3.123 3.123 0 00-1.779-.972c-.399-.078-1.023-.12-1.873-.12h-2.279V47.44h2.279v.007zm28.191 3.357c-1.707 0-3.188-.362-4.458-1.093a7.432 7.432 0 01-2.919-3.102c-.675-1.327-1.009-2.867-1.009-4.613 0-1.745.334-3.285 1.009-4.613.683-1.327 1.656-2.356 2.919-3.087 1.263-.738 2.751-1.1 4.458-1.1 1.706 0 3.187.37 4.457 1.1a7.27 7.27 0 012.904 3.087c.683 1.328 1.024 2.868 1.024 4.613 0 1.746-.341 3.286-1.024 4.613-.675 1.328-1.641 2.364-2.904 3.102-1.263.73-2.751 1.093-4.457 1.093zm.094-3.002c1.06 0 1.946-.242 2.664-.717.719-.476 1.264-1.15 1.619-2.016.363-.865.538-1.887.538-3.065 0-1.817-.422-3.237-1.271-4.259-.849-1.021-2.098-1.54-3.746-1.54-1.06 0-1.946.242-2.664.717-.719.476-1.264 1.15-1.619 2.016-.363.865-.538 1.887-.538 3.066 0 1.816.421 3.236 1.271 4.258.849 1.022 2.098 1.54 3.746 1.54z' />\n </svg>\n </span>\n)\n\n/** Lido droplet with wordmark and an optional product name. */\nexport const Logo = forwardRef<HTMLElement, LogoProps>(\n (\n {\n variant = 'full',\n product,\n href,\n external,\n onClick,\n className,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const label = product ? `Lido ${product}` : 'Lido'\n const content = (\n <>\n <span className={styles.mark}>\n {DROPLET}\n {variant === 'compact' ? null : WORDMARK}\n </span>\n {product ? (\n <>\n <span className={styles.divider} aria-hidden='true' />\n <span className={styles.product} data-testid={dataTestId?.product}>\n {product}\n </span>\n </>\n ) : null}\n </>\n )\n const classes = cn(styles.root, styles[variant], className)\n\n if (href || onClick) {\n return (\n <ActionElement\n ref={ref as Ref<HTMLAnchorElement | HTMLButtonElement>}\n className={cn(classes, styles.interactive)}\n aria-label={label}\n data-testid={dataTestId?.root}\n {...{\n href,\n external: href ? external : undefined,\n onClick,\n ...rest,\n }}\n >\n {content}\n </ActionElement>\n )\n }\n\n return (\n <span\n ref={ref as Ref<HTMLSpanElement>}\n role='img'\n aria-label={label}\n className={classes}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {content}\n </span>\n )\n },\n)\n\nLogo.displayName = 'Logo'\n"],"names":["DROPLET","_jsxs","className","styles","droplet","viewBox","fill","children","_jsx","fillRule","clipRule","d","WORDMARK","wordmark","wordmarkSvg","Logo","forwardRef","_ref","ref","variant","product","href","external","onClick","dataTestId","rest","label","content","_Fragment","mark","divider","classes","cn","root","ActionElement","interactive","undefined","role","displayName"],"mappings":"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"}
@@ -17,6 +17,7 @@ const variantIcons = {
17
17
  error: IconWarning.IconWarning,
18
18
  success: IconCheck.IconCheck
19
19
  };
20
+ /** Inline note in a form or card, e.g. to explain a delay, a fee or a risk. */
20
21
  const MessageBox = _ref => {
21
22
  let {
22
23
  variant = 'default',
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBox.cjs","sources":["../../../src/message-box/MessageBox.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { IconCheck, IconInfo, IconShield, IconWarning } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './MessageBox.module.css'\n\nexport type MessageBoxVariant =\n | 'default'\n | 'info'\n | 'warning'\n | 'error'\n | 'success'\n\nconst variantIcons = {\n default: IconInfo,\n info: IconShield,\n warning: IconWarning,\n error: IconWarning,\n success: IconCheck,\n}\n\nexport type MessageBoxDataTestId = {\n root?: string\n icon?: string\n headline?: string\n description?: string\n}\n\nexport type MessageBoxProps = HTMLAttributes<HTMLDivElement> & {\n variant?: MessageBoxVariant\n icon?: boolean\n headline?: ReactNode\n dataTestId?: MessageBoxDataTestId\n}\n\nexport const MessageBox = ({\n variant = 'default',\n icon = true,\n headline,\n className,\n children,\n dataTestId,\n ...rest\n}: MessageBoxProps) => {\n const Icon = variantIcons[variant]\n\n return (\n <div\n className={cn(styles.box, styles[variant], className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n <Icon />\n </span>\n ) : null}\n <div className={styles.text}>\n {headline != null ? (\n <div className={styles.headline} data-testid={dataTestId?.headline}>\n {headline}\n </div>\n ) : null}\n <div\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["variantIcons","default","IconInfo","info","IconShield","warning","IconWarning","error","success","IconCheck","MessageBox","_ref","variant","icon","headline","className","children","dataTestId","rest","Icon","_jsxs","cn","styles","box","root","_jsx","text","description"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,YAAY,GAAG;AACnBC,EAAAA,OAAO,EAAEC,iBAAQ;AACjBC,EAAAA,IAAI,EAAEC,qBAAU;AAChBC,EAAAA,OAAO,EAAEC,uBAAW;AACpBC,EAAAA,KAAK,EAAED,uBAAW;AAClBE,EAAAA,OAAO,EAAEC,mBAAAA;AACX,CAAC,CAAA;AAgBYC,MAAAA,UAAU,GAAGC,IAAA,IAQH;EAAA,IARI;AACzBC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACY,GAAC,GAAAP,IAAA,CAAA;AAChB,EAAA,MAAMQ,IAAI,GAAGnB,YAAY,CAACY,OAAO,CAAC,CAAA;AAElC,EAAA,oBACEQ,eAAA,CAAA,KAAA,EAAA;AACEL,IAAAA,SAAS,EAAEM,EAAE,CAACC,iBAAM,CAACC,GAAG,EAAED,iBAAM,CAACV,OAAO,CAAC,EAAEG,SAAS,CAAE;IACtD,aAAaE,EAAAA,UAAU,EAAEO,IAAK;AAAA,IAAA,GAC1BN,IAAI;IAAAF,QAAA,EAAA,CAEPH,IAAI,gBACHY,cAAA,CAAA,MAAA,EAAA;MACEV,SAAS,EAAEO,iBAAM,CAACT,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaI,EAAAA,UAAU,EAAEJ,IAAK;AAAAG,MAAAA,QAAA,eAE9BS,cAAA,CAACN,IAAI,EAAE,EAAA,CAAA;AAAC,KACJ,CAAC,GACL,IAAI,eACRC,eAAA,CAAA,KAAA,EAAA;MAAKL,SAAS,EAAEO,iBAAM,CAACI,IAAK;AAAAV,MAAAA,QAAA,EACzBF,CAAAA,QAAQ,IAAI,IAAI,gBACfW,cAAA,CAAA,KAAA,EAAA;QAAKV,SAAS,EAAEO,iBAAM,CAACR,QAAS;QAAC,aAAaG,EAAAA,UAAU,EAAEH,QAAS;AAAAE,QAAAA,QAAA,EAChEF,QAAAA;AAAQ,OACN,CAAC,GACJ,IAAI,eACRW,cAAA,CAAA,KAAA,EAAA;QACEV,SAAS,EAAEO,iBAAM,CAACK,WAAY;QAC9B,aAAaV,EAAAA,UAAU,EAAEU,WAAY;AAAAX,QAAAA,QAAA,EAEpCA,QAAAA;AAAQ,OACN,CAAC,CAAA;AAAA,KACH,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"MessageBox.cjs","sources":["../../../src/message-box/MessageBox.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { IconCheck, IconInfo, IconShield, IconWarning } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './MessageBox.module.css'\n\nexport type MessageBoxVariant =\n | 'default'\n | 'info'\n | 'warning'\n | 'error'\n | 'success'\n\nconst variantIcons = {\n default: IconInfo,\n info: IconShield,\n warning: IconWarning,\n error: IconWarning,\n success: IconCheck,\n}\n\nexport type MessageBoxDataTestId = {\n root?: string\n icon?: string\n headline?: string\n description?: string\n}\n\nexport type MessageBoxProps = HTMLAttributes<HTMLDivElement> & {\n /** `default` neutral, `info` blue, `warning` orange, `error` red, `success` green. */\n variant?: MessageBoxVariant\n /** Toggles the leading glyph, which is picked from the variant. */\n icon?: boolean\n headline?: ReactNode\n dataTestId?: MessageBoxDataTestId\n}\n\n/** Inline note in a form or card, e.g. to explain a delay, a fee or a risk. */\nexport const MessageBox = ({\n variant = 'default',\n icon = true,\n headline,\n className,\n children,\n dataTestId,\n ...rest\n}: MessageBoxProps) => {\n const Icon = variantIcons[variant]\n\n return (\n <div\n className={cn(styles.box, styles[variant], className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n <Icon />\n </span>\n ) : null}\n <div className={styles.text}>\n {headline != null ? (\n <div className={styles.headline} data-testid={dataTestId?.headline}>\n {headline}\n </div>\n ) : null}\n <div\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["variantIcons","default","IconInfo","info","IconShield","warning","IconWarning","error","success","IconCheck","MessageBox","_ref","variant","icon","headline","className","children","dataTestId","rest","Icon","_jsxs","cn","styles","box","root","_jsx","text","description"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,YAAY,GAAG;AACnBC,EAAAA,OAAO,EAAEC,iBAAQ;AACjBC,EAAAA,IAAI,EAAEC,qBAAU;AAChBC,EAAAA,OAAO,EAAEC,uBAAW;AACpBC,EAAAA,KAAK,EAAED,uBAAW;AAClBE,EAAAA,OAAO,EAAEC,mBAAAA;AACX,CAAC,CAAA;AAkBD;AACaC,MAAAA,UAAU,GAAGC,IAAA,IAQH;EAAA,IARI;AACzBC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACY,GAAC,GAAAP,IAAA,CAAA;AAChB,EAAA,MAAMQ,IAAI,GAAGnB,YAAY,CAACY,OAAO,CAAC,CAAA;AAElC,EAAA,oBACEQ,eAAA,CAAA,KAAA,EAAA;AACEL,IAAAA,SAAS,EAAEM,EAAE,CAACC,iBAAM,CAACC,GAAG,EAAED,iBAAM,CAACV,OAAO,CAAC,EAAEG,SAAS,CAAE;IACtD,aAAaE,EAAAA,UAAU,EAAEO,IAAK;AAAA,IAAA,GAC1BN,IAAI;IAAAF,QAAA,EAAA,CAEPH,IAAI,gBACHY,cAAA,CAAA,MAAA,EAAA;MACEV,SAAS,EAAEO,iBAAM,CAACT,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaI,EAAAA,UAAU,EAAEJ,IAAK;AAAAG,MAAAA,QAAA,eAE9BS,cAAA,CAACN,IAAI,EAAE,EAAA,CAAA;AAAC,KACJ,CAAC,GACL,IAAI,eACRC,eAAA,CAAA,KAAA,EAAA;MAAKL,SAAS,EAAEO,iBAAM,CAACI,IAAK;AAAAV,MAAAA,QAAA,EACzBF,CAAAA,QAAQ,IAAI,IAAI,gBACfW,cAAA,CAAA,KAAA,EAAA;QAAKV,SAAS,EAAEO,iBAAM,CAACR,QAAS;QAAC,aAAaG,EAAAA,UAAU,EAAEH,QAAS;AAAAE,QAAAA,QAAA,EAChEF,QAAAA;AAAQ,OACN,CAAC,GACJ,IAAI,eACRW,cAAA,CAAA,KAAA,EAAA;QACEV,SAAS,EAAEO,iBAAM,CAACK,WAAY;QAC9B,aAAaV,EAAAA,UAAU,EAAEU,WAAY;AAAAX,QAAAA,QAAA,EAEpCA,QAAAA;AAAQ,OACN,CAAC,CAAA;AAAA,KACH,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEV;;;;"}
@@ -8,10 +8,11 @@ const Modal_module = require('./Modal.module.css.cjs');
8
8
  const jsxRuntime = require('react/jsx-runtime');
9
9
  const Portal = require('../hooks/Portal.cjs');
10
10
  const useBodyScrollLock = require('../hooks/useBodyScrollLock.cjs');
11
+ const useHideOthers = require('../hooks/useHideOthers.cjs');
11
12
  const useFocusTrap = require('../hooks/useFocusTrap.cjs');
12
13
  const useEscape = require('../hooks/useEscape.cjs');
13
- const IconButton = require('../icon-button/IconButton.cjs');
14
- const IconCross = require('../icons/components/base/IconCross.cjs');
14
+ const useOutsideClick = require('../hooks/useOutsideClick.cjs');
15
+ const CloseButton = require('../icon-button/CloseButton.cjs');
15
16
 
16
17
  const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
17
18
  let {
@@ -19,60 +20,103 @@ const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
19
20
  subtitle,
20
21
  onClose,
21
22
  withOverlay = false,
23
+ inertOthers = false,
22
24
  bodyFill = false,
23
25
  lockScroll = true,
24
26
  closeOnEscape = true,
25
27
  closeOnOverlayClick = true,
28
+ initialFocus,
26
29
  children,
27
30
  className,
28
31
  dataTestId,
29
32
  ...rest
30
33
  } = _ref;
31
34
  const titleId = react.useId();
35
+ const subtitleId = react.useId();
32
36
  const [cardEl, setCardEl] = react.useState(null);
33
- const backdropMouseDown = react.useRef(false);
37
+ // Captured during render: a child's autoFocus is applied at commit, after this.
38
+ const [returnFocus] = react.useState(() => typeof document === 'undefined' ? null : document.activeElement);
39
+ const overlayRef = react.useRef(null);
40
+ const headerRef = react.useRef(null);
41
+ const pressedScrim = react.useRef(false);
34
42
  react.useImperativeHandle(ref, () => cardEl, [cardEl]);
35
- useBodyScrollLock.useBodyScrollLock(withOverlay && lockScroll);
36
- useFocusTrap.useFocusTrap(cardEl, withOverlay);
43
+ useBodyScrollLock.useBodyScrollLock({
44
+ enabled: withOverlay && lockScroll
45
+ });
46
+ // Before the trap: cleanups run in order, so inert lifts before focus returns to the opener.
47
+ useHideOthers.useHideOthers(cardEl, withOverlay && inertOthers);
48
+ useFocusTrap.useFocusTrap(cardEl, {
49
+ enabled: withOverlay,
50
+ initialFocus,
51
+ returnFocus
52
+ });
37
53
  // Stays registered with closeOnEscape={false} so Escape doesn't fall through to an underlying overlay.
38
- useEscape.useEscape(withOverlay, () => {
54
+ useEscape.useEscape(() => {
39
55
  if (closeOnEscape) onClose?.();
56
+ }, {
57
+ enabled: withOverlay
40
58
  });
41
- const handleOverlayMouseDown = event => {
42
- backdropMouseDown.current = event.target === event.currentTarget;
59
+
60
+ // Sticky header on mobile: scroll-padding keeps focused fields from landing under it (WCAG 2.4.11).
61
+ react.useEffect(() => {
62
+ const overlay = overlayRef.current;
63
+ const header = headerRef.current;
64
+ if (!withOverlay || !overlay || !header) return;
65
+ if (typeof ResizeObserver === 'undefined') return;
66
+ const measure = () => overlay.style.setProperty('--local-header-height', `${header.offsetHeight + 8}px`);
67
+ measure();
68
+ const observer = new ResizeObserver(measure);
69
+ observer.observe(header);
70
+ return () => observer.disconnect();
71
+ }, [withOverlay, cardEl]);
72
+
73
+ // Joins the outside-click stack even with closeOnOverlayClick={false}, so presses here never reach an overlay underneath.
74
+ // Decided at pointerdown: the handler only runs while this is the top layer.
75
+ useOutsideClick.useOutsideClick(cardEl, event => {
76
+ pressedScrim.current = !(event.button > 0) && event.target === overlayRef.current;
77
+ }, {
78
+ enabled: withOverlay
79
+ });
80
+ const handleCardPointerDown = event => {
81
+ pressedScrim.current = false;
82
+ rest.onPointerDown?.(event);
43
83
  };
44
84
  const handleOverlayClick = event => {
45
- if (closeOnOverlayClick && backdropMouseDown.current && event.target === event.currentTarget) {
85
+ if (closeOnOverlayClick && pressedScrim.current && event.target === event.currentTarget) {
46
86
  onClose?.();
47
87
  }
88
+ pressedScrim.current = false;
48
89
  };
49
90
  const card = /*#__PURE__*/jsxRuntime.jsxs("div", {
50
91
  role: "dialog",
51
92
  "aria-modal": withOverlay || undefined,
52
93
  "aria-labelledby": title ? titleId : undefined,
94
+ "aria-describedby": subtitle != null ? subtitleId : undefined,
53
95
  "data-testid": dataTestId?.root,
54
96
  ...rest,
97
+ onPointerDown: handleCardPointerDown,
55
98
  ref: setCardEl,
56
99
  className: cn(Modal_module.card, bodyFill && Modal_module.cardBodyFill, className),
57
100
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
101
+ ref: headerRef,
58
102
  className: Modal_module.headerGroup,
59
103
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
60
104
  className: Modal_module.header,
61
105
  children: [/*#__PURE__*/jsxRuntime.jsx("span", {
106
+ role: "heading",
107
+ "aria-level": 2,
62
108
  id: titleId,
63
109
  className: cn(Modal_module.title, !title && Modal_module.titleHidden),
64
110
  "data-testid": dataTestId?.title,
65
111
  children: title
66
- }), onClose ? /*#__PURE__*/jsxRuntime.jsx(IconButton.IconButton, {
67
- variant: "outline",
68
- "aria-label": "Close",
69
- icon: /*#__PURE__*/jsxRuntime.jsx(IconCross.IconCross, {}),
112
+ }), onClose ? /*#__PURE__*/jsxRuntime.jsx(CloseButton.CloseButton, {
70
113
  onClick: onClose,
71
114
  dataTestId: {
72
115
  root: dataTestId?.closeButton
73
116
  }
74
117
  }) : null]
75
118
  }), subtitle != null ? /*#__PURE__*/jsxRuntime.jsx("p", {
119
+ id: subtitleId,
76
120
  className: Modal_module.subtitle,
77
121
  "data-testid": dataTestId?.subtitle,
78
122
  children: subtitle
@@ -89,8 +133,8 @@ const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
89
133
  // Pointer-only: a focusable backdrop would add a tab stop before the dialog; keyboard closes via Escape.
90
134
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
91
135
  jsxRuntime.jsx("div", {
136
+ ref: overlayRef,
92
137
  className: Modal_module.overlay,
93
- onMouseDown: handleOverlayMouseDown,
94
138
  onClick: handleOverlayClick,
95
139
  "data-testid": dataTestId?.overlay,
96
140
  children: card
@@ -100,7 +144,13 @@ const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
100
144
  ModalDialog.displayName = 'ModalDialog';
101
145
 
102
146
  // Hooks live in ModalDialog so they run once the portal has mounted its content.
103
- const Modal = /*#__PURE__*/react.forwardRef((props, ref) => {
147
+ /** Dialog card for supply, borrow and repay flows; with `withOverlay` it is portaled and closes on Escape and scrim click, traps focus and locks body scroll. `ModalCard` is the bare card. */
148
+ const Modal = /*#__PURE__*/react.forwardRef((_ref2, ref) => {
149
+ let {
150
+ open = true,
151
+ ...props
152
+ } = _ref2;
153
+ if (!open) return null;
104
154
  const dialog = /*#__PURE__*/jsxRuntime.jsx(ModalDialog, {
105
155
  ref: ref,
106
156
  ...props
@@ -110,6 +160,14 @@ const Modal = /*#__PURE__*/react.forwardRef((props, ref) => {
110
160
  }) : dialog;
111
161
  });
112
162
  Modal.displayName = 'Modal';
163
+ /** The bare dialog card with no portal or overlay behavior; you own positioning. */
164
+ const ModalCard = /*#__PURE__*/react.forwardRef((props, ref) => /*#__PURE__*/jsxRuntime.jsx(ModalDialog, {
165
+ ref: ref,
166
+ ...props,
167
+ withOverlay: false
168
+ }));
169
+ ModalCard.displayName = 'ModalCard';
113
170
 
114
171
  exports.Modal = Modal;
172
+ exports.ModalCard = ModalCard;
115
173
  //# sourceMappingURL=Modal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.cjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport { Portal, useBodyScrollLock, useEscape, useFocusTrap } from '../hooks'\nimport { IconButton } from '../icon-button'\nimport { IconCross } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\nexport type ModalDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n closeButton?: string\n body?: string\n overlay?: string\n}\n\nexport type ModalProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title' | 'children'\n> & {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n /** Wraps the card in a portaled scrim; enables Escape, focus trap and scroll lock. */\n withOverlay?: boolean\n bodyFill?: boolean\n /** Opt out of body scroll lock (overlay only). Default true. */\n lockScroll?: boolean\n /** Opt out of Escape-to-close (overlay only). Default true. */\n closeOnEscape?: boolean\n /** Opt out of closing on scrim click (overlay only). Default true. */\n closeOnOverlayClick?: boolean\n children: ReactNode\n dataTestId?: ModalDataTestId\n}\n\nconst ModalDialog = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n subtitle,\n onClose,\n withOverlay = false,\n bodyFill = false,\n lockScroll = true,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n children,\n className,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const titleId = useId()\n const [cardEl, setCardEl] = useState<HTMLDivElement | null>(null)\n const backdropMouseDown = useRef(false)\n\n useImperativeHandle(ref, () => cardEl as HTMLDivElement, [cardEl])\n useBodyScrollLock(withOverlay && lockScroll)\n useFocusTrap(cardEl, withOverlay)\n // Stays registered with closeOnEscape={false} so Escape doesn't fall through to an underlying overlay.\n useEscape(withOverlay, () => {\n if (closeOnEscape) onClose?.()\n })\n\n const handleOverlayMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n backdropMouseDown.current = event.target === event.currentTarget\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (\n closeOnOverlayClick &&\n backdropMouseDown.current &&\n event.target === event.currentTarget\n ) {\n onClose?.()\n }\n }\n\n const card = (\n <div\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n data-testid={dataTestId?.root}\n {...rest}\n ref={setCardEl}\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n >\n <div className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n data-testid={dataTestId?.title}\n >\n {title}\n </span>\n {onClose ? (\n <IconButton\n variant='outline'\n aria-label='Close'\n icon={<IconCross />}\n onClick={onClose}\n dataTestId={{ root: dataTestId?.closeButton }}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // Pointer-only: a focusable backdrop would add a tab stop before the dialog; keyboard closes via Escape.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={styles.overlay}\n onMouseDown={handleOverlayMouseDown}\n onClick={handleOverlayClick}\n data-testid={dataTestId?.overlay}\n >\n {card}\n </div>\n )\n },\n)\n\nModalDialog.displayName = 'ModalDialog'\n\n// Hooks live in ModalDialog so they run once the portal has mounted its content.\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const dialog = <ModalDialog ref={ref} {...props} />\n return props.withOverlay ? <Portal>{dialog}</Portal> : dialog\n})\n\nModal.displayName = 'Modal'\n"],"names":["ModalDialog","forwardRef","_ref","ref","title","subtitle","onClose","withOverlay","bodyFill","lockScroll","closeOnEscape","closeOnOverlayClick","children","className","dataTestId","rest","titleId","useId","cardEl","setCardEl","useState","backdropMouseDown","useRef","useImperativeHandle","useBodyScrollLock","useFocusTrap","useEscape","handleOverlayMouseDown","event","current","target","currentTarget","handleOverlayClick","card","_jsxs","role","undefined","root","cn","styles","cardBodyFill","headerGroup","header","_jsx","id","titleHidden","IconButton","variant","icon","IconCross","onClick","closeButton","body","overlay","onMouseDown","displayName","Modal","props","dialog","Portal"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.cjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type PointerEvent,\n type ReactNode,\n type RefObject,\n} from 'react'\n\nimport {\n Portal,\n useBodyScrollLock,\n useEscape,\n useFocusTrap,\n useHideOthers,\n useOutsideClick,\n} from '../hooks'\nimport { CloseButton } from '../icon-button'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\nexport type ModalDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n closeButton?: string\n body?: string\n overlay?: string\n}\n\nexport type ModalProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title' | 'children'\n> & {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n /** Controlled visibility; omitted means open, so mounting still opens it. */\n open?: boolean\n /** Wraps the card in a portaled scrim; enables Escape, focus trap, scroll lock. */\n withOverlay?: boolean\n /** With `withOverlay`, makes every other body child inert (including the app root); body-level roots (toasts, live regions) stay live with `data-lido-overlay-keep`. */\n inertOthers?: boolean\n /** Stretches the body; only matters full-screen on mobile. */\n bodyFill?: boolean\n /** Opt out of body scroll lock (overlay only). Default true. */\n lockScroll?: boolean\n /** Opt out of Escape-to-close (overlay only). Default true. */\n closeOnEscape?: boolean\n /** Opt out of closing on scrim click (overlay only). Default true. */\n closeOnOverlayClick?: boolean\n /** Element focused on open; defaults to the first tabbable (Close when `onClose` is set). An `autoFocus` child also keeps focus. */\n initialFocus?: RefObject<HTMLElement | null>\n children: ReactNode\n dataTestId?: ModalDataTestId\n}\n\nconst ModalDialog = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n subtitle,\n onClose,\n withOverlay = false,\n inertOthers = false,\n bodyFill = false,\n lockScroll = true,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n initialFocus,\n children,\n className,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const titleId = useId()\n const subtitleId = useId()\n const [cardEl, setCardEl] = useState<HTMLDivElement | null>(null)\n // Captured during render: a child's autoFocus is applied at commit, after this.\n const [returnFocus] = useState(() =>\n typeof document === 'undefined'\n ? null\n : (document.activeElement as HTMLElement | null),\n )\n const overlayRef = useRef<HTMLDivElement>(null)\n const headerRef = useRef<HTMLDivElement>(null)\n const pressedScrim = useRef(false)\n\n useImperativeHandle(ref, () => cardEl as HTMLDivElement, [cardEl])\n useBodyScrollLock({ enabled: withOverlay && lockScroll })\n // Before the trap: cleanups run in order, so inert lifts before focus returns to the opener.\n useHideOthers(cardEl, withOverlay && inertOthers)\n useFocusTrap(cardEl, { enabled: withOverlay, initialFocus, returnFocus })\n // Stays registered with closeOnEscape={false} so Escape doesn't fall through to an underlying overlay.\n useEscape(\n () => {\n if (closeOnEscape) onClose?.()\n },\n { enabled: withOverlay },\n )\n\n // Sticky header on mobile: scroll-padding keeps focused fields from landing under it (WCAG 2.4.11).\n useEffect(() => {\n const overlay = overlayRef.current\n const header = headerRef.current\n if (!withOverlay || !overlay || !header) return\n if (typeof ResizeObserver === 'undefined') return\n const measure = () =>\n overlay.style.setProperty(\n '--local-header-height',\n `${header.offsetHeight + 8}px`,\n )\n measure()\n const observer = new ResizeObserver(measure)\n observer.observe(header)\n return () => observer.disconnect()\n }, [withOverlay, cardEl])\n\n // Joins the outside-click stack even with closeOnOverlayClick={false}, so presses here never reach an overlay underneath.\n // Decided at pointerdown: the handler only runs while this is the top layer.\n useOutsideClick(\n cardEl,\n (event) => {\n pressedScrim.current =\n !(event.button > 0) && event.target === overlayRef.current\n },\n { enabled: withOverlay },\n )\n\n const handleCardPointerDown = (event: PointerEvent<HTMLDivElement>) => {\n pressedScrim.current = false\n rest.onPointerDown?.(event)\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (\n closeOnOverlayClick &&\n pressedScrim.current &&\n event.target === event.currentTarget\n ) {\n onClose?.()\n }\n pressedScrim.current = false\n }\n\n const card = (\n <div\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={subtitle != null ? subtitleId : undefined}\n data-testid={dataTestId?.root}\n {...rest}\n onPointerDown={handleCardPointerDown}\n ref={setCardEl}\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n >\n <div ref={headerRef} className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n role='heading'\n aria-level={2}\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n data-testid={dataTestId?.title}\n >\n {title}\n </span>\n {onClose ? (\n <CloseButton\n onClick={onClose}\n dataTestId={{ root: dataTestId?.closeButton }}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p\n id={subtitleId}\n className={styles.subtitle}\n data-testid={dataTestId?.subtitle}\n >\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // Pointer-only: a focusable backdrop would add a tab stop before the dialog; keyboard closes via Escape.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n ref={overlayRef}\n className={styles.overlay}\n onClick={handleOverlayClick}\n data-testid={dataTestId?.overlay}\n >\n {card}\n </div>\n )\n },\n)\n\nModalDialog.displayName = 'ModalDialog'\n\n// Hooks live in ModalDialog so they run once the portal has mounted its content.\n/** Dialog card for supply, borrow and repay flows; with `withOverlay` it is portaled and closes on Escape and scrim click, traps focus and locks body scroll. `ModalCard` is the bare card. */\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n ({ open = true, ...props }, ref) => {\n if (!open) return null\n const dialog = <ModalDialog ref={ref} {...props} />\n return props.withOverlay ? <Portal>{dialog}</Portal> : dialog\n },\n)\n\nModal.displayName = 'Modal'\n\nexport type ModalCardProps = Omit<\n ModalProps,\n | 'open'\n | 'withOverlay'\n | 'inertOthers'\n | 'lockScroll'\n | 'closeOnEscape'\n | 'closeOnOverlayClick'\n | 'initialFocus'\n>\n\n/** The bare dialog card with no portal or overlay behavior; you own positioning. */\nexport const ModalCard = forwardRef<HTMLDivElement, ModalCardProps>(\n (props, ref) => <ModalDialog ref={ref} {...props} withOverlay={false} />,\n)\n\nModalCard.displayName = 'ModalCard'\n"],"names":["ModalDialog","forwardRef","_ref","ref","title","subtitle","onClose","withOverlay","inertOthers","bodyFill","lockScroll","closeOnEscape","closeOnOverlayClick","initialFocus","children","className","dataTestId","rest","titleId","useId","subtitleId","cardEl","setCardEl","useState","returnFocus","document","activeElement","overlayRef","useRef","headerRef","pressedScrim","useImperativeHandle","useBodyScrollLock","enabled","useHideOthers","useFocusTrap","useEscape","useEffect","overlay","current","header","ResizeObserver","measure","style","setProperty","offsetHeight","observer","observe","disconnect","useOutsideClick","event","button","target","handleCardPointerDown","onPointerDown","handleOverlayClick","currentTarget","card","_jsxs","role","undefined","root","cn","styles","cardBodyFill","headerGroup","_jsx","id","titleHidden","CloseButton","onClick","closeButton","body","displayName","Modal","_ref2","open","props","dialog","Portal","ModalCard"],"mappings":"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"}
@@ -9,6 +9,7 @@ const NavLink_module = require('./NavLink.module.css.cjs');
9
9
  const jsxRuntime = require('react/jsx-runtime');
10
10
  const IconLink = require('../icons/components/base/IconLink.cjs');
11
11
 
12
+ /** Top-navigation link for a Header; pass `aria-current` for sections active on sub-routes (HeaderNav centers any truthy value). */
12
13
  const NavLink = /*#__PURE__*/react.forwardRef((_ref, ref) => {
13
14
  let {
14
15
  active = false,
@@ -16,24 +17,25 @@ const NavLink = /*#__PURE__*/react.forwardRef((_ref, ref) => {
16
17
  external = false,
17
18
  className,
18
19
  children,
19
- target,
20
- rel,
20
+ dataTestId,
21
21
  ...rest
22
22
  } = _ref;
23
23
  return /*#__PURE__*/jsxRuntime.jsxs(Anchor.Anchor, {
24
24
  ref: ref,
25
25
  className: cn(NavLink_module.link, active && NavLink_module.active, className),
26
26
  "aria-current": active ? 'page' : undefined,
27
- target: target ?? (external ? '_blank' : undefined),
28
- rel: rel ?? (external ? 'noopener noreferrer' : undefined),
27
+ external: external,
28
+ "data-testid": dataTestId?.root,
29
29
  ...rest,
30
30
  children: [icon != null ? /*#__PURE__*/jsxRuntime.jsx("span", {
31
31
  className: NavLink_module.icon,
32
32
  "aria-hidden": "true",
33
+ "data-testid": dataTestId?.icon,
33
34
  children: icon
34
35
  }) : null, children, external ? /*#__PURE__*/jsxRuntime.jsx("span", {
35
36
  className: NavLink_module.icon,
36
37
  "aria-hidden": "true",
38
+ "data-testid": dataTestId?.externalIcon,
37
39
  children: /*#__PURE__*/jsxRuntime.jsx(IconLink.IconLink, {})
38
40
  }) : null]
39
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NavLink.cjs","sources":["../../../src/nav-link/NavLink.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { IconLink } from '../icons'\nimport { Anchor } from '../link-provider/Anchor'\nimport styles from './NavLink.module.css'\n\nexport type NavLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n active?: boolean\n icon?: ReactNode\n external?: boolean\n}\n\nexport const NavLink = forwardRef<HTMLAnchorElement, NavLinkProps>(\n (\n {\n active = false,\n icon,\n external = false,\n className,\n children,\n target,\n rel,\n ...rest\n },\n ref,\n ) => (\n <Anchor\n ref={ref}\n className={cn(styles.link, active && styles.active, className)}\n aria-current={active ? 'page' : undefined}\n target={target ?? (external ? '_blank' : undefined)}\n rel={rel ?? (external ? 'noopener noreferrer' : undefined)}\n {...rest}\n >\n {icon != null ? (\n <span className={styles.icon} aria-hidden='true'>\n {icon}\n </span>\n ) : null}\n {children}\n {external ? (\n <span className={styles.icon} aria-hidden='true'>\n <IconLink />\n </span>\n ) : null}\n </Anchor>\n ),\n)\n\nNavLink.displayName = 'NavLink'\n"],"names":["NavLink","forwardRef","_ref","ref","active","icon","external","className","children","target","rel","rest","_jsxs","Anchor","cn","styles","link","undefined","_jsx","IconLink","displayName"],"mappings":";;;;;;;;;;;AAcO,MAAMA,OAAO,gBAAGC,gBAAU,CAC/B,CAAAC,IAAA,EAWEC,GAAG,KAAA;EAAA,IAVH;AACEC,IAAAA,MAAM,GAAG,KAAK;IACdC,IAAI;AACJC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,SAAS;IACTC,QAAQ;IACRC,MAAM;IACNC,GAAG;IACH,GAAGC,IAAAA;AACL,GAAC,GAAAT,IAAA,CAAA;EAAA,oBAGDU,eAAA,CAACC,aAAM,EAAA;AACLV,IAAAA,GAAG,EAAEA,GAAI;AACTI,IAAAA,SAAS,EAAEO,EAAE,CAACC,cAAM,CAACC,IAAI,EAAEZ,MAAM,IAAIW,cAAM,CAACX,MAAM,EAAEG,SAAS,CAAE;AAC/D,IAAA,cAAA,EAAcH,MAAM,GAAG,MAAM,GAAGa,SAAU;IAC1CR,MAAM,EAAEA,MAAM,KAAKH,QAAQ,GAAG,QAAQ,GAAGW,SAAS,CAAE;IACpDP,GAAG,EAAEA,GAAG,KAAKJ,QAAQ,GAAG,qBAAqB,GAAGW,SAAS,CAAE;AAAA,IAAA,GACvDN,IAAI;AAAAH,IAAAA,QAAA,EAEPH,CAAAA,IAAI,IAAI,IAAI,gBACXa,cAAA,CAAA,MAAA,EAAA;MAAMX,SAAS,EAAEQ,cAAM,CAACV,IAAK;AAAC,MAAA,aAAA,EAAY,MAAM;AAAAG,MAAAA,QAAA,EAC7CH,IAAAA;KACG,CAAC,GACL,IAAI,EACPG,QAAQ,EACRF,QAAQ,gBACPY,cAAA,CAAA,MAAA,EAAA;MAAMX,SAAS,EAAEQ,cAAM,CAACV,IAAK;AAAC,MAAA,aAAA,EAAY,MAAM;AAAAG,MAAAA,QAAA,eAC9CU,cAAA,CAACC,iBAAQ,EAAE,EAAA,CAAA;KACP,CAAC,GACL,IAAI,CAAA;AAAA,GACF,CAAC,CAAA;AAAA,CAEb,EAAC;AAEDnB,OAAO,CAACoB,WAAW,GAAG,SAAS;;;;"}
1
+ {"version":3,"file":"NavLink.cjs","sources":["../../../src/nav-link/NavLink.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { IconLink } from '../icons'\nimport { Anchor, type AnchorProps } from '../link-provider/Anchor'\nimport styles from './NavLink.module.css'\n\nexport type NavLinkDataTestId = {\n root?: string\n icon?: string\n externalIcon?: string\n}\n\nexport type NavLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n /** Marks the current page: sets `aria-current=\"page\"` and the active style. */\n active?: boolean\n /** Leading icon. */\n icon?: ReactNode\n /** Opens in a new tab and appends the external-link arrow. */\n external?: boolean\n linkProps?: AnchorProps['linkProps']\n dataTestId?: NavLinkDataTestId\n}\n\n/** Top-navigation link for a Header; pass `aria-current` for sections active on sub-routes (HeaderNav centers any truthy value). */\nexport const NavLink = forwardRef<HTMLAnchorElement, NavLinkProps>(\n (\n {\n active = false,\n icon,\n external = false,\n className,\n children,\n dataTestId,\n ...rest\n },\n ref,\n ) => (\n <Anchor\n ref={ref}\n className={cn(styles.link, active && styles.active, className)}\n aria-current={active ? 'page' : undefined}\n external={external}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon != null ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n {children}\n {external ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.externalIcon}\n >\n <IconLink />\n </span>\n ) : null}\n </Anchor>\n ),\n)\n\nNavLink.displayName = 'NavLink'\n"],"names":["NavLink","forwardRef","_ref","ref","active","icon","external","className","children","dataTestId","rest","_jsxs","Anchor","cn","styles","link","undefined","root","_jsx","externalIcon","IconLink","displayName"],"mappings":";;;;;;;;;;;AAyBA;AACO,MAAMA,OAAO,gBAAGC,gBAAU,CAC/B,CAAAC,IAAA,EAUEC,GAAG,KAAA;EAAA,IATH;AACEC,IAAAA,MAAM,GAAG,KAAK;IACdC,IAAI;AACJC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACL,GAAC,GAAAR,IAAA,CAAA;EAAA,oBAGDS,eAAA,CAACC,aAAM,EAAA;AACLT,IAAAA,GAAG,EAAEA,GAAI;AACTI,IAAAA,SAAS,EAAEM,EAAE,CAACC,cAAM,CAACC,IAAI,EAAEX,MAAM,IAAIU,cAAM,CAACV,MAAM,EAAEG,SAAS,CAAE;AAC/D,IAAA,cAAA,EAAcH,MAAM,GAAG,MAAM,GAAGY,SAAU;AAC1CV,IAAAA,QAAQ,EAAEA,QAAS;IACnB,aAAaG,EAAAA,UAAU,EAAEQ,IAAK;AAAA,IAAA,GAC1BP,IAAI;AAAAF,IAAAA,QAAA,EAEPH,CAAAA,IAAI,IAAI,IAAI,gBACXa,cAAA,CAAA,MAAA,EAAA;MACEX,SAAS,EAAEO,cAAM,CAACT,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaI,EAAAA,UAAU,EAAEJ,IAAK;AAAAG,MAAAA,QAAA,EAE7BH,IAAAA;KACG,CAAC,GACL,IAAI,EACPG,QAAQ,EACRF,QAAQ,gBACPY,cAAA,CAAA,MAAA,EAAA;MACEX,SAAS,EAAEO,cAAM,CAACT,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaI,EAAAA,UAAU,EAAEU,YAAa;AAAAX,MAAAA,QAAA,eAEtCU,cAAA,CAACE,iBAAQ,EAAE,EAAA,CAAA;KACP,CAAC,GACL,IAAI,CAAA;AAAA,GACF,CAAC,CAAA;AAAA,CAEb,EAAC;AAEDpB,OAAO,CAACqB,WAAW,GAAG,SAAS;;;;"}