@graphprotocol/gds-react 0.1.1 → 0.2.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 (390) hide show
  1. package/dist/GDSProvider.d.ts +12 -10
  2. package/dist/GDSProvider.d.ts.map +1 -1
  3. package/dist/GDSProvider.js +10 -8
  4. package/dist/GDSProvider.js.map +1 -1
  5. package/dist/components/Address.js +2 -2
  6. package/dist/components/Address.meta.d.ts +1 -13
  7. package/dist/components/Address.meta.d.ts.map +1 -1
  8. package/dist/components/Avatar.d.ts.map +1 -1
  9. package/dist/components/Avatar.js +7 -11
  10. package/dist/components/Avatar.js.map +1 -1
  11. package/dist/components/Avatar.meta.d.ts +0 -2
  12. package/dist/components/Avatar.meta.d.ts.map +1 -1
  13. package/dist/components/AvatarGroup.meta.d.ts +8 -2
  14. package/dist/components/AvatarGroup.meta.d.ts.map +1 -1
  15. package/dist/components/Breadcrumbs.meta.d.ts +2 -3
  16. package/dist/components/Breadcrumbs.meta.d.ts.map +1 -1
  17. package/dist/components/Breadcrumbs.meta.js +3 -1
  18. package/dist/components/Breadcrumbs.meta.js.map +1 -1
  19. package/dist/components/Breadcrumbs.parts.d.ts.map +1 -1
  20. package/dist/components/Breadcrumbs.parts.js +15 -23
  21. package/dist/components/Breadcrumbs.parts.js.map +1 -1
  22. package/dist/components/Button.d.ts.map +1 -1
  23. package/dist/components/Button.js +17 -12
  24. package/dist/components/Button.js.map +1 -1
  25. package/dist/components/Button.meta.d.ts +1 -4
  26. package/dist/components/Button.meta.d.ts.map +1 -1
  27. package/dist/components/ButtonGroup.d.ts.map +1 -1
  28. package/dist/components/ButtonGroup.js +1 -5
  29. package/dist/components/ButtonGroup.js.map +1 -1
  30. package/dist/components/ButtonGroup.meta.d.ts +1 -5
  31. package/dist/components/ButtonGroup.meta.d.ts.map +1 -1
  32. package/dist/components/ButtonGroup.meta.js +8 -0
  33. package/dist/components/ButtonGroup.meta.js.map +1 -1
  34. package/dist/components/Card.js +1 -1
  35. package/dist/components/Card.js.map +1 -1
  36. package/dist/components/Card.meta.d.ts +1 -2
  37. package/dist/components/Card.meta.d.ts.map +1 -1
  38. package/dist/components/Card.meta.js +1 -0
  39. package/dist/components/Card.meta.js.map +1 -1
  40. package/dist/components/Checkbox.meta.d.ts +1 -6
  41. package/dist/components/Checkbox.meta.d.ts.map +1 -1
  42. package/dist/components/Checkbox.meta.js +1 -5
  43. package/dist/components/Checkbox.meta.js.map +1 -1
  44. package/dist/components/Chip.d.ts +6 -0
  45. package/dist/components/Chip.d.ts.map +1 -0
  46. package/dist/components/Chip.js +5 -0
  47. package/dist/components/Chip.js.map +1 -0
  48. package/dist/components/Chip.meta.d.ts +15 -0
  49. package/dist/components/Chip.meta.d.ts.map +1 -0
  50. package/dist/components/Chip.meta.js +22 -0
  51. package/dist/components/Chip.meta.js.map +1 -0
  52. package/dist/components/Chip.parts.d.ts +52 -0
  53. package/dist/components/Chip.parts.d.ts.map +1 -0
  54. package/dist/components/Chip.parts.js +114 -0
  55. package/dist/components/Chip.parts.js.map +1 -0
  56. package/dist/components/Cluster.meta.d.ts +8 -2
  57. package/dist/components/Cluster.meta.d.ts.map +1 -1
  58. package/dist/components/CodeBlock.d.ts +1 -1
  59. package/dist/components/CodeBlock.meta.d.ts +2 -4
  60. package/dist/components/CodeBlock.meta.d.ts.map +1 -1
  61. package/dist/components/CodeBlock.parts.d.ts +6 -7
  62. package/dist/components/CodeBlock.parts.d.ts.map +1 -1
  63. package/dist/components/CodeBlock.parts.js +28 -10
  64. package/dist/components/CodeBlock.parts.js.map +1 -1
  65. package/dist/components/CodeInline.js +3 -3
  66. package/dist/components/CodeInline.meta.d.ts +1 -1
  67. package/dist/components/CodeInline.meta.d.ts.map +1 -1
  68. package/dist/components/CopyButton.d.ts.map +1 -1
  69. package/dist/components/CopyButton.js +2 -4
  70. package/dist/components/CopyButton.js.map +1 -1
  71. package/dist/components/CopyButton.meta.d.ts +1 -12
  72. package/dist/components/CopyButton.meta.d.ts.map +1 -1
  73. package/dist/components/CopyButton.meta.js +1 -6
  74. package/dist/components/CopyButton.meta.js.map +1 -1
  75. package/dist/components/CurrencyInput.meta.d.ts +1 -6
  76. package/dist/components/CurrencyInput.meta.d.ts.map +1 -1
  77. package/dist/components/CurrencyInput.meta.js +1 -5
  78. package/dist/components/CurrencyInput.meta.js.map +1 -1
  79. package/dist/components/DescriptionList.meta.d.ts +2 -5
  80. package/dist/components/DescriptionList.meta.d.ts.map +1 -1
  81. package/dist/components/DescriptionList.parts.d.ts +3 -0
  82. package/dist/components/DescriptionList.parts.d.ts.map +1 -1
  83. package/dist/components/DescriptionList.parts.js +2 -1
  84. package/dist/components/DescriptionList.parts.js.map +1 -1
  85. package/dist/components/Divider.meta.d.ts +1 -3
  86. package/dist/components/Divider.meta.d.ts.map +1 -1
  87. package/dist/components/Icon.js +4 -4
  88. package/dist/components/Icon.js.map +1 -1
  89. package/dist/components/Icon.meta.d.ts +0 -2
  90. package/dist/components/Icon.meta.d.ts.map +1 -1
  91. package/dist/components/Icon.meta.js +1 -0
  92. package/dist/components/Icon.meta.js.map +1 -1
  93. package/dist/components/Input.d.ts +5 -4
  94. package/dist/components/Input.d.ts.map +1 -1
  95. package/dist/components/Input.js +1 -0
  96. package/dist/components/Input.js.map +1 -1
  97. package/dist/components/Input.meta.d.ts +1 -6
  98. package/dist/components/Input.meta.d.ts.map +1 -1
  99. package/dist/components/Input.meta.js +1 -5
  100. package/dist/components/Input.meta.js.map +1 -1
  101. package/dist/components/Keyboard.js +1 -1
  102. package/dist/components/Keyboard.meta.d.ts +0 -1
  103. package/dist/components/Keyboard.meta.d.ts.map +1 -1
  104. package/dist/components/Label.meta.d.ts +1 -3
  105. package/dist/components/Label.meta.d.ts.map +1 -1
  106. package/dist/components/Link.d.ts +1 -1
  107. package/dist/components/Link.d.ts.map +1 -1
  108. package/dist/components/Link.js +1 -2
  109. package/dist/components/Link.js.map +1 -1
  110. package/dist/components/Link.meta.d.ts +1 -2
  111. package/dist/components/Link.meta.d.ts.map +1 -1
  112. package/dist/components/Link.meta.js +1 -0
  113. package/dist/components/Link.meta.js.map +1 -1
  114. package/dist/components/Menu.meta.d.ts +31 -2
  115. package/dist/components/Menu.meta.d.ts.map +1 -1
  116. package/dist/components/Menu.meta.js +39 -1
  117. package/dist/components/Menu.meta.js.map +1 -1
  118. package/dist/components/Menu.parts.d.ts +23 -32
  119. package/dist/components/Menu.parts.d.ts.map +1 -1
  120. package/dist/components/Menu.parts.js +284 -303
  121. package/dist/components/Menu.parts.js.map +1 -1
  122. package/dist/components/Modal.d.ts +1 -1
  123. package/dist/components/Modal.meta.d.ts +1 -3
  124. package/dist/components/Modal.meta.d.ts.map +1 -1
  125. package/dist/components/Modal.meta.js +1 -1
  126. package/dist/components/Modal.meta.js.map +1 -1
  127. package/dist/components/Modal.parts.d.ts +14 -15
  128. package/dist/components/Modal.parts.d.ts.map +1 -1
  129. package/dist/components/Modal.parts.js +36 -32
  130. package/dist/components/Modal.parts.js.map +1 -1
  131. package/dist/components/OTCInput.js +1 -1
  132. package/dist/components/OTCInput.meta.d.ts +1 -6
  133. package/dist/components/OTCInput.meta.d.ts.map +1 -1
  134. package/dist/components/OTCInput.meta.js +1 -5
  135. package/dist/components/OTCInput.meta.js.map +1 -1
  136. package/dist/components/Radio.meta.d.ts +1 -6
  137. package/dist/components/Radio.meta.d.ts.map +1 -1
  138. package/dist/components/Radio.meta.js +1 -5
  139. package/dist/components/Radio.meta.js.map +1 -1
  140. package/dist/components/Search.meta.d.ts +1 -3
  141. package/dist/components/Search.meta.d.ts.map +1 -1
  142. package/dist/components/SegmentedControl.meta.d.ts +2 -3
  143. package/dist/components/SegmentedControl.meta.d.ts.map +1 -1
  144. package/dist/components/SegmentedControl.meta.js +3 -1
  145. package/dist/components/SegmentedControl.meta.js.map +1 -1
  146. package/dist/components/SegmentedControl.parts.d.ts.map +1 -1
  147. package/dist/components/SegmentedControl.parts.js +15 -31
  148. package/dist/components/SegmentedControl.parts.js.map +1 -1
  149. package/dist/components/Status.meta.d.ts +0 -2
  150. package/dist/components/Status.meta.d.ts.map +1 -1
  151. package/dist/components/Stepper.meta.d.ts +1 -2
  152. package/dist/components/Stepper.meta.d.ts.map +1 -1
  153. package/dist/components/Stepper.meta.js +1 -0
  154. package/dist/components/Stepper.meta.js.map +1 -1
  155. package/dist/components/Stepper.parts.d.ts.map +1 -1
  156. package/dist/components/Stepper.parts.js +1 -1
  157. package/dist/components/Stepper.parts.js.map +1 -1
  158. package/dist/components/Switch.meta.d.ts +1 -6
  159. package/dist/components/Switch.meta.d.ts.map +1 -1
  160. package/dist/components/Switch.meta.js +1 -5
  161. package/dist/components/Switch.meta.js.map +1 -1
  162. package/dist/components/TabSet.meta.d.ts +2 -5
  163. package/dist/components/TabSet.meta.d.ts.map +1 -1
  164. package/dist/components/TabSet.meta.js +3 -1
  165. package/dist/components/TabSet.meta.js.map +1 -1
  166. package/dist/components/TabSet.parts.js +1 -1
  167. package/dist/components/Tag.meta.d.ts +0 -2
  168. package/dist/components/Tag.meta.d.ts.map +1 -1
  169. package/dist/components/TextArea.meta.d.ts +1 -6
  170. package/dist/components/TextArea.meta.d.ts.map +1 -1
  171. package/dist/components/TextArea.meta.js +1 -5
  172. package/dist/components/TextArea.meta.js.map +1 -1
  173. package/dist/components/ToggleButton.d.ts +0 -2
  174. package/dist/components/ToggleButton.d.ts.map +1 -1
  175. package/dist/components/ToggleButton.js +2 -2
  176. package/dist/components/ToggleButton.js.map +1 -1
  177. package/dist/components/ToggleButton.meta.d.ts +1 -12
  178. package/dist/components/ToggleButton.meta.d.ts.map +1 -1
  179. package/dist/components/ToggleButton.meta.js +1 -6
  180. package/dist/components/ToggleButton.meta.js.map +1 -1
  181. package/dist/components/Tooltip.d.ts +2 -2
  182. package/dist/components/Tooltip.d.ts.map +1 -1
  183. package/dist/components/Tooltip.js +2 -2
  184. package/dist/components/Tooltip.js.map +1 -1
  185. package/dist/components/Tooltip.meta.d.ts +12 -7
  186. package/dist/components/Tooltip.meta.d.ts.map +1 -1
  187. package/dist/components/Tooltip.meta.js +13 -2
  188. package/dist/components/Tooltip.meta.js.map +1 -1
  189. package/dist/components/Tooltip.parts.d.ts +20 -20
  190. package/dist/components/Tooltip.parts.d.ts.map +1 -1
  191. package/dist/components/Tooltip.parts.js +129 -88
  192. package/dist/components/Tooltip.parts.js.map +1 -1
  193. package/dist/components/base/Addon.meta.d.ts +1 -1
  194. package/dist/components/base/Addon.meta.d.ts.map +1 -1
  195. package/dist/components/base/Addon.meta.js +3 -1
  196. package/dist/components/base/Addon.meta.js.map +1 -1
  197. package/dist/components/base/ButtonOrLink.d.ts +1 -1
  198. package/dist/components/base/ButtonOrLink.parts.d.ts +14 -10
  199. package/dist/components/base/ButtonOrLink.parts.d.ts.map +1 -1
  200. package/dist/components/base/ButtonOrLink.parts.js +47 -47
  201. package/dist/components/base/ButtonOrLink.parts.js.map +1 -1
  202. package/dist/components/base/Checkable.meta.d.ts +1 -2
  203. package/dist/components/base/Checkable.meta.d.ts.map +1 -1
  204. package/dist/components/base/Checkable.parts.d.ts +6 -6
  205. package/dist/components/base/Checkable.parts.d.ts.map +1 -1
  206. package/dist/components/base/Checkable.parts.js +2 -2
  207. package/dist/components/base/Checkable.parts.js.map +1 -1
  208. package/dist/components/base/Field.meta.d.ts +1 -2
  209. package/dist/components/base/Field.meta.d.ts.map +1 -1
  210. package/dist/components/base/Field.parts.d.ts +5 -4
  211. package/dist/components/base/Field.parts.d.ts.map +1 -1
  212. package/dist/components/base/Field.parts.js +1 -1
  213. package/dist/components/base/Field.parts.js.map +1 -1
  214. package/dist/components/base/MaybeButtonOrLink.d.ts +1 -1
  215. package/dist/components/base/MaybeButtonOrLink.d.ts.map +1 -1
  216. package/dist/components/base/Portal.d.ts +1 -1
  217. package/dist/components/base/Portal.d.ts.map +1 -1
  218. package/dist/components/base/Portal.js +3 -6
  219. package/dist/components/base/Portal.js.map +1 -1
  220. package/dist/components/base/Render.d.ts +21 -6
  221. package/dist/components/base/Render.d.ts.map +1 -1
  222. package/dist/components/base/Render.js +3 -2
  223. package/dist/components/base/Render.js.map +1 -1
  224. package/dist/components/base/Transition.js +2 -2
  225. package/dist/components/base/Transition.meta.d.ts +1 -1
  226. package/dist/components/base/Transition.meta.d.ts.map +1 -1
  227. package/dist/components/base/Transition.meta.js +1 -0
  228. package/dist/components/base/Transition.meta.js.map +1 -1
  229. package/dist/components/base/index.d.ts +1 -2
  230. package/dist/components/base/index.d.ts.map +1 -1
  231. package/dist/components/base/index.js +1 -2
  232. package/dist/components/base/index.js.map +1 -1
  233. package/dist/components/index.d.ts +3 -1
  234. package/dist/components/index.d.ts.map +1 -1
  235. package/dist/components/index.js +3 -1
  236. package/dist/components/index.js.map +1 -1
  237. package/dist/hooks/index.d.ts +1 -0
  238. package/dist/hooks/index.d.ts.map +1 -1
  239. package/dist/hooks/index.js +1 -0
  240. package/dist/hooks/index.js.map +1 -1
  241. package/dist/hooks/useCSSProp.d.ts.map +1 -1
  242. package/dist/hooks/useCSSProp.js +6 -6
  243. package/dist/hooks/useCSSProp.js.map +1 -1
  244. package/dist/hooks/useCSSProps.d.ts +11 -13
  245. package/dist/hooks/useCSSProps.d.ts.map +1 -1
  246. package/dist/hooks/useCSSProps.js +11 -19
  247. package/dist/hooks/useCSSProps.js.map +1 -1
  248. package/dist/hooks/useCSSPropsPolyfill.d.ts +1 -1
  249. package/dist/hooks/useCSSPropsPolyfill.d.ts.map +1 -1
  250. package/dist/hooks/useCSSPropsPolyfill.js +12 -20
  251. package/dist/hooks/useCSSPropsPolyfill.js.map +1 -1
  252. package/dist/hooks/useCSSState.d.ts.map +1 -1
  253. package/dist/hooks/useCSSState.js +7 -3
  254. package/dist/hooks/useCSSState.js.map +1 -1
  255. package/dist/hooks/useEffectWithRefDeps.d.ts +2 -2
  256. package/dist/hooks/useEffectWithRefDeps.d.ts.map +1 -1
  257. package/dist/hooks/useEffectWithRefDeps.js +1 -1
  258. package/dist/hooks/useEffectWithRefDeps.js.map +1 -1
  259. package/dist/hooks/useFirstRender.d.ts +14 -0
  260. package/dist/hooks/useFirstRender.d.ts.map +1 -0
  261. package/dist/hooks/useFirstRender.js +20 -0
  262. package/dist/hooks/useFirstRender.js.map +1 -0
  263. package/dist/hooks/useGDS.d.ts +1 -1
  264. package/dist/hooks/usePrevious.d.ts +6 -4
  265. package/dist/hooks/usePrevious.d.ts.map +1 -1
  266. package/dist/hooks/usePrevious.js +6 -4
  267. package/dist/hooks/usePrevious.js.map +1 -1
  268. package/dist/hooks/useRefWithInit.d.ts +2 -2
  269. package/dist/hooks/useRefWithInit.d.ts.map +1 -1
  270. package/dist/hooks/useRefWithInit.js.map +1 -1
  271. package/dist/hooks/useStyleObserver.d.ts +2 -2
  272. package/dist/hooks/useStyleObserver.d.ts.map +1 -1
  273. package/dist/hooks/useStyleObserver.js.map +1 -1
  274. package/dist/icons/CalendarDynamicIcon.d.ts +8 -5
  275. package/dist/icons/CalendarDynamicIcon.d.ts.map +1 -1
  276. package/dist/icons/CalendarDynamicIcon.js +5 -2
  277. package/dist/icons/CalendarDynamicIcon.js.map +1 -1
  278. package/dist/icons/CopyInteractiveIcon.d.ts +5 -4
  279. package/dist/icons/CopyInteractiveIcon.d.ts.map +1 -1
  280. package/dist/icons/CopyInteractiveIcon.js +2 -2
  281. package/dist/icons/CopyInteractiveIcon.js.map +1 -1
  282. package/dist/icons/SidebarLeftInteractiveIcon.d.ts +4 -3
  283. package/dist/icons/SidebarLeftInteractiveIcon.d.ts.map +1 -1
  284. package/dist/icons/SidebarLeftInteractiveIcon.js +2 -2
  285. package/dist/icons/SidebarLeftInteractiveIcon.js.map +1 -1
  286. package/dist/icons/SidebarRightInteractiveIcon.d.ts +4 -3
  287. package/dist/icons/SidebarRightInteractiveIcon.d.ts.map +1 -1
  288. package/dist/icons/SidebarRightInteractiveIcon.js +2 -2
  289. package/dist/icons/SidebarRightInteractiveIcon.js.map +1 -1
  290. package/dist/tailwind-plugin.d.ts.map +1 -1
  291. package/dist/tailwind-plugin.js +8 -5
  292. package/dist/tailwind-plugin.js.map +1 -1
  293. package/dist/utils/cn.d.ts +3 -1
  294. package/dist/utils/cn.d.ts.map +1 -1
  295. package/dist/utils/cn.js +3 -1
  296. package/dist/utils/cn.js.map +1 -1
  297. package/dist/utils/getCSSPropsAttributes.d.ts +10 -3
  298. package/dist/utils/getCSSPropsAttributes.d.ts.map +1 -1
  299. package/dist/utils/getCSSPropsAttributes.js +4 -5
  300. package/dist/utils/getCSSPropsAttributes.js.map +1 -1
  301. package/dist/utils/splitProps.d.ts +1 -4
  302. package/dist/utils/splitProps.d.ts.map +1 -1
  303. package/dist/utils/splitProps.js +2 -7
  304. package/dist/utils/splitProps.js.map +1 -1
  305. package/dist/utils/trimReactNode.d.ts +10 -8
  306. package/dist/utils/trimReactNode.d.ts.map +1 -1
  307. package/dist/utils/trimReactNode.js +10 -8
  308. package/dist/utils/trimReactNode.js.map +1 -1
  309. package/package.json +17 -17
  310. package/src/GDSProvider.tsx +11 -9
  311. package/src/components/Address.tsx +2 -2
  312. package/src/components/Avatar.tsx +10 -11
  313. package/src/components/Breadcrumbs.meta.ts +3 -1
  314. package/src/components/Breadcrumbs.parts.tsx +18 -30
  315. package/src/components/Button.tsx +27 -13
  316. package/src/components/ButtonGroup.meta.ts +8 -0
  317. package/src/components/ButtonGroup.tsx +1 -5
  318. package/src/components/Card.meta.ts +1 -0
  319. package/src/components/Card.tsx +1 -1
  320. package/src/components/Checkbox.meta.ts +1 -5
  321. package/src/components/Chip.meta.ts +23 -0
  322. package/src/components/Chip.parts.tsx +319 -0
  323. package/src/components/Chip.tsx +7 -0
  324. package/src/components/CodeBlock.parts.tsx +75 -50
  325. package/src/components/CodeInline.tsx +3 -3
  326. package/src/components/CopyButton.meta.ts +1 -6
  327. package/src/components/CopyButton.tsx +3 -4
  328. package/src/components/CurrencyInput.meta.ts +1 -5
  329. package/src/components/DescriptionList.parts.tsx +2 -1
  330. package/src/components/Icon.meta.ts +1 -0
  331. package/src/components/Icon.tsx +4 -4
  332. package/src/components/Input.meta.ts +1 -5
  333. package/src/components/Input.tsx +5 -6
  334. package/src/components/Keyboard.tsx +1 -1
  335. package/src/components/Link.meta.ts +1 -0
  336. package/src/components/Link.tsx +2 -3
  337. package/src/components/Menu.meta.ts +39 -1
  338. package/src/components/Menu.parts.tsx +553 -549
  339. package/src/components/Modal.meta.ts +1 -1
  340. package/src/components/Modal.parts.tsx +67 -68
  341. package/src/components/OTCInput.meta.ts +1 -5
  342. package/src/components/OTCInput.tsx +1 -1
  343. package/src/components/Radio.meta.ts +1 -5
  344. package/src/components/SegmentedControl.meta.ts +3 -1
  345. package/src/components/SegmentedControl.parts.tsx +40 -44
  346. package/src/components/Stepper.meta.ts +1 -0
  347. package/src/components/Stepper.parts.tsx +3 -1
  348. package/src/components/Switch.meta.ts +1 -5
  349. package/src/components/TabSet.meta.ts +3 -1
  350. package/src/components/TabSet.parts.tsx +1 -1
  351. package/src/components/TextArea.meta.ts +1 -5
  352. package/src/components/ToggleButton.meta.ts +1 -6
  353. package/src/components/ToggleButton.tsx +1 -3
  354. package/src/components/Tooltip.meta.ts +13 -2
  355. package/src/components/Tooltip.parts.tsx +215 -159
  356. package/src/components/Tooltip.tsx +2 -2
  357. package/src/components/base/Addon.meta.ts +3 -1
  358. package/src/components/base/ButtonOrLink.parts.tsx +91 -73
  359. package/src/components/base/Checkable.parts.tsx +6 -13
  360. package/src/components/base/Field.parts.tsx +5 -5
  361. package/src/components/base/Portal.tsx +5 -7
  362. package/src/components/base/Render.tsx +37 -15
  363. package/src/components/base/Transition.meta.ts +1 -0
  364. package/src/components/base/Transition.tsx +2 -2
  365. package/src/components/base/index.ts +8 -2
  366. package/src/components/index.ts +3 -2
  367. package/src/hooks/index.ts +1 -0
  368. package/src/hooks/useCSSProp.ts +6 -8
  369. package/src/hooks/useCSSProps.ts +13 -22
  370. package/src/hooks/useCSSPropsPolyfill.ts +15 -23
  371. package/src/hooks/useCSSState.ts +11 -6
  372. package/src/hooks/useEffectWithRefDeps.ts +2 -2
  373. package/src/hooks/useFirstRender.ts +36 -0
  374. package/src/hooks/usePrevious.ts +6 -4
  375. package/src/hooks/useRefWithInit.ts +2 -2
  376. package/src/hooks/useStyleObserver.ts +5 -1
  377. package/src/icons/CalendarDynamicIcon.tsx +16 -6
  378. package/src/icons/CopyInteractiveIcon.tsx +10 -5
  379. package/src/icons/SidebarLeftInteractiveIcon.tsx +9 -5
  380. package/src/icons/SidebarRightInteractiveIcon.tsx +9 -5
  381. package/src/tailwind-plugin.ts +8 -5
  382. package/src/utils/cn.ts +3 -1
  383. package/src/utils/getCSSPropsAttributes.ts +13 -8
  384. package/src/utils/splitProps.ts +9 -9
  385. package/src/utils/trimReactNode.tsx +10 -8
  386. package/dist/components/base/ButtonOrLink.meta.d.ts +0 -2
  387. package/dist/components/base/ButtonOrLink.meta.d.ts.map +0 -1
  388. package/dist/components/base/ButtonOrLink.meta.js +0 -6
  389. package/dist/components/base/ButtonOrLink.meta.js.map +0 -1
  390. package/src/components/base/ButtonOrLink.meta.ts +0 -6
@@ -48,7 +48,7 @@ export interface GDSProviderProps extends Omit<ComponentProps<'div'>, 'dir'> {
48
48
  theme?: Theme | undefined
49
49
  /** @default 'ltr' */
50
50
  direction?: ComponentProps<typeof DirectionProvider>['direction'] | undefined
51
- /** Defaults to `en` if `direction` is `ltr`, or `ar` if `direction` is `rtl`. */
51
+ /** @default 'en' // or if `direction` is `rtl`, 'ar' */
52
52
  language?: string | undefined
53
53
  buttonOrLinkConfig?: Omit<ButtonOrLinkConfigProps, 'children'> | undefined
54
54
  }
@@ -77,15 +77,17 @@ export const GDSContext = createContext<GDSContextValue | null>(null)
77
77
  *
78
78
  * @example
79
79
  *
80
- * import { GDSProvider } from '@graphprotocol/gds-react'
80
+ * ```tsx
81
+ * import { GDSProvider } from '@graphprotocol/gds-react'
81
82
  *
82
- * function App() {
83
- * return (
84
- * <GDSProvider theme="dark">
85
- * <YourApp />
86
- * </GDSProvider>
87
- * )
88
- * }
83
+ * function App() {
84
+ * return (
85
+ * <GDSProvider theme="dark">
86
+ * <YourApp />
87
+ * </GDSProvider>
88
+ * )
89
+ * }
90
+ * ```
89
91
  */
90
92
  export function GDSProvider({
91
93
  theme = DEFAULT_THEME,
@@ -68,10 +68,10 @@ export function Address({
68
68
  <span
69
69
  ref={cssPropsPolyfillStateRef}
70
70
  className={cn(
71
- `gds-address isolate root-grid *:col-span-full *:row-span-full u:size-max u:max-w-full
71
+ `gds-address root-grid *:col-span-full *:row-span-full u:size-max u:max-w-full
72
72
  u:state-[show-copy=false]
73
- u:hover:state-[show-copy]
74
73
  u:hover:state-hover
74
+ u:hover:state-[show-copy]
75
75
  u:has-copy-button-focus:state-[show-copy]
76
76
  u:has-nested-not-clickable/address-ref:cursor-default
77
77
  u:has-nested-focus-visible/address-ref:expose-focus
@@ -88,23 +88,17 @@ export function Avatar({
88
88
  {...cssPropsPolyfillAttributes}
89
89
  {...props}
90
90
  render={(renderProps, { Element, category }) => {
91
- let tooltipProps: Omit<TooltipProps, 'children'> = {
92
- content: category !== 'other' ? alt : undefined,
93
- }
94
- if (tooltip !== undefined) {
95
- tooltipProps = isReactNode(tooltip)
96
- ? { content: tooltip }
97
- : { ...tooltipProps, ...tooltip }
98
- }
99
91
  return (
100
- <Tooltip {...tooltipProps}>
92
+ <Tooltip
93
+ content={category !== 'other' ? alt : undefined}
94
+ {...(isReactNode(tooltip) ? { content: tooltip } : tooltip)}
95
+ >
101
96
  <Element {...renderProps}>
102
97
  <span className="nested/avatar-paint pointer-events-none shrink-0">
103
98
  <span
104
99
  className={`
105
100
  block overflow-clip bg-default
106
101
  group-clickable-focus-visible/avatar:outline
107
- **:icon:default-size-[60%]
108
102
  @prop-size-xsmall/avatar:size-4
109
103
  @prop-size-small/avatar:size-5
110
104
  @prop-size-medium/avatar:size-6
@@ -119,6 +113,11 @@ export function Avatar({
119
113
  uu:*:m-auto
120
114
  uu:*:size-full
121
115
  uu:*:object-cover
116
+ i:@prop-size-xsmall/avatar:**:icon:default-size-2.5
117
+ i:@prop-size-small/avatar:**:icon:default-size-3
118
+ i:@prop-size-medium/avatar:**:icon:default-size-4
119
+ i:@prop-size-large/avatar:**:icon:default-size-5
120
+ i:@prop-size-xlarge/avatar:**:icon:default-size-8
122
121
  `}
123
122
  >
124
123
  {src ? (
@@ -130,7 +129,7 @@ export function Avatar({
130
129
  className="[[src^='data:image/bmp']]:[image-rendering:pixelated]"
131
130
  />
132
131
  ) : (
133
- src
132
+ <Tooltip.Collector>{src}</Tooltip.Collector>
134
133
  )
135
134
  ) : null}
136
135
  {alt ? <span className="sr-only">{alt}</span> : null}
@@ -11,4 +11,6 @@ export const BreadcrumbsMeta = createComponent('Breadcrumbs', {
11
11
  },
12
12
  })
13
13
 
14
- export const BreadcrumbsItemMeta = createComponent('BreadcrumbsItem')
14
+ export const BreadcrumbsItemMeta = createComponent('BreadcrumbsItem', {
15
+ isolate: 'allow-inheritance',
16
+ })
@@ -1,13 +1,7 @@
1
1
  'use client'
2
2
 
3
- import {
4
- useCallback,
5
- useEffect,
6
- useRef,
7
- useState,
8
- type ComponentProps,
9
- type CSSProperties,
10
- } from 'react'
3
+ import { useCallback, useRef, useState, type ComponentProps, type CSSProperties } from 'react'
4
+ import { useRenderCount, useThrottledEffect } from '@react-hookz/web'
11
5
  import { isEqual } from '@ver0/deep-equal'
12
6
 
13
7
  import type { GDSComponentProps } from '@graphprotocol/gds-css'
@@ -84,24 +78,16 @@ export function BreadcrumbsRoot({
84
78
  )
85
79
  }, [])
86
80
 
87
- // Call `updateWrappedCount` after every render and on resize
88
- const firstRender = useRef(true)
89
- useEffect(() => {
90
- /**
91
- * The timeout prevents a "Maximum update depth exceeded" error in the unlikely event of an
92
- * infinite loop due to `hiddenItems` causing a layout change that makes items wrap differently.
93
- * But we don't want it on the first render because it can cause a flash of incorrect state.
94
- */
95
- if (firstRender.current) {
96
- firstRender.current = false
97
- updateWrappedCount()
98
- return
99
- }
100
- const timeout = window.setTimeout(() => {
101
- updateWrappedCount()
102
- }, 0)
103
- return () => window.clearTimeout(timeout)
104
- })
81
+ /**
82
+ * Call `updateWrappedCount` after every render, with `useThrottledEffect` to prevent a "Maximum
83
+ * update depth exceeded" error in the unlikely event of an infinite loop due to `hiddenItems`
84
+ * causing a layout change that makes items wrap differently (change `-ms-10` below to `-ms-20` to
85
+ * see how that can happen).
86
+ */
87
+ const renderCount = useRenderCount()
88
+ useThrottledEffect(updateWrappedCount, [renderCount], 1)
89
+
90
+ // Call `updateWrappedCount` on resize
105
91
  const resizeObserverRef = useRef<ResizeObserver | null>(null)
106
92
  const hiddenContainerRefCallback = useCallback(
107
93
  (element: HTMLDivElement | null) => {
@@ -123,7 +109,7 @@ export function BreadcrumbsRoot({
123
109
  ref={cssPropsPolyfillPassedRef}
124
110
  aria-label={ariaLabel}
125
111
  className={cn(
126
- 'gds-breadcrumbs isolate root-grid *:col-span-full *:row-span-full u:max-w-full u:text-14',
112
+ 'gds-breadcrumbs root-grid *:col-span-full *:row-span-full u:max-w-full u:text-14',
127
113
  className,
128
114
  )}
129
115
  {...getCSSPropsAttributes(BreadcrumbsMeta, { align }, style)}
@@ -184,7 +170,8 @@ export function BreadcrumbsRoot({
184
170
  <DotsThreeIcon alt="Show hidden items" className="top-1.25" />
185
171
  </Button>
186
172
  }
187
- position={{ align: 'center', gap: 4 }}
173
+ align="center"
174
+ gap={4}
188
175
  >
189
176
  {hiddenItems.map((item, index) => (
190
177
  <Menu.Item
@@ -234,6 +221,7 @@ BreadcrumbsRoot.displayName = 'Breadcrumbs'
234
221
  export declare namespace BreadcrumbsItemProps {
235
222
  interface BaseProps extends GDSComponentProps<typeof BreadcrumbsItemMeta> {
236
223
  addonBefore?: AddonValue | undefined
224
+ // TODO: Add `addonAfter` prop, e.g. for `CaretDownInteractiveIcon` when `Breadcrumbs.Item` is a menu trigger?
237
225
  /**
238
226
  * Whether this breadcrumb item represents the current page. Defaults to `true` if no `href` is
239
227
  * passed, or `false` otherwise.
@@ -272,9 +260,9 @@ export function BreadcrumbsItem({
272
260
  ref={stateRef}
273
261
  role="listitem"
274
262
  className={cn(
275
- `nested/breadcrumbs-item-wrapper gds-breadcrumbs-item root-block last:float-right
263
+ `nested/breadcrumbs-item-wrapper gds-breadcrumbs-item root-block
276
264
  u:has-nested-current/breadcrumbs-item-ref:expose-current
277
- u:has-nested-hover/breadcrumbs-item-ref:state-hover
265
+ u:has-nested-hover/breadcrumbs-item-ref:expose-hover
278
266
  u:has-nested-focus-visible/breadcrumbs-item-ref:expose-focus
279
267
  u:i:has-nested-not-clickable/breadcrumbs-item-ref:state-idle
280
268
  ii:shrink-0`,
@@ -10,7 +10,7 @@ import { cn, getCSSPropsAttributes, isReactNode } from '../utils/index.ts'
10
10
  import { renderAddon, type AddonValue } from './base/Addon.tsx'
11
11
  import { ButtonOrLink, type ButtonOrLinkProps } from './base/ButtonOrLink.tsx'
12
12
  import { ButtonMeta } from './Button.meta.ts'
13
- import { Tooltip, useCollectedTooltip, type TooltipProps } from './Tooltip.tsx'
13
+ import { Tooltip, type TooltipProps } from './Tooltip.tsx'
14
14
 
15
15
  export declare namespace ButtonProps {
16
16
  interface BaseProps extends GDSComponentProps<typeof ButtonMeta> {
@@ -86,14 +86,8 @@ export function Button({
86
86
  const addonAfter = getAddon(passedAddonAfter, loading)
87
87
  const replaceChildrenWithLoading = loading && !addonBefore && !addonAfter
88
88
 
89
- const { onCollect, collectedContent } = useCollectedTooltip()
90
- let tooltipProps: Omit<TooltipProps, 'children'> = { content: collectedContent }
91
- if (tooltip !== undefined) {
92
- tooltipProps = isReactNode(tooltip) ? { content: tooltip } : { ...tooltipProps, ...tooltip }
93
- }
94
-
95
89
  return (
96
- <Tooltip {...tooltipProps}>
90
+ <Tooltip {...(isReactNode(tooltip) ? { content: tooltip } : tooltip)}>
97
91
  <ButtonOrLink
98
92
  ref={cssPropsPolyfillStatePassedRef}
99
93
  disabled={disabled || (loading ? 'focusable' : false)}
@@ -101,7 +95,7 @@ export function Button({
101
95
  data-variant={cssProps.variant}
102
96
  data-hide-label={cssProps.hideLabel || undefined}
103
97
  className={cn(
104
- `gds-button root-flex flex-col u:size-max u:max-w-full u:font-regular u:outline-0
98
+ `gds-button root-flex flex-col u:size-max u:max-w-full u:outline-0
105
99
  u:checked:state-checked
106
100
  u:hover:state-hover
107
101
  u:focus-visible:state-focus
@@ -120,6 +114,8 @@ export function Button({
120
114
  ${/* But if the button group is `fullWidth`, then all the buttons it contains should be equal width, regardless of their content */ ''}
121
115
  u:@prop-orientation-horizontal/button-group:@prop-full-width-true/button-group:grow
122
116
  u:@prop-orientation-horizontal/button-group:@prop-full-width-true/button-group:basis-0
117
+ ${/* In a button group, the group itself should be the stacking context */ ''}
118
+ u:in-button-group:isolation-auto
123
119
  ${/* Extend the tap area of a naked button */ ''}
124
120
  data-[variant=naked]:before:absolute
125
121
  data-[variant=naked]:before:-inset-2`,
@@ -130,6 +126,14 @@ export function Button({
130
126
  {...cssPropsPolyfillAttributes}
131
127
  {...props}
132
128
  >
129
+ {/* Prevent the extended tap area of a naked button from overlapping the tap area of another naked button in the same group */}
130
+ <span
131
+ className={`
132
+ absolute inset-[calc(-1*var(--gds-button-group-gap)/2)] z-10
133
+ not-in-button-group:hidden
134
+ @prop-not-variant-naked/button:hidden
135
+ `}
136
+ />
133
137
  <span
134
138
  className={`
135
139
  nested/button-paint pointer-events-none flex h-(--height) max-w-full min-w-full grow items-center justify-center
@@ -170,7 +174,7 @@ export function Button({
170
174
  @prop-variant-naked/button:-inset-0.5
171
175
  `}
172
176
  />
173
- {addonBefore ? <ButtonAddon>{addonBefore}</ButtonAddon> : null}
177
+ {addonBefore ? <ButtonAddon side="before">{addonBefore}</ButtonAddon> : null}
174
178
  {children ? (
175
179
  <span
176
180
  data-loading={replaceChildrenWithLoading || undefined}
@@ -186,22 +190,32 @@ export function Button({
186
190
  u:i:@state-[addon-only=auto]/button:px-0`,
187
191
  )}
188
192
  >
189
- <Tooltip.Collector onCollect={onCollect}>{children}</Tooltip.Collector>
193
+ <Tooltip.Collector>{children}</Tooltip.Collector>
190
194
  </span>
191
195
  ) : null}
192
196
  {replaceChildrenWithLoading ? loadingIcon : null}
193
- {addonAfter ? <ButtonAddon>{addonAfter}</ButtonAddon> : null}
197
+ {addonAfter ? <ButtonAddon side="after">{addonAfter}</ButtonAddon> : null}
194
198
  </span>
195
199
  </ButtonOrLink>
196
200
  </Tooltip>
197
201
  )
198
202
  }
199
203
 
200
- function ButtonAddon({ className, children, ...props }: ComponentProps<'span'>) {
204
+ function ButtonAddon({
205
+ side,
206
+ className,
207
+ children,
208
+ ...props
209
+ }: ComponentProps<'span'> & { side: 'before' | 'after' }) {
201
210
  return (
202
211
  <span
212
+ data-side={side}
203
213
  className={cn(
204
214
  `gds-addon root-flex items-center justify-center u:h-(--gds-addon-size) u:min-w-(--gds-addon-size) u:shrink-0
215
+ u:has-avatar-group:data-[side=after]:ps-0.5
216
+ u:has-tag:data-[side=after]:ps-0.5
217
+ u:has-avatar-group:data-[side=before]:pe-0.5
218
+ u:has-tag:data-[side=before]:pe-0.5
205
219
  u:has-nested/button-loading:opacity-100`,
206
220
  className,
207
221
  )}
@@ -29,4 +29,12 @@ export const ButtonGroupMeta = createComponent('ButtonGroup', {
29
29
  defaultValue: false,
30
30
  },
31
31
  },
32
+ vars: {
33
+ gap: {
34
+ '@variant @prop-size-xsmall/button-group': '--spacing(1)',
35
+ '@variant @prop-size-small/button-group': '--spacing(1.5)',
36
+ '@variant @prop-size-medium/button-group': '--spacing(2)',
37
+ '@variant @prop-size-large/button-group': '--spacing(2)',
38
+ },
39
+ },
32
40
  })
@@ -77,11 +77,7 @@ export function ButtonGroup({
77
77
  * mentioned, vertical in horizontal doesn't make sense.
78
78
  */
79
79
  className={`
80
- flex items-center
81
- @prop-size-xsmall/button-group:gap-1
82
- @prop-size-small/button-group:gap-1.5
83
- @prop-size-medium/button-group:gap-2
84
- @prop-size-large/button-group:gap-2
80
+ flex items-center gap-(--gds-button-group-gap)
85
81
  @prop-orientation-vertical/button-group:not-in-button-group-[[data-gds-prop-polyfill-orientation=gds-horizontal]]:flex-col
86
82
  i:*:@prop-orientation-vertical/button-group:not-in-button-group-[[data-gds-prop-polyfill-orientation=gds-horizontal]]:w-full
87
83
  `}
@@ -1,6 +1,7 @@
1
1
  import { createComponent } from '@graphprotocol/gds-css'
2
2
 
3
3
  export const CardMeta = createComponent('Card', {
4
+ isolate: 'allow-inheritance',
4
5
  cssProps: {
5
6
  /** @default 'secondary' */
6
7
  variant: {
@@ -121,7 +121,7 @@ export function Card({
121
121
  `}
122
122
  {...state.polyfillAttributes}
123
123
  {...nestedProps}
124
- {...((as !== undefined ? { as: 'span' } : {}) as Record<string, unknown>)}
124
+ {...(as !== undefined && ({ as: 'span' } as Record<string, unknown>))}
125
125
  render={(renderProps, { Element, category, target }) => {
126
126
  const renderChildrenOutside = interactiveContent === true && category !== 'other'
127
127
  const contentId =
@@ -3,9 +3,5 @@ import { createComponent } from '@graphprotocol/gds-css'
3
3
  import { CheckableMeta } from './base/Checkable.meta.ts'
4
4
 
5
5
  export const CheckboxMeta = createComponent('Checkbox', {
6
- containerName: 'gds-checkable',
7
- cssProps: {
8
- /** @default 'medium' */
9
- size: CheckableMeta.cssProps.size,
10
- },
6
+ extends: CheckableMeta,
11
7
  })
@@ -0,0 +1,23 @@
1
+ import { createComponent } from '@graphprotocol/gds-css'
2
+
3
+ export const ChipMeta = createComponent('Chip', {
4
+ cssProps: {
5
+ /** @default 'medium' */
6
+ size: {
7
+ type: 'values',
8
+ values: ['small', 'medium', 'large'],
9
+ defaultValue: 'medium',
10
+ },
11
+ },
12
+ })
13
+
14
+ export const ChipGroupMeta = createComponent('ChipGroup', {
15
+ cssProps: {
16
+ /** @default 'medium' */
17
+ size: {
18
+ type: 'values',
19
+ values: ChipMeta.cssProps.size.values,
20
+ defaultValue: ChipMeta.cssProps.size.defaultValue,
21
+ },
22
+ },
23
+ })