@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
@@ -0,0 +1,319 @@
1
+ 'use client'
2
+
3
+ import { createContext, useContext, type ComponentProps, type ReactNode } from 'react'
4
+ import { Checkbox } from '@base-ui/react/checkbox'
5
+ import { CheckboxGroup } from '@base-ui/react/checkbox-group'
6
+ import { Radio } from '@base-ui/react/radio'
7
+ import { RadioGroup } from '@base-ui/react/radio-group'
8
+
9
+ import type { GDSComponentProps } from '@graphprotocol/gds-css'
10
+
11
+ import { useAutoValue, useCSSPropsPolyfill, useCSSState, useGDS } from '../hooks/index.ts'
12
+ import { cn, getCSSPropsAttributes, splitProps } from '../utils/index.ts'
13
+ import { renderAddon, type AddonValue } from './base/Addon.tsx'
14
+ import { ButtonOrLink, type ButtonOrLinkProps } from './base/ButtonOrLink.tsx'
15
+ import { ChipGroupMeta, ChipMeta } from './Chip.meta.ts'
16
+
17
+ type ExtractFn<T> = T extends (...args: infer A) => infer R ? (...args: A) => R : never
18
+
19
+ export declare namespace ChipProps {
20
+ interface BaseProps extends GDSComponentProps<typeof ChipMeta> {
21
+ /** Name used to submit the chip's value when inside a `<Chip.Group type="checkbox">` in a form. */
22
+ name?: string | undefined
23
+ /** Value used to identify this chip when inside a `<Chip.Group>`. */
24
+ value?: string | undefined
25
+ addonBefore?: AddonValue | undefined
26
+ addonAfter?: AddonValue | undefined
27
+ count?: ReactNode | undefined
28
+ }
29
+ interface ButtonProps
30
+ extends
31
+ BaseProps,
32
+ Omit<ButtonOrLinkProps.ButtonProps, 'value'>,
33
+ ButtonOrLinkProps.DisableableProps {}
34
+ interface LinkProps
35
+ extends BaseProps, ButtonOrLinkProps.LinkProps, ButtonOrLinkProps.DisableableProps {}
36
+ }
37
+
38
+ export type ChipProps = ChipProps.ButtonProps | ChipProps.LinkProps
39
+
40
+ interface ChipGroupContextValue {
41
+ type: 'checkbox' | 'radio'
42
+ }
43
+
44
+ const ChipGroupContext = createContext<ChipGroupContextValue | null>(null)
45
+
46
+ export function ChipRoot({
47
+ size,
48
+ name,
49
+ value: passedValue,
50
+ addonBefore,
51
+ addonAfter,
52
+ count,
53
+ disabled = false,
54
+ className,
55
+ style,
56
+ children,
57
+ ...props
58
+ }: ChipProps) {
59
+ useGDS()
60
+
61
+ const { rootProps, nestedProps } = splitProps(props)
62
+
63
+ const autoValue = useAutoValue(children)
64
+ const value = passedValue !== undefined ? passedValue : autoValue
65
+
66
+ const groupContext = useContext(ChipGroupContext)
67
+
68
+ const [stateRef, state] = useCSSState({
69
+ pointer: undefined,
70
+ focus: undefined,
71
+ checked: undefined,
72
+ disabled: Boolean(disabled),
73
+ })
74
+ const [cssPropsPolyfillStateRef, cssPropsPolyfillAttributes] = useCSSPropsPolyfill(
75
+ ChipMeta,
76
+ { size },
77
+ { ref: stateRef },
78
+ )
79
+
80
+ return (
81
+ <div
82
+ ref={cssPropsPolyfillStateRef}
83
+ data-type={groupContext?.type ?? 'plain'}
84
+ className={cn(
85
+ `gds-chip root-flex flex-col u:size-max u:max-w-full
86
+ u:has-nested-checked/chip-ref:expose-checked
87
+ u:has-nested-hover/chip-ref:expose-hover
88
+ u:has-nested-focus-visible/chip-ref:expose-focus
89
+ u:has-nested-disabled/chip-ref:expose-disabled
90
+ u:i:has-nested-checked/chip-ref:data-[type=radio]:state-idle`,
91
+ className,
92
+ )}
93
+ {...state.exposedAttributes}
94
+ {...state.polyfillAttributes}
95
+ {...getCSSPropsAttributes(ChipMeta, { size }, style)}
96
+ {...cssPropsPolyfillAttributes}
97
+ {...rootProps}
98
+ >
99
+ {(() => {
100
+ if (!groupContext || props.href !== undefined) {
101
+ return renderButtonOrLink({})
102
+ }
103
+
104
+ if (groupContext.type === 'checkbox') {
105
+ return (
106
+ <Checkbox.Root
107
+ name={name ?? (undefined as never)}
108
+ value={typeof value === 'string' ? value : (undefined as never)}
109
+ disabled={Boolean(disabled)}
110
+ nativeButton
111
+ render={renderButtonOrLink}
112
+ />
113
+ )
114
+ } else {
115
+ return (
116
+ <Radio.Root
117
+ value={value}
118
+ disabled={Boolean(disabled)}
119
+ nativeButton
120
+ render={renderButtonOrLink}
121
+ />
122
+ )
123
+ }
124
+
125
+ function renderButtonOrLink({
126
+ tabIndex: _tabIndex,
127
+ defaultChecked: _defaultChecked,
128
+ ...renderProps
129
+ }: Parameters<
130
+ ExtractFn<ComponentProps<typeof Checkbox.Root | typeof Radio.Root>['render']>
131
+ >[0]) {
132
+ return (
133
+ <ButtonOrLink
134
+ {...renderProps}
135
+ disabled={disabled}
136
+ className={cn(
137
+ renderProps.className,
138
+ `nested/chip-ref flex grow items-center justify-center
139
+ rounded-full border border-default text-muted transition
140
+ @state-checked/chip:border-brand-muted
141
+ @state-checked/chip:bg-brand-subtlest
142
+ @state-checked/chip:text-default
143
+ @state-hover/chip:border-strong
144
+ @state-hover/chip:text-default
145
+ @state-hover/chip:@state-checked/chip:border-brand-default
146
+ @state-hover/chip:@state-checked/chip:bg-brand-subtler
147
+ @prop-size-small/chip:h-6
148
+ @prop-size-small/chip:px-1
149
+ @prop-size-small/chip:text-12
150
+ @prop-size-medium/chip:h-8
151
+ @prop-size-medium/chip:px-1.5
152
+ @prop-size-medium/chip:text-14
153
+ @prop-size-large/chip:h-10
154
+ @prop-size-large/chip:px-2
155
+ @prop-size-large/chip:text-16
156
+ u:*:transition-opacity
157
+ u:*:@state-disabled/chip:opacity-disabled
158
+ u:*:@state-disabled/chip:grayscale
159
+ u:@prop-size-small/chip:addon-small
160
+ u:@prop-size-medium/chip:addon-medium
161
+ u:@prop-size-large/chip:addon-large
162
+ i:@state-disabled/chip:border-muted
163
+ i:@state-disabled/chip:bg-transparent
164
+ i:@state-disabled/chip:text-muted
165
+ i:@state-disabled/chip:@state-checked/chip:border-transparent
166
+ i:@state-disabled/chip:@state-checked/chip:bg-brand-subtlest`,
167
+ )}
168
+ {...nestedProps}
169
+ >
170
+ {/* Ensure rounded corners are clickable */}
171
+ <span className="absolute inset-0 not-in-clickable:hidden" />
172
+ {addonBefore ? <ChipAddon side="before">{renderAddon(addonBefore)}</ChipAddon> : null}
173
+ <span className="flex items-baseline gap-1 px-1">
174
+ <span className="truncate">{children}</span>
175
+ {count ? (
176
+ <span
177
+ className={`
178
+ max-w-full shrink-0 truncate text-subtle transition
179
+ @state-enabled/chip:@state-checked/chip:text-current
180
+ @state-enabled/chip:@state-hover/chip:text-current
181
+ @prop-size-small/chip:text-10
182
+ @prop-size-medium/chip:text-12
183
+ @prop-size-large/chip:text-14
184
+ `}
185
+ >
186
+ {count}
187
+ </span>
188
+ ) : null}
189
+ </span>
190
+ {addonAfter ? <ChipAddon side="after">{renderAddon(addonAfter)}</ChipAddon> : null}
191
+ </ButtonOrLink>
192
+ )
193
+ }
194
+ })()}
195
+ </div>
196
+ )
197
+ }
198
+ ChipRoot.displayName = 'Chip'
199
+
200
+ function ChipAddon({
201
+ side,
202
+ className,
203
+ children,
204
+ ...props
205
+ }: ComponentProps<'span'> & { side: 'before' | 'after' }) {
206
+ return (
207
+ <span
208
+ data-side={side}
209
+ className={cn(
210
+ `gds-addon root-flex items-center justify-center u:h-(--gds-addon-size) u:min-w-(--gds-addon-size) u:shrink-0
211
+ u:has-avatar-group:data-[side=after]:ps-0.5
212
+ u:has-tag:data-[side=after]:ps-0.5
213
+ u:has-avatar-group:data-[side=before]:pe-0.5
214
+ u:has-tag:data-[side=before]:pe-0.5`,
215
+ className,
216
+ )}
217
+ {...props}
218
+ >
219
+ {children}
220
+ </span>
221
+ )
222
+ }
223
+
224
+ export declare namespace ChipGroupProps {
225
+ interface BaseProps
226
+ extends Omit<ComponentProps<'div'>, 'onChange'>, GDSComponentProps<typeof ChipGroupMeta> {}
227
+ interface CheckboxProps extends BaseProps {
228
+ type: 'checkbox'
229
+ name?: undefined
230
+ /** Array of checked/selected chip values. */
231
+ value?: string[] | undefined
232
+ defaultValue?: string[] | undefined
233
+ onChange?: ((value: string[]) => void) | undefined
234
+ }
235
+ interface RadioProps extends BaseProps {
236
+ type: 'radio'
237
+ /** Name used to submit the checked/selected chip value when inside a form. */
238
+ name?: string | undefined
239
+ /** Checked/selected chip value. */
240
+ value?: string | undefined
241
+ defaultValue?: string | undefined
242
+ onChange?: ((value: string) => void) | undefined
243
+ }
244
+ }
245
+
246
+ export type ChipGroupProps = ChipGroupProps.CheckboxProps | ChipGroupProps.RadioProps
247
+
248
+ export function ChipGroup({
249
+ ref: passedRef,
250
+ type,
251
+ name,
252
+ value,
253
+ defaultValue,
254
+ onChange,
255
+ size,
256
+ className,
257
+ style,
258
+ children,
259
+ ...props
260
+ }: ChipGroupProps) {
261
+ useGDS()
262
+
263
+ if (props['aria-label'] === undefined && props['aria-labelledby'] === undefined) {
264
+ // oxlint-disable-next-line no-console
265
+ console.warn(
266
+ '[Chip.Group] One of `aria-label` or `aria-labelledby` should be set for accessibility',
267
+ )
268
+ }
269
+
270
+ const [cssPropsPolyfillPassedRef, cssPropsPolyfillAttributes, cssProps] = useCSSPropsPolyfill(
271
+ ChipGroupMeta,
272
+ { size },
273
+ { ref: passedRef, returnPropValues: { size } },
274
+ )
275
+
276
+ const sharedProps = {
277
+ ref: cssPropsPolyfillPassedRef,
278
+ 'data-size': cssProps.size,
279
+ className: cn(
280
+ `gds-chip-group root-flex u:flex-wrap
281
+ u:data-[size=large]:gap-2
282
+ u:data-[size=medium]:gap-1.5
283
+ u:data-[size=small]:gap-1
284
+ u:**:chip:@prop-size-small/chip-group:prop-size-small
285
+ u:**:chip:@prop-size-medium/chip-group:prop-size-medium
286
+ u:**:chip:@prop-size-large/chip-group:prop-size-large`,
287
+ className,
288
+ ),
289
+ ...getCSSPropsAttributes(ChipGroupMeta, { size }, style),
290
+ ...cssPropsPolyfillAttributes,
291
+ ...props,
292
+ }
293
+
294
+ return (
295
+ <ChipGroupContext.Provider value={{ type }}>
296
+ {type === 'checkbox' ? (
297
+ <CheckboxGroup
298
+ {...sharedProps}
299
+ {...(value !== undefined && { value })}
300
+ {...(defaultValue !== undefined && { defaultValue })}
301
+ {...(onChange !== undefined && { onValueChange: onChange })}
302
+ >
303
+ {children}
304
+ </CheckboxGroup>
305
+ ) : (
306
+ <RadioGroup
307
+ name={name ?? (undefined as never)}
308
+ {...sharedProps}
309
+ {...(value !== undefined && { value })}
310
+ {...(defaultValue !== undefined && { defaultValue })}
311
+ {...(onChange !== undefined && { onValueChange: onChange as (value: unknown) => void })}
312
+ >
313
+ {children}
314
+ </RadioGroup>
315
+ )}
316
+ </ChipGroupContext.Provider>
317
+ )
318
+ }
319
+ ChipGroup.displayName = 'Chip.Group'
@@ -0,0 +1,7 @@
1
+ import { ChipGroup, ChipRoot } from './Chip.parts.tsx'
2
+
3
+ export const Chip = Object.assign(ChipRoot, {
4
+ Group: ChipGroup,
5
+ })
6
+
7
+ export type { ChipProps, ChipGroupProps } from './Chip.parts.tsx'
@@ -39,7 +39,9 @@ import {
39
39
 
40
40
  import { useControlled, useCSSPropsPolyfill, useGDS } from '../hooks/index.ts'
41
41
  import { cn, getCSSPropsAttributes, type Stringifiable } from '../utils/index.ts'
42
+ import { renderAddon, type AddonValue } from './base/Addon.tsx'
42
43
  import { Button } from './Button.tsx'
44
+ import { ButtonGroup } from './ButtonGroup.tsx'
43
45
  import { CodeBlockMeta } from './CodeBlock.meta.ts'
44
46
  import { CopyButton } from './CopyButton.tsx'
45
47
  import { TabSet, TabSetContext, type TabSetTabProps } from './TabSet.tsx'
@@ -150,8 +152,21 @@ function CodeBlockHeader({ buttons, className, children, ...props }: CodeBlockHe
150
152
  )}
151
153
  {...props}
152
154
  >
153
- <div className="grow">{children}</div>
154
- {buttons ? <div className="flex shrink-0 items-center gap-3 pe-2.5">{buttons}</div> : null}
155
+ <div className="min-w-em grow">{children}</div>
156
+ {buttons ? (
157
+ <ButtonGroup
158
+ variant="naked"
159
+ size="medium"
160
+ /**
161
+ * The `not-has-button:hidden` class prevents an empty `ButtonGroup` from taking space
162
+ * in the layout, which can happen when the stuff that `CodeBlockTabs` passes as
163
+ * `buttons` ends up rendering nothing (which we can't know in advance).
164
+ */
165
+ className="me-2 shrink-0 self-center not-has-button:hidden"
166
+ >
167
+ {buttons}
168
+ </ButtonGroup>
169
+ ) : null}
155
170
  <div className="absolute inset-x-0 bottom-0 border-b border-subtle" />
156
171
  </figcaption>
157
172
  </CodeBlockHeaderContext.Provider>
@@ -162,8 +177,8 @@ export interface CodeBlockProps extends Omit<ComponentProps<'div'>, 'onCopy'>, S
162
177
  /** @default 'text' */
163
178
  language?: Language | undefined
164
179
  /** Defaults to an icon that matches the `language`. */
165
- icon?: ReactNode | undefined
166
- label?: string | undefined
180
+ icon?: AddonValue | undefined
181
+ label?: ReactNode | undefined
167
182
  children: Stringifiable
168
183
  }
169
184
 
@@ -314,64 +329,74 @@ export function CodeBlockRoot({
314
329
  })
315
330
  }, [highlighter, childrenString, activeTheme, language, highlights, secrets, diff])
316
331
 
317
- const buttons = (
318
- <>
319
- {secrets.length > 0 ? (
320
- <Button variant="naked" size="medium" onClick={() => setMasked(!masked)}>
321
- {masked ? (
322
- <EyeIcon alt={`Reveal secret${secrets.length > 1 ? 's' : ''}`} />
323
- ) : (
324
- <EyeClosedIcon alt={`Hide secret${secrets.length > 1 ? 's' : ''}`} />
325
- )}
326
- </Button>
327
- ) : null}
328
- {copy ? (
329
- <CopyButton
330
- variant="naked"
331
- size="medium"
332
- value={typeof copy === 'string' ? copy : codeToCopy}
333
- onCopy={onCopy}
334
- />
335
- ) : null}
336
- </>
337
- )
332
+ const buttonElements = [
333
+ secrets.length > 0 && (
334
+ <Button key="reveal" onClick={() => setMasked(!masked)}>
335
+ {masked ? (
336
+ <EyeIcon alt={`Reveal secret${secrets.length > 1 ? 's' : ''}`} />
337
+ ) : (
338
+ <EyeClosedIcon alt={`Hide secret${secrets.length > 1 ? 's' : ''}`} />
339
+ )}
340
+ </Button>
341
+ ),
342
+ copy && (
343
+ <CopyButton key="copy" value={typeof copy === 'string' ? copy : codeToCopy} onCopy={onCopy} />
344
+ ),
345
+ ].filter(Boolean)
346
+
347
+ const buttons = buttonElements.length > 0 ? <>{buttonElements}</> : null
338
348
 
339
349
  if (hasAncestorHeader) {
340
350
  return buttons
341
351
  }
342
352
 
343
353
  const Wrapper = hasAncestorTabs ? 'div' : CodeBlockWrapper
344
- const headerContent = (
345
- <div className="flex h-full items-center gap-2 ps-2">
346
- {icon ? (
347
- <span className="flex size-4 shrink-0 items-center justify-center **:icon:default-size-3.5">
348
- {icon}
349
- </span>
350
- ) : null}
351
- {label ? <span className="truncate text-14 text-muted">{label}</span> : null}
352
- </div>
353
- )
354
+ const headerContent =
355
+ label || passedIcon ? (
356
+ <div className="flex h-full items-center gap-2 ps-2">
357
+ {icon ? (
358
+ <span className="flex size-4 shrink-0 items-center justify-center **:icon:default-size-3.5">
359
+ {renderAddon(icon)}
360
+ </span>
361
+ ) : null}
362
+ {label ? <span className="truncate text-14 text-muted">{label}</span> : null}
363
+ </div>
364
+ ) : null
354
365
 
355
366
  return (
356
367
  <Wrapper
357
368
  ref={cssPropsPolyfillPassedRef}
369
+ data-has-header={Boolean(headerContent) || undefined}
358
370
  className={cn(
359
- `gds-code-block isolate root-flex flex-col
360
- u:not-in-code-block-tabs:min-h-24
361
- u:not-in-code-block-tabs:rounded-8`,
371
+ `gds-code-block group/code-block root-flex flex-col
372
+ u:not-in-code-block-tabs:rounded-8
373
+ u:not-in-code-block-tabs:not-data-has-header:min-h-13
374
+ u:not-in-code-block-tabs:data-has-header:min-h-24`,
362
375
  className,
363
376
  )}
364
377
  {...getCSSPropsAttributes(CodeBlockMeta, { wrap, lineNumbers, rows }, style)}
365
378
  {...cssPropsPolyfillAttributes}
366
379
  {...props}
367
380
  >
368
- {!hasAncestorTabs ? (
369
- <CodeBlockHeader buttons={buttons}>{headerContent}</CodeBlockHeader>
370
- ) : null}
371
- {hasAncestorTabs && label ? (
372
- <div className="flex h-10 shrink-0 px-2">
373
- <div className="absolute inset-0 border-b border-subtle" />
374
- {headerContent}
381
+ {headerContent ? (
382
+ hasAncestorTabs ? (
383
+ <div className="flex h-10 shrink-0 px-2">
384
+ <div className="absolute inset-0 border-b border-subtle" />
385
+ {headerContent}
386
+ </div>
387
+ ) : (
388
+ <CodeBlockHeader buttons={buttons}>{headerContent}</CodeBlockHeader>
389
+ )
390
+ ) : !hasAncestorTabs && buttons ? (
391
+ <div
392
+ className={`
393
+ absolute end-3 top-3 z-10 opacity-0 transition
394
+ group-not-hover/code-block:pointer-events-none
395
+ group-hover/code-block:opacity-100
396
+ has-focus-visible:opacity-100
397
+ `}
398
+ >
399
+ <ButtonGroup size="xsmall">{buttons}</ButtonGroup>
375
400
  </div>
376
401
  ) : null}
377
402
  <pre
@@ -384,7 +409,7 @@ export function CodeBlockRoot({
384
409
  * that case, so it should be fine.
385
410
  */
386
411
  className={`
387
- h-(--max-height) max-h-max grow overflow-auto font-mono text-14
412
+ isolate scrollbar-thin h-(--max-height) max-h-max grow overflow-auto font-mono text-14
388
413
  [--max-height:calc(9999px-min(9999px,var(--gds-code-block-rows)*9999px)+var(--gds-code-block-rows)*1lh+2*var(--padding))]
389
414
  [--padding:--spacing(4)]
390
415
  firefox:h-auto
@@ -427,8 +452,8 @@ export function CodeBlockRoot({
427
452
  <span
428
453
  aria-hidden
429
454
  className={`
430
- hidden min-w-4 text-center text-12 text-subtle select-none
431
- @prop-line-numbers-true/code-block:block
455
+ min-w-4 text-center text-12 text-subtle select-none
456
+ @prop-line-numbers-false/code-block:hidden
432
457
  `}
433
458
  >
434
459
  {lineIndex + 1}
@@ -544,7 +569,7 @@ export function CodeBlockTabs<const Tabs extends readonly Tab[], T extends TabVa
544
569
  className,
545
570
  children,
546
571
  ...props
547
- }: CodeBlockTabsProps<Tabs, T> & { ref?: React.Ref<HTMLDivElement> }) {
572
+ }: CodeBlockTabsProps<Tabs, T>) {
548
573
  if (passedTabs.length === 0) {
549
574
  throw new Error('[CodeBlock.Tabs] At least 1 tab is required')
550
575
  }
@@ -583,7 +608,7 @@ export function CodeBlockTabs<const Tabs extends readonly Tab[], T extends TabVa
583
608
  defaultValue={defaultValue ?? (tabs[0]!.value as T)}
584
609
  onChange={onChange}
585
610
  className={cn(
586
- `gds-code-block-tabs isolate root-flex flex-col u:min-h-24 u:rounded-8
611
+ `gds-code-block-tabs root-flex flex-col u:min-h-24 u:rounded-8
587
612
  u:[--saved-default-line-numbers:var(--gds-default-line-numbers)]
588
613
  u:[--saved-default-rows:var(--gds-default-rows)]
589
614
  u:[--saved-default-wrap:var(--gds-default-wrap)]
@@ -15,8 +15,8 @@ export function CodeInline({ className, children, ...props }: CodeInlineProps) {
15
15
  return (
16
16
  <span
17
17
  className={cn(
18
- `gds-code-inline root-inline
19
- u:font-mono u:font-regular u:wrap-anywhere u:whitespace-pre-wrap u:text-code u:in-link:text-link-idle
18
+ `gds-code-inline root-inline u:font-mono u:text-size-inherit u:wrap-anywhere u:whitespace-pre-wrap u:text-code
19
+ u:in-link:text-link-idle
20
20
  ${/* If inside a link, ensure the underline of the link appears over the background and border by default */ ''}
21
21
  u:in-link:-z-10
22
22
  ${/* Prevent messing with the line height (this needs to be set on the root _and_ on the inner element) */ ''}
@@ -44,7 +44,7 @@ export function CodeInline({ className, children, ...props }: CodeInlineProps) {
44
44
  in-link:transition-[border-radius]
45
45
  in-link-hover:rounded-b-none
46
46
  ${/* Prevent incorrect alignment when empty */ ''}
47
- empty:after:content-(--content-nbsp)
47
+ empty:after:content-nbsp
48
48
  `}
49
49
  {...props}
50
50
  >
@@ -5,17 +5,12 @@ import { ButtonMeta } from './Button.meta.ts'
5
5
  type ButtonVariant = (typeof ButtonMeta.cssProps.variant.values)[number]
6
6
 
7
7
  export const CopyButtonMeta = createComponent('CopyButton', {
8
- containerName: 'gds-button',
8
+ extends: ButtonMeta,
9
9
  cssProps: {
10
- /** @default 'secondary' */
11
10
  variant: {
12
11
  type: 'values',
13
12
  values: ['secondary', 'tertiary', 'inverse', 'naked'] as const satisfies ButtonVariant[],
14
13
  defaultValue: 'secondary',
15
14
  },
16
- /** @default 'medium' */
17
- size: ButtonMeta.cssProps.size,
18
- /** @default false */
19
- hideLabel: ButtonMeta.cssProps.hideLabel,
20
15
  },
21
16
  })
@@ -42,7 +42,7 @@ export function CopyButton({
42
42
  if (newStatus === 'copied') {
43
43
  timeoutRef.current = window.setTimeout(() => setStatus('copied-exit'), 1000)
44
44
  } else if (newStatus === 'copied-exit') {
45
- timeoutRef.current = window.setTimeout(() => setStatus('idle'), 100)
45
+ timeoutRef.current = window.setTimeout(() => setStatus('idle'), 150)
46
46
  }
47
47
  }
48
48
 
@@ -57,9 +57,8 @@ export function CopyButton({
57
57
 
58
58
  return (
59
59
  <Tooltip
60
- {...(status !== 'idle'
61
- ? { content: 'Copied!', open: status === 'copied' }
62
- : { content: null })}
60
+ content="Copied!"
61
+ {...(status !== 'idle' ? { open: status === 'copied' } : { disabled: true })}
63
62
  {...tooltipCSSProps}
64
63
  >
65
64
  <Button
@@ -3,9 +3,5 @@ import { createComponent } from '@graphprotocol/gds-css'
3
3
  import { FieldMeta } from './base/Field.meta.ts'
4
4
 
5
5
  export const CurrencyInputMeta = createComponent('CurrencyInput', {
6
- containerName: 'gds-field',
7
- cssProps: {
8
- /** @default 'medium' */
9
- size: FieldMeta.cssProps.size,
10
- },
6
+ extends: FieldMeta,
11
7
  })
@@ -56,6 +56,7 @@ export function DescriptionListRoot({
56
56
  </div>
57
57
  )
58
58
  }
59
+ DescriptionListRoot.displayName = 'DescriptionList'
59
60
 
60
61
  export interface DescriptionListItemProps
61
62
  extends ComponentProps<'div'>, GDSComponentProps<typeof DescriptionListItemMeta> {
@@ -189,7 +190,7 @@ export function DescriptionListItem({
189
190
  <span
190
191
  className={`
191
192
  absolute inset-y-0 flex items-center justify-center
192
- not-group-data-loading/description-list-item:hidden
193
+ group-not-data-loading/description-list-item:hidden
193
194
  @prop-orientation-horizontal/description-list:start-0
194
195
  @prop-orientation-vertical/description-list:end-0
195
196
  @prop-orientation-vertical/description-list:w-(--gds-addon-size)
@@ -1,6 +1,7 @@
1
1
  import { createComponent } from '@graphprotocol/gds-css'
2
2
 
3
3
  export const IconMeta = createComponent('Icon', {
4
+ isolate: 'allow-inheritance',
4
5
  addonCompatible: true,
5
6
  cssProps: {
6
7
  /** @default '1em' */
@@ -13,7 +13,7 @@ import type { GDSComponentProps } from '@graphprotocol/gds-css'
13
13
  import { useGDS } from '../hooks/index.ts'
14
14
  import { cn, getCSSPropsAttributes } from '../utils/index.ts'
15
15
  import { IconMeta } from './Icon.meta.ts'
16
- import { useCollectTooltip } from './Tooltip.tsx'
16
+ import { useTooltipCollector } from './Tooltip.tsx'
17
17
 
18
18
  export interface IconProps
19
19
  extends Omit<ComponentProps<'span'>, 'children' | 'color'>, GDSComponentProps<typeof IconMeta> {
@@ -35,10 +35,10 @@ export function Icon({ src, alt, size, color, className, style, ...props }: Icon
35
35
  useGDS()
36
36
 
37
37
  const iconContent = isValidElement(src) ? src : createElement(src)
38
- const collectTooltip = useCollectTooltip()
38
+ const collectTooltipContent = useTooltipCollector()
39
39
 
40
- if (collectTooltip && alt) {
41
- collectTooltip(alt)
40
+ if (collectTooltipContent && alt) {
41
+ collectTooltipContent(alt)
42
42
  }
43
43
 
44
44
  if ('variant' in props) {
@@ -3,9 +3,5 @@ import { createComponent } from '@graphprotocol/gds-css'
3
3
  import { FieldMeta } from './base/Field.meta.ts'
4
4
 
5
5
  export const InputMeta = createComponent('Input', {
6
- containerName: 'gds-field',
7
- cssProps: {
8
- /** @default 'medium' */
9
- size: FieldMeta.cssProps.size,
10
- },
6
+ extends: FieldMeta,
11
7
  })