@kushagradhawan/kookie-ui 0.1.28 → 0.1.30

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 (538) hide show
  1. package/components.css +4742 -2680
  2. package/dist/cjs/components/_internal/base-button.d.ts +36 -0
  3. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/base-button.js +1 -1
  5. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  6. package/dist/cjs/components/_internal/base-button.props.d.ts +61 -0
  7. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  9. package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
  10. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +6 -1
  11. package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
  13. package/dist/cjs/components/_internal/base-checkbox.props.js.map +3 -3
  14. package/dist/cjs/components/_internal/base-menu.props.d.ts +8 -0
  15. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  16. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  17. package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
  18. package/dist/cjs/components/_internal/base-radio.props.d.ts +6 -1
  19. package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -1
  20. package/dist/cjs/components/_internal/base-radio.props.js +1 -1
  21. package/dist/cjs/components/_internal/base-radio.props.js.map +3 -3
  22. package/dist/cjs/components/accordion.d.ts +22 -0
  23. package/dist/cjs/components/accordion.d.ts.map +1 -0
  24. package/dist/cjs/components/accordion.js +2 -0
  25. package/dist/cjs/components/accordion.js.map +7 -0
  26. package/dist/cjs/components/accordion.props.d.ts +97 -0
  27. package/dist/cjs/components/accordion.props.d.ts.map +1 -0
  28. package/dist/cjs/components/accordion.props.js +2 -0
  29. package/dist/cjs/components/accordion.props.js.map +7 -0
  30. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  31. package/dist/cjs/components/alert-dialog.js +1 -1
  32. package/dist/cjs/components/alert-dialog.js.map +3 -3
  33. package/dist/cjs/components/alert-dialog.props.d.ts +69 -2
  34. package/dist/cjs/components/alert-dialog.props.d.ts.map +1 -1
  35. package/dist/cjs/components/alert-dialog.props.js +1 -1
  36. package/dist/cjs/components/alert-dialog.props.js.map +3 -3
  37. package/dist/cjs/components/avatar.d.ts.map +1 -1
  38. package/dist/cjs/components/avatar.js +1 -1
  39. package/dist/cjs/components/avatar.js.map +3 -3
  40. package/dist/cjs/components/avatar.props.d.ts +9 -1
  41. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  42. package/dist/cjs/components/avatar.props.js +1 -1
  43. package/dist/cjs/components/avatar.props.js.map +3 -3
  44. package/dist/cjs/components/badge.d.ts +8 -1
  45. package/dist/cjs/components/badge.d.ts.map +1 -1
  46. package/dist/cjs/components/badge.js +1 -1
  47. package/dist/cjs/components/badge.js.map +3 -3
  48. package/dist/cjs/components/badge.props.d.ts +14 -6
  49. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  50. package/dist/cjs/components/badge.props.js +1 -1
  51. package/dist/cjs/components/badge.props.js.map +3 -3
  52. package/dist/cjs/components/blockquote.props.d.ts +1 -1
  53. package/dist/cjs/components/button.d.ts +53 -1
  54. package/dist/cjs/components/button.d.ts.map +1 -1
  55. package/dist/cjs/components/button.js +1 -1
  56. package/dist/cjs/components/button.js.map +3 -3
  57. package/dist/cjs/components/button.props.d.ts +17 -0
  58. package/dist/cjs/components/button.props.d.ts.map +1 -1
  59. package/dist/cjs/components/button.props.js.map +2 -2
  60. package/dist/cjs/components/callout.d.ts +4 -0
  61. package/dist/cjs/components/callout.d.ts.map +1 -1
  62. package/dist/cjs/components/callout.js +1 -1
  63. package/dist/cjs/components/callout.js.map +3 -3
  64. package/dist/cjs/components/callout.props.d.ts +9 -1
  65. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  66. package/dist/cjs/components/callout.props.js +1 -1
  67. package/dist/cjs/components/callout.props.js.map +3 -3
  68. package/dist/cjs/components/card.d.ts.map +1 -1
  69. package/dist/cjs/components/card.js +1 -1
  70. package/dist/cjs/components/card.js.map +3 -3
  71. package/dist/cjs/components/card.props.d.ts +5 -0
  72. package/dist/cjs/components/card.props.d.ts.map +1 -1
  73. package/dist/cjs/components/card.props.js +1 -1
  74. package/dist/cjs/components/card.props.js.map +3 -3
  75. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
  76. package/dist/cjs/components/checkbox-cards.js +1 -1
  77. package/dist/cjs/components/checkbox-cards.js.map +3 -3
  78. package/dist/cjs/components/checkbox-cards.props.d.ts +2 -2
  79. package/dist/cjs/components/checkbox-cards.props.js +1 -1
  80. package/dist/cjs/components/checkbox-cards.props.js.map +2 -2
  81. package/dist/cjs/components/checkbox-group.props.d.ts +6 -1
  82. package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
  83. package/dist/cjs/components/checkbox.d.ts.map +1 -1
  84. package/dist/cjs/components/checkbox.js +1 -1
  85. package/dist/cjs/components/checkbox.js.map +3 -3
  86. package/dist/cjs/components/code.js.map +1 -1
  87. package/dist/cjs/components/code.props.d.ts +1 -1
  88. package/dist/cjs/components/context-menu.d.ts +1 -1
  89. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  90. package/dist/cjs/components/context-menu.js +1 -1
  91. package/dist/cjs/components/context-menu.js.map +3 -3
  92. package/dist/cjs/components/dialog.d.ts.map +1 -1
  93. package/dist/cjs/components/dialog.js +1 -1
  94. package/dist/cjs/components/dialog.js.map +3 -3
  95. package/dist/cjs/components/dialog.props.d.ts +6 -1
  96. package/dist/cjs/components/dialog.props.d.ts.map +1 -1
  97. package/dist/cjs/components/dialog.props.js +1 -1
  98. package/dist/cjs/components/dialog.props.js.map +3 -3
  99. package/dist/cjs/components/dropdown-menu.d.ts +1 -1
  100. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  101. package/dist/cjs/components/dropdown-menu.js +1 -1
  102. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  103. package/dist/cjs/components/heading.props.d.ts +1 -1
  104. package/dist/cjs/components/icon-button.d.ts +79 -1
  105. package/dist/cjs/components/icon-button.d.ts.map +1 -1
  106. package/dist/cjs/components/icon-button.js +4 -1
  107. package/dist/cjs/components/icon-button.js.map +3 -3
  108. package/dist/cjs/components/image.d.ts +131 -12
  109. package/dist/cjs/components/image.d.ts.map +1 -1
  110. package/dist/cjs/components/image.js +1 -1
  111. package/dist/cjs/components/image.js.map +3 -3
  112. package/dist/cjs/components/image.props.d.ts +136 -21
  113. package/dist/cjs/components/image.props.d.ts.map +1 -1
  114. package/dist/cjs/components/image.props.js +1 -1
  115. package/dist/cjs/components/image.props.js.map +3 -3
  116. package/dist/cjs/components/index.d.ts +1 -0
  117. package/dist/cjs/components/index.d.ts.map +1 -1
  118. package/dist/cjs/components/index.js +1 -1
  119. package/dist/cjs/components/index.js.map +3 -3
  120. package/dist/cjs/components/link.props.d.ts +1 -1
  121. package/dist/cjs/components/progress.props.d.ts +2 -2
  122. package/dist/cjs/components/progress.props.js +1 -1
  123. package/dist/cjs/components/progress.props.js.map +2 -2
  124. package/dist/cjs/components/radio-cards.d.ts.map +1 -1
  125. package/dist/cjs/components/radio-cards.js +1 -1
  126. package/dist/cjs/components/radio-cards.js.map +3 -3
  127. package/dist/cjs/components/radio-cards.props.d.ts +2 -2
  128. package/dist/cjs/components/radio-cards.props.js +1 -1
  129. package/dist/cjs/components/radio-cards.props.js.map +2 -2
  130. package/dist/cjs/components/radio.d.ts.map +1 -1
  131. package/dist/cjs/components/radio.js +1 -1
  132. package/dist/cjs/components/radio.js.map +3 -3
  133. package/dist/cjs/components/segmented-control.props.d.ts +3 -3
  134. package/dist/cjs/components/segmented-control.props.js +1 -1
  135. package/dist/cjs/components/segmented-control.props.js.map +2 -2
  136. package/dist/cjs/components/select.d.ts.map +1 -1
  137. package/dist/cjs/components/select.js +1 -1
  138. package/dist/cjs/components/select.js.map +3 -3
  139. package/dist/cjs/components/select.props.d.ts +12 -0
  140. package/dist/cjs/components/select.props.d.ts.map +1 -1
  141. package/dist/cjs/components/select.props.js +1 -1
  142. package/dist/cjs/components/select.props.js.map +2 -2
  143. package/dist/cjs/components/sidebar.d.ts +5 -0
  144. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  145. package/dist/cjs/components/sidebar.js +1 -1
  146. package/dist/cjs/components/sidebar.js.map +3 -3
  147. package/dist/cjs/components/slider.d.ts +5 -0
  148. package/dist/cjs/components/slider.d.ts.map +1 -1
  149. package/dist/cjs/components/slider.js +1 -1
  150. package/dist/cjs/components/slider.js.map +3 -3
  151. package/dist/cjs/components/slider.props.d.ts +10 -2
  152. package/dist/cjs/components/slider.props.d.ts.map +1 -1
  153. package/dist/cjs/components/slider.props.js +1 -1
  154. package/dist/cjs/components/slider.props.js.map +2 -2
  155. package/dist/cjs/components/switch.d.ts.map +1 -1
  156. package/dist/cjs/components/switch.js +1 -1
  157. package/dist/cjs/components/switch.js.map +3 -3
  158. package/dist/cjs/components/switch.props.d.ts +17 -4
  159. package/dist/cjs/components/switch.props.d.ts.map +1 -1
  160. package/dist/cjs/components/switch.props.js +1 -1
  161. package/dist/cjs/components/switch.props.js.map +3 -3
  162. package/dist/cjs/components/tab-nav.d.ts.map +1 -1
  163. package/dist/cjs/components/tab-nav.js +1 -1
  164. package/dist/cjs/components/tab-nav.js.map +3 -3
  165. package/dist/cjs/components/tabs.d.ts.map +1 -1
  166. package/dist/cjs/components/tabs.js +1 -1
  167. package/dist/cjs/components/tabs.js.map +2 -2
  168. package/dist/cjs/components/text-area.d.ts.map +1 -1
  169. package/dist/cjs/components/text-area.js +1 -1
  170. package/dist/cjs/components/text-area.js.map +3 -3
  171. package/dist/cjs/components/text-area.props.d.ts +29 -0
  172. package/dist/cjs/components/text-area.props.d.ts.map +1 -1
  173. package/dist/cjs/components/text-area.props.js +1 -1
  174. package/dist/cjs/components/text-area.props.js.map +3 -3
  175. package/dist/cjs/components/text-field.d.ts.map +1 -1
  176. package/dist/cjs/components/text-field.js +4 -4
  177. package/dist/cjs/components/text-field.js.map +3 -3
  178. package/dist/cjs/components/text-field.props.d.ts +29 -0
  179. package/dist/cjs/components/text-field.props.d.ts.map +1 -1
  180. package/dist/cjs/components/text-field.props.js +1 -1
  181. package/dist/cjs/components/text-field.props.js.map +3 -3
  182. package/dist/cjs/components/text.props.d.ts +1 -1
  183. package/dist/cjs/components/theme.d.ts +3 -0
  184. package/dist/cjs/components/theme.d.ts.map +1 -1
  185. package/dist/cjs/components/theme.js +1 -1
  186. package/dist/cjs/components/theme.js.map +3 -3
  187. package/dist/cjs/components/theme.props.d.ts +14 -0
  188. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  189. package/dist/cjs/components/theme.props.js +1 -1
  190. package/dist/cjs/components/theme.props.js.map +3 -3
  191. package/dist/cjs/components/toggle-button.d.ts +52 -0
  192. package/dist/cjs/components/toggle-button.d.ts.map +1 -1
  193. package/dist/cjs/components/toggle-button.js +1 -1
  194. package/dist/cjs/components/toggle-button.js.map +3 -3
  195. package/dist/cjs/components/toggle-icon-button.d.ts +84 -2
  196. package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
  197. package/dist/cjs/components/toggle-icon-button.js +1 -1
  198. package/dist/cjs/components/toggle-icon-button.js.map +3 -3
  199. package/dist/cjs/helpers/extract-margin-props.d.ts +7 -7
  200. package/dist/cjs/hooks/index.d.ts +2 -0
  201. package/dist/cjs/hooks/index.d.ts.map +1 -0
  202. package/dist/cjs/hooks/index.js +2 -0
  203. package/dist/cjs/hooks/index.js.map +7 -0
  204. package/dist/cjs/hooks/use-live-announcer.d.ts +6 -0
  205. package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -0
  206. package/dist/cjs/hooks/use-live-announcer.js +10 -0
  207. package/dist/cjs/hooks/use-live-announcer.js.map +7 -0
  208. package/dist/cjs/index.d.ts +1 -0
  209. package/dist/cjs/index.d.ts.map +1 -1
  210. package/dist/cjs/index.js +1 -1
  211. package/dist/cjs/index.js.map +2 -2
  212. package/dist/cjs/props/weight.prop.d.ts +1 -1
  213. package/dist/cjs/props/weight.prop.js +1 -1
  214. package/dist/cjs/props/weight.prop.js.map +2 -2
  215. package/dist/esm/components/_internal/base-button.d.ts +36 -0
  216. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  217. package/dist/esm/components/_internal/base-button.js +1 -1
  218. package/dist/esm/components/_internal/base-button.js.map +3 -3
  219. package/dist/esm/components/_internal/base-button.props.d.ts +61 -0
  220. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  221. package/dist/esm/components/_internal/base-button.props.js +1 -1
  222. package/dist/esm/components/_internal/base-button.props.js.map +3 -3
  223. package/dist/esm/components/_internal/base-checkbox.props.d.ts +6 -1
  224. package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
  225. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  226. package/dist/esm/components/_internal/base-checkbox.props.js.map +3 -3
  227. package/dist/esm/components/_internal/base-menu.props.d.ts +8 -0
  228. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  229. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  230. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  231. package/dist/esm/components/_internal/base-radio.props.d.ts +6 -1
  232. package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
  233. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  234. package/dist/esm/components/_internal/base-radio.props.js.map +3 -3
  235. package/dist/esm/components/accordion.d.ts +22 -0
  236. package/dist/esm/components/accordion.d.ts.map +1 -0
  237. package/dist/esm/components/accordion.js +2 -0
  238. package/dist/esm/components/accordion.js.map +7 -0
  239. package/dist/esm/components/accordion.props.d.ts +97 -0
  240. package/dist/esm/components/accordion.props.d.ts.map +1 -0
  241. package/dist/esm/components/accordion.props.js +2 -0
  242. package/dist/esm/components/accordion.props.js.map +7 -0
  243. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  244. package/dist/esm/components/alert-dialog.js +1 -1
  245. package/dist/esm/components/alert-dialog.js.map +3 -3
  246. package/dist/esm/components/alert-dialog.props.d.ts +69 -2
  247. package/dist/esm/components/alert-dialog.props.d.ts.map +1 -1
  248. package/dist/esm/components/alert-dialog.props.js +1 -1
  249. package/dist/esm/components/alert-dialog.props.js.map +3 -3
  250. package/dist/esm/components/avatar.d.ts.map +1 -1
  251. package/dist/esm/components/avatar.js +1 -1
  252. package/dist/esm/components/avatar.js.map +3 -3
  253. package/dist/esm/components/avatar.props.d.ts +9 -1
  254. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  255. package/dist/esm/components/avatar.props.js +1 -1
  256. package/dist/esm/components/avatar.props.js.map +3 -3
  257. package/dist/esm/components/badge.d.ts +8 -1
  258. package/dist/esm/components/badge.d.ts.map +1 -1
  259. package/dist/esm/components/badge.js +1 -1
  260. package/dist/esm/components/badge.js.map +3 -3
  261. package/dist/esm/components/badge.props.d.ts +14 -6
  262. package/dist/esm/components/badge.props.d.ts.map +1 -1
  263. package/dist/esm/components/badge.props.js +1 -1
  264. package/dist/esm/components/badge.props.js.map +3 -3
  265. package/dist/esm/components/blockquote.props.d.ts +1 -1
  266. package/dist/esm/components/button.d.ts +53 -1
  267. package/dist/esm/components/button.d.ts.map +1 -1
  268. package/dist/esm/components/button.js +1 -1
  269. package/dist/esm/components/button.js.map +3 -3
  270. package/dist/esm/components/button.props.d.ts +17 -0
  271. package/dist/esm/components/button.props.d.ts.map +1 -1
  272. package/dist/esm/components/button.props.js.map +2 -2
  273. package/dist/esm/components/callout.d.ts +4 -0
  274. package/dist/esm/components/callout.d.ts.map +1 -1
  275. package/dist/esm/components/callout.js +1 -1
  276. package/dist/esm/components/callout.js.map +3 -3
  277. package/dist/esm/components/callout.props.d.ts +9 -1
  278. package/dist/esm/components/callout.props.d.ts.map +1 -1
  279. package/dist/esm/components/callout.props.js +1 -1
  280. package/dist/esm/components/callout.props.js.map +3 -3
  281. package/dist/esm/components/card.d.ts.map +1 -1
  282. package/dist/esm/components/card.js +1 -1
  283. package/dist/esm/components/card.js.map +3 -3
  284. package/dist/esm/components/card.props.d.ts +5 -0
  285. package/dist/esm/components/card.props.d.ts.map +1 -1
  286. package/dist/esm/components/card.props.js +1 -1
  287. package/dist/esm/components/card.props.js.map +3 -3
  288. package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
  289. package/dist/esm/components/checkbox-cards.js +1 -1
  290. package/dist/esm/components/checkbox-cards.js.map +3 -3
  291. package/dist/esm/components/checkbox-cards.props.d.ts +2 -2
  292. package/dist/esm/components/checkbox-cards.props.js +1 -1
  293. package/dist/esm/components/checkbox-cards.props.js.map +2 -2
  294. package/dist/esm/components/checkbox-group.props.d.ts +6 -1
  295. package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
  296. package/dist/esm/components/checkbox.d.ts.map +1 -1
  297. package/dist/esm/components/checkbox.js +1 -1
  298. package/dist/esm/components/checkbox.js.map +3 -3
  299. package/dist/esm/components/code.js.map +1 -1
  300. package/dist/esm/components/code.props.d.ts +1 -1
  301. package/dist/esm/components/context-menu.d.ts +1 -1
  302. package/dist/esm/components/context-menu.d.ts.map +1 -1
  303. package/dist/esm/components/context-menu.js +1 -1
  304. package/dist/esm/components/context-menu.js.map +3 -3
  305. package/dist/esm/components/dialog.d.ts.map +1 -1
  306. package/dist/esm/components/dialog.js +1 -1
  307. package/dist/esm/components/dialog.js.map +3 -3
  308. package/dist/esm/components/dialog.props.d.ts +6 -1
  309. package/dist/esm/components/dialog.props.d.ts.map +1 -1
  310. package/dist/esm/components/dialog.props.js +1 -1
  311. package/dist/esm/components/dialog.props.js.map +3 -3
  312. package/dist/esm/components/dropdown-menu.d.ts +1 -1
  313. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  314. package/dist/esm/components/dropdown-menu.js +1 -1
  315. package/dist/esm/components/dropdown-menu.js.map +3 -3
  316. package/dist/esm/components/heading.props.d.ts +1 -1
  317. package/dist/esm/components/icon-button.d.ts +79 -1
  318. package/dist/esm/components/icon-button.d.ts.map +1 -1
  319. package/dist/esm/components/icon-button.js +4 -1
  320. package/dist/esm/components/icon-button.js.map +3 -3
  321. package/dist/esm/components/image.d.ts +131 -12
  322. package/dist/esm/components/image.d.ts.map +1 -1
  323. package/dist/esm/components/image.js +1 -1
  324. package/dist/esm/components/image.js.map +3 -3
  325. package/dist/esm/components/image.props.d.ts +136 -21
  326. package/dist/esm/components/image.props.d.ts.map +1 -1
  327. package/dist/esm/components/image.props.js +1 -1
  328. package/dist/esm/components/image.props.js.map +3 -3
  329. package/dist/esm/components/index.d.ts +1 -0
  330. package/dist/esm/components/index.d.ts.map +1 -1
  331. package/dist/esm/components/index.js +1 -1
  332. package/dist/esm/components/index.js.map +3 -3
  333. package/dist/esm/components/link.props.d.ts +1 -1
  334. package/dist/esm/components/progress.props.d.ts +2 -2
  335. package/dist/esm/components/progress.props.js +1 -1
  336. package/dist/esm/components/progress.props.js.map +2 -2
  337. package/dist/esm/components/radio-cards.d.ts.map +1 -1
  338. package/dist/esm/components/radio-cards.js +1 -1
  339. package/dist/esm/components/radio-cards.js.map +3 -3
  340. package/dist/esm/components/radio-cards.props.d.ts +2 -2
  341. package/dist/esm/components/radio-cards.props.js +1 -1
  342. package/dist/esm/components/radio-cards.props.js.map +2 -2
  343. package/dist/esm/components/radio.d.ts.map +1 -1
  344. package/dist/esm/components/radio.js +1 -1
  345. package/dist/esm/components/radio.js.map +3 -3
  346. package/dist/esm/components/segmented-control.props.d.ts +3 -3
  347. package/dist/esm/components/segmented-control.props.js +1 -1
  348. package/dist/esm/components/segmented-control.props.js.map +2 -2
  349. package/dist/esm/components/select.d.ts.map +1 -1
  350. package/dist/esm/components/select.js +1 -1
  351. package/dist/esm/components/select.js.map +3 -3
  352. package/dist/esm/components/select.props.d.ts +12 -0
  353. package/dist/esm/components/select.props.d.ts.map +1 -1
  354. package/dist/esm/components/select.props.js +1 -1
  355. package/dist/esm/components/select.props.js.map +2 -2
  356. package/dist/esm/components/sidebar.d.ts +5 -0
  357. package/dist/esm/components/sidebar.d.ts.map +1 -1
  358. package/dist/esm/components/sidebar.js +1 -1
  359. package/dist/esm/components/sidebar.js.map +3 -3
  360. package/dist/esm/components/slider.d.ts +5 -0
  361. package/dist/esm/components/slider.d.ts.map +1 -1
  362. package/dist/esm/components/slider.js +1 -1
  363. package/dist/esm/components/slider.js.map +3 -3
  364. package/dist/esm/components/slider.props.d.ts +10 -2
  365. package/dist/esm/components/slider.props.d.ts.map +1 -1
  366. package/dist/esm/components/slider.props.js +1 -1
  367. package/dist/esm/components/slider.props.js.map +2 -2
  368. package/dist/esm/components/switch.d.ts.map +1 -1
  369. package/dist/esm/components/switch.js +1 -1
  370. package/dist/esm/components/switch.js.map +3 -3
  371. package/dist/esm/components/switch.props.d.ts +17 -4
  372. package/dist/esm/components/switch.props.d.ts.map +1 -1
  373. package/dist/esm/components/switch.props.js +1 -1
  374. package/dist/esm/components/switch.props.js.map +3 -3
  375. package/dist/esm/components/tab-nav.d.ts.map +1 -1
  376. package/dist/esm/components/tab-nav.js +1 -1
  377. package/dist/esm/components/tab-nav.js.map +3 -3
  378. package/dist/esm/components/tabs.d.ts.map +1 -1
  379. package/dist/esm/components/tabs.js +1 -1
  380. package/dist/esm/components/tabs.js.map +2 -2
  381. package/dist/esm/components/text-area.d.ts.map +1 -1
  382. package/dist/esm/components/text-area.js +1 -1
  383. package/dist/esm/components/text-area.js.map +3 -3
  384. package/dist/esm/components/text-area.props.d.ts +29 -0
  385. package/dist/esm/components/text-area.props.d.ts.map +1 -1
  386. package/dist/esm/components/text-area.props.js +1 -1
  387. package/dist/esm/components/text-area.props.js.map +3 -3
  388. package/dist/esm/components/text-field.d.ts.map +1 -1
  389. package/dist/esm/components/text-field.js +4 -4
  390. package/dist/esm/components/text-field.js.map +3 -3
  391. package/dist/esm/components/text-field.props.d.ts +29 -0
  392. package/dist/esm/components/text-field.props.d.ts.map +1 -1
  393. package/dist/esm/components/text-field.props.js +1 -1
  394. package/dist/esm/components/text-field.props.js.map +3 -3
  395. package/dist/esm/components/text.props.d.ts +1 -1
  396. package/dist/esm/components/theme.d.ts +3 -0
  397. package/dist/esm/components/theme.d.ts.map +1 -1
  398. package/dist/esm/components/theme.js +1 -1
  399. package/dist/esm/components/theme.js.map +3 -3
  400. package/dist/esm/components/theme.props.d.ts +14 -0
  401. package/dist/esm/components/theme.props.d.ts.map +1 -1
  402. package/dist/esm/components/theme.props.js +1 -1
  403. package/dist/esm/components/theme.props.js.map +3 -3
  404. package/dist/esm/components/toggle-button.d.ts +52 -0
  405. package/dist/esm/components/toggle-button.d.ts.map +1 -1
  406. package/dist/esm/components/toggle-button.js +1 -1
  407. package/dist/esm/components/toggle-button.js.map +3 -3
  408. package/dist/esm/components/toggle-icon-button.d.ts +84 -2
  409. package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
  410. package/dist/esm/components/toggle-icon-button.js +1 -1
  411. package/dist/esm/components/toggle-icon-button.js.map +3 -3
  412. package/dist/esm/helpers/extract-margin-props.d.ts +7 -7
  413. package/dist/esm/hooks/index.d.ts +2 -0
  414. package/dist/esm/hooks/index.d.ts.map +1 -0
  415. package/dist/esm/hooks/index.js +2 -0
  416. package/dist/esm/hooks/index.js.map +7 -0
  417. package/dist/esm/hooks/use-live-announcer.d.ts +6 -0
  418. package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -0
  419. package/dist/esm/hooks/use-live-announcer.js +10 -0
  420. package/dist/esm/hooks/use-live-announcer.js.map +7 -0
  421. package/dist/esm/index.d.ts +1 -0
  422. package/dist/esm/index.d.ts.map +1 -1
  423. package/dist/esm/index.js +1 -1
  424. package/dist/esm/index.js.map +2 -2
  425. package/dist/esm/props/weight.prop.d.ts +1 -1
  426. package/dist/esm/props/weight.prop.js +1 -1
  427. package/dist/esm/props/weight.prop.js.map +2 -2
  428. package/layout/components.css +1 -0
  429. package/layout.css +1 -0
  430. package/package.json +2 -1
  431. package/src/components/_internal/base-button.css +483 -284
  432. package/src/components/_internal/base-button.props.ts +87 -0
  433. package/src/components/_internal/base-button.tsx +127 -10
  434. package/src/components/_internal/base-card.css +866 -83
  435. package/src/components/_internal/base-checkbox.css +252 -52
  436. package/src/components/_internal/base-checkbox.props.ts +4 -1
  437. package/src/components/_internal/base-dialog.css +39 -8
  438. package/src/components/_internal/base-menu.css +55 -32
  439. package/src/components/_internal/base-menu.props.ts +10 -0
  440. package/src/components/_internal/base-radio.css +222 -52
  441. package/src/components/_internal/base-radio.props.ts +4 -1
  442. package/src/components/_internal/base-sidebar-menu.css +223 -0
  443. package/src/components/_internal/base-sidebar.css +141 -0
  444. package/src/components/_internal/base-tab-list.css +16 -0
  445. package/src/components/accordion.css +657 -0
  446. package/src/components/accordion.props.tsx +90 -0
  447. package/src/components/accordion.tsx +209 -0
  448. package/src/components/alert-dialog.props.tsx +22 -2
  449. package/src/components/alert-dialog.tsx +94 -3
  450. package/src/components/avatar.css +294 -152
  451. package/src/components/avatar.props.tsx +7 -1
  452. package/src/components/avatar.tsx +12 -2
  453. package/src/components/badge.css +160 -138
  454. package/src/components/badge.props.tsx +10 -3
  455. package/src/components/badge.tsx +71 -9
  456. package/src/components/button.css +88 -0
  457. package/src/components/button.props.tsx +17 -0
  458. package/src/components/button.tsx +107 -5
  459. package/src/components/callout.css +122 -35
  460. package/src/components/callout.props.tsx +7 -1
  461. package/src/components/callout.tsx +32 -9
  462. package/src/components/card.css +0 -597
  463. package/src/components/card.props.tsx +3 -0
  464. package/src/components/card.tsx +4 -2
  465. package/src/components/checkbox-cards.css +27 -104
  466. package/src/components/checkbox-cards.props.tsx +2 -2
  467. package/src/components/checkbox-cards.tsx +21 -3
  468. package/src/components/checkbox.tsx +2 -0
  469. package/src/components/code.css +1 -1
  470. package/src/components/code.tsx +1 -1
  471. package/src/components/container.css +1 -0
  472. package/src/components/context-menu.tsx +54 -12
  473. package/src/components/dialog.props.tsx +3 -0
  474. package/src/components/dialog.tsx +93 -3
  475. package/src/components/dropdown-menu.tsx +49 -12
  476. package/src/components/icon-button.css +73 -4
  477. package/src/components/icon-button.tsx +125 -19
  478. package/src/components/image.css +160 -91
  479. package/src/components/image.props.ts +152 -15
  480. package/src/components/image.tsx +290 -247
  481. package/src/components/index.css +1 -0
  482. package/src/components/index.tsx +1 -0
  483. package/src/components/kbd.css +23 -44
  484. package/src/components/progress.css +130 -149
  485. package/src/components/progress.props.tsx +2 -2
  486. package/src/components/radio-cards.css +23 -113
  487. package/src/components/radio-cards.props.tsx +2 -2
  488. package/src/components/radio-cards.tsx +45 -18
  489. package/src/components/radio.tsx +4 -3
  490. package/src/components/scroll-area.css +1 -1
  491. package/src/components/segmented-control.css +83 -64
  492. package/src/components/segmented-control.props.tsx +3 -3
  493. package/src/components/select.css +502 -224
  494. package/src/components/select.props.tsx +8 -0
  495. package/src/components/select.tsx +45 -2
  496. package/src/components/sidebar.css +186 -630
  497. package/src/components/sidebar.tsx +61 -5
  498. package/src/components/slider.css +228 -88
  499. package/src/components/slider.props.tsx +6 -2
  500. package/src/components/slider.tsx +201 -24
  501. package/src/components/spinner.css +12 -0
  502. package/src/components/switch.css +135 -216
  503. package/src/components/switch.props.tsx +16 -4
  504. package/src/components/switch.tsx +5 -3
  505. package/src/components/tab-nav.tsx +6 -3
  506. package/src/components/tabs.tsx +2 -0
  507. package/src/components/text-area.css +222 -140
  508. package/src/components/text-area.props.tsx +18 -1
  509. package/src/components/text-area.tsx +58 -7
  510. package/src/components/text-field.css +214 -131
  511. package/src/components/text-field.props.tsx +17 -0
  512. package/src/components/text-field.tsx +79 -28
  513. package/src/components/theme.props.tsx +12 -0
  514. package/src/components/theme.tsx +31 -1
  515. package/src/components/toggle-button.tsx +102 -3
  516. package/src/components/toggle-icon-button.tsx +150 -7
  517. package/src/components/tooltip.css +3 -3
  518. package/src/hooks/index.ts +1 -0
  519. package/src/hooks/use-live-announcer.ts +52 -0
  520. package/src/index.ts +1 -0
  521. package/src/props/weight.prop.ts +1 -1
  522. package/src/styles/fonts.css +27 -13
  523. package/src/styles/index.css +1 -1
  524. package/src/styles/tokens/base.css +2 -0
  525. package/src/styles/tokens/blur.css +32 -0
  526. package/src/styles/tokens/color.css +9 -9
  527. package/src/styles/tokens/constants.css +88 -140
  528. package/src/styles/tokens/index.css +2 -0
  529. package/src/styles/tokens/opacity.css +32 -0
  530. package/src/styles/tokens/radius.css +6 -10
  531. package/src/styles/tokens/shadow.css +25 -25
  532. package/src/styles/tokens/transition.css +49 -13
  533. package/src/styles/tokens/typography.css +7 -3
  534. package/src/styles/utilities/font-weight.css +16 -0
  535. package/styles.css +11129 -8945
  536. package/tokens/base.css +127 -49
  537. package/tokens.css +158 -114
  538. package/utilities.css +72 -0
@@ -8,12 +8,10 @@
8
8
  }
9
9
 
10
10
  .rt-CheckboxCardsItem {
11
- --base-card-padding-top: var(--checkbox-cards-item-padding-top);
12
- --base-card-padding-right: var(--checkbox-cards-item-padding-right);
13
- --base-card-padding-bottom: var(--checkbox-cards-item-padding-bottom);
14
- --base-card-padding-left: var(--checkbox-cards-item-padding-left);
15
- --base-card-border-radius: var(--checkbox-cards-item-border-radius);
16
- --base-card-border-width: var(--checkbox-cards-item-border-width);
11
+ --base-card-border-width: var(--border-width-standard);
12
+ --base-card-padding-right: calc(
13
+ var(--base-card-padding-left) * 2 + var(--checkbox-cards-item-checkbox-size)
14
+ );
17
15
 
18
16
  display: flex;
19
17
  align-items: center;
@@ -37,14 +35,15 @@
37
35
  }
38
36
  /* stylelint-disable-next-line selector-max-type */
39
37
  & > :where(svg) {
40
- /* Dont squish icons */
38
+ /* Don't squish icons */
41
39
  flex-shrink: 0;
42
40
  }
43
41
  }
44
42
 
45
43
  .rt-CheckboxCardCheckbox {
46
44
  position: absolute;
47
- right: var(--checkbox-cards-item-padding-left);
45
+ top: var(--base-card-padding-top);
46
+ right: var(--base-card-padding-left);
48
47
  }
49
48
 
50
49
  /* * * * * * * * * * * * * * * * * * * */
@@ -53,132 +52,56 @@
53
52
  /* */
54
53
  /* * * * * * * * * * * * * * * * * * * */
55
54
 
56
- .rt-CheckboxCardsItem {
57
- --checkbox-cards-item-padding-right: calc(
58
- var(--checkbox-cards-item-padding-left) * 2 + var(--checkbox-cards-item-checkbox-size)
59
- );
60
- }
55
+
61
56
 
62
57
  @breakpoints {
63
58
  .rt-CheckboxCardsRoot {
64
- /* 40px height for the card with one line of text */
59
+ /* Size 1 */
65
60
  &:where(.rt-r-size-1) {
66
61
  font-size: var(--font-size-2);
67
62
  --line-height: var(--line-height-2);
68
63
  --letter-spacing: var(--letter-spacing-2);
69
- --checkbox-cards-item-padding-top: calc(var(--space-3) * var(--spacing-multiplier-medium));
70
- --checkbox-cards-item-padding-bottom: calc(var(--space-3) * var(--spacing-multiplier-medium));
71
- --checkbox-cards-item-padding-left: var(--space-3);
72
- --checkbox-cards-item-border-radius: var(--radius-3);
73
64
  /* keep in sync with checkbox */
74
65
  --checkbox-cards-item-checkbox-size: calc(var(--space-4) * var(--spacing-multiplier-medium));
75
66
  }
76
- /* 48px height for the card with one line of text */
67
+
68
+
69
+ /* Size 2 */
77
70
  &:where(.rt-r-size-2) {
78
71
  font-size: var(--font-size-2);
79
72
  --line-height: var(--line-height-2);
80
73
  --letter-spacing: var(--letter-spacing-2);
81
- --checkbox-cards-item-padding-top: calc(var(--space-4) * var(--spacing-multiplier-medium));
82
- --checkbox-cards-item-padding-bottom: calc(var(--space-4) * var(--spacing-multiplier-medium));
83
- --checkbox-cards-item-padding-left: var(--space-4);
84
- --checkbox-cards-item-border-radius: var(--radius-3);
85
74
  /* keep in sync with checkbox */
86
75
  --checkbox-cards-item-checkbox-size: var(--space-4);
87
76
  }
88
- /* 64px height for the card with one line of text */
77
+ /* Size 3 */
89
78
  &:where(.rt-r-size-3) {
90
79
  font-size: var(--font-size-3);
91
80
  --line-height: var(--line-height-3);
92
81
  --letter-spacing: var(--letter-spacing-3);
93
- --checkbox-cards-item-padding-top: calc(var(--space-5) * var(--spacing-multiplier-medium));
94
- --checkbox-cards-item-padding-bottom: calc(var(--space-5) * var(--spacing-multiplier-medium));
95
- --checkbox-cards-item-padding-left: var(--space-5);
96
- --checkbox-cards-item-border-radius: var(--radius-4);
97
82
  /* keep in sync with checkbox */
98
83
  --checkbox-cards-item-checkbox-size: calc(var(--space-4) * var(--spacing-multiplier-large));
99
84
  }
100
- }
101
- }
102
-
103
- /* * * * * * * * * * * * * * * * * * * */
104
- /* */
105
- /* Variants / Surface */
106
- /* */
107
- /* * * * * * * * * * * * * * * * * * * */
108
-
109
- :where(.rt-CheckboxCardsRoot.rt-variant-surface) {
110
- .rt-CheckboxCardsItem {
111
- --checkbox-cards-item-border-width: var(--border-width-standard);
112
- --checkbox-cards-item-background-color: var(--color-surface);
113
-
114
- transition: var(--transition-card);
115
-
116
- &::before {
117
- background-color: var(--checkbox-cards-item-background-color);
118
- }
119
- &::after {
120
- box-shadow: var(--base-card-surface-box-shadow);
85
+ /* Size 4 */
86
+ &:where(.rt-r-size-4) {
87
+ font-size: var(--font-size-3);
88
+ --line-height: var(--line-height-3);
89
+ --letter-spacing: var(--letter-spacing-3);
90
+ /* keep in sync with checkbox */
91
+ --checkbox-cards-item-checkbox-size: calc(var(--space-4) * var(--spacing-multiplier-large));
121
92
  }
122
- @media (hover: hover) {
123
- &:where(:not(:has(:disabled)):hover) {
124
- transition-duration: var(--duration-1);
125
- &::after {
126
- box-shadow: var(--base-card-surface-hover-box-shadow);
127
- }
128
- }
93
+ /* Size 5 */
94
+ &:where(.rt-r-size-5) {
95
+ font-size: var(--font-size-4);
96
+ --line-height: var(--line-height-4);
97
+ --letter-spacing: var(--letter-spacing-4);
98
+ /* keep in sync with checkbox */
99
+ --checkbox-cards-item-checkbox-size: calc(var(--space-5) * var(--spacing-multiplier-medium));
129
100
  }
130
101
  }
131
-
132
- /* Component-level panel background overrides (higher specificity) */
133
- &:where([data-panel-background='solid']) .rt-CheckboxCardsItem {
134
- --color-surface: var(--color-surface-solid);
135
- }
136
-
137
- &:where([data-panel-background='translucent']) .rt-CheckboxCardsItem {
138
- --color-surface: var(--color-surface-translucent);
139
- }
140
102
  }
141
103
 
142
- /* * * * * * * * * * * * * * * * * * * */
143
- /* */
144
- /* Variants / Classic */
145
- /* */
146
- /* * * * * * * * * * * * * * * * * * * */
147
-
148
- :where(.rt-CheckboxCardsRoot.rt-variant-classic) {
149
- .rt-CheckboxCardsItem {
150
- --checkbox-cards-item-border-width: var(--border-width-standard);
151
- --checkbox-cards-item-background-color: var(--color-surface);
152
-
153
- transition: var(--transition-card);
154
- box-shadow: var(--base-card-classic-box-shadow-outer);
155
104
 
156
- &::before {
157
- background-color: var(--checkbox-cards-item-background-color);
158
- }
159
- &::after {
160
- box-shadow: var(--base-card-classic-box-shadow-inner);
161
- }
162
- @media (hover: hover) {
163
- &:where(:not(:has(:disabled)):hover) {
164
- transition-duration: var(--duration-1);
165
- box-shadow: var(--base-card-classic-hover-box-shadow-outer);
166
- &::after {
167
- box-shadow: var(--base-card-classic-hover-box-shadow-inner);
168
- }
169
- }
170
- }
171
- }
172
-
173
- /* Component-level panel background overrides (higher specificity) */
174
- &:where([data-panel-background='solid']) .rt-CheckboxCardsItem {
175
- --color-surface: var(--color-surface-solid);
176
- }
177
-
178
- &:where([data-panel-background='translucent']) .rt-CheckboxCardsItem {
179
- --color-surface: var(--color-surface-translucent);
180
- }
181
- }
182
105
 
183
106
  /* * * * * * * * * * * * * * * * * * * */
184
107
  /* */
@@ -5,8 +5,8 @@ import { gridPropDefs } from './grid.props.js';
5
5
 
6
6
  import type { PropDef } from '../props/prop-def.js';
7
7
 
8
- const sizes = ['1', '2', '3'] as const;
9
- const variants = ['surface', 'classic'] as const;
8
+ const sizes = ['1', '2', '3', '4', '5'] as const;
9
+ const variants = ['outline', 'classic', 'ghost', 'soft', 'surface'] as const;
10
10
  const panelBackgrounds = ['solid', 'translucent'] as const;
11
11
 
12
12
  const checkboxCardsRootPropDefs = {
@@ -28,6 +28,7 @@ const useCheckboxGroupScope = createCheckboxGroupScope();
28
28
 
29
29
  type CheckboxCardsContextValue = {
30
30
  size?: Responsive<(typeof checkboxCardsRootPropDefs.size.values)[number]>;
31
+ variant?: (typeof checkboxCardsRootPropDefs.variant.values)[number];
31
32
  highContrast?: boolean;
32
33
  };
33
34
 
@@ -59,6 +60,7 @@ const CheckboxCardsRoot = React.forwardRef<CheckboxCardsRootElement, CheckboxCar
59
60
  <CheckboxCardsProvider
60
61
  scope={__scopeCheckboxCards}
61
62
  size={props.size}
63
+ variant={props.variant}
62
64
  highContrast={props.highContrast}
63
65
  >
64
66
  <Grid asChild>
@@ -89,13 +91,29 @@ const CheckboxCardsItem = React.forwardRef<
89
91
  const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxCards);
90
92
 
91
93
  const { className: checkboxClassName } = extractProps(
92
- // Pass size / highContrast values from the context and static variant to generate styles
93
- { size: context?.size, variant: 'solid', highContrast: context?.highContrast },
94
+ // Pass size / highContrast values from the context and variant to generate styles
95
+ {
96
+ size: context?.size,
97
+ variant: context?.variant || 'solid',
98
+ highContrast: context?.highContrast,
99
+ },
94
100
  // Pass size & variant prop defs to allow it to be extracted
95
101
  baseCheckboxPropDefs,
96
102
  );
103
+ const variantClass = context?.variant ? `rt-variant-${context.variant}` : undefined;
104
+ const sizeClass = context?.size ? `rt-r-size-${context.size}` : undefined;
105
+
97
106
  return (
98
- <label className={classNames('rt-BaseCard', 'rt-CheckboxCardsItem', className)} style={style}>
107
+ <label
108
+ className={classNames(
109
+ 'rt-BaseCard',
110
+ 'rt-CheckboxCardsItem',
111
+ variantClass,
112
+ sizeClass,
113
+ className,
114
+ )}
115
+ style={style}
116
+ >
99
117
  {children}
100
118
  <CheckboxGroupPrimitive.Item
101
119
  {...checkboxGroupScope}
@@ -27,6 +27,7 @@ const Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>((props, forwar
27
27
  const {
28
28
  className,
29
29
  color,
30
+ material,
30
31
  checked: checkedProp,
31
32
  defaultChecked: defaultCheckedProp,
32
33
  onCheckedChange,
@@ -42,6 +43,7 @@ const Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>((props, forwar
42
43
  return (
43
44
  <CheckboxPrimitive.Root
44
45
  data-accent-color={color}
46
+ data-material={material}
45
47
  {...checkboxProps}
46
48
  defaultChecked={defaultCheckedProp}
47
49
  checked={checked}
@@ -144,7 +144,7 @@
144
144
  /* soft */
145
145
 
146
146
  .rt-Code:where(.rt-variant-soft) {
147
- background-color: var(--accent-a3);
147
+ background-color: var(--accent-a2);
148
148
  color: var(--accent-a11);
149
149
 
150
150
  &:where(.rt-high-contrast) {
@@ -20,7 +20,7 @@ const Code = React.forwardRef<CodeElement, CodeProps>((props, forwardedRef) => {
20
20
  const { asChild, className, color, ...codeProps } = extractProps(
21
21
  props,
22
22
  codePropDefs,
23
- marginPropDefs
23
+ marginPropDefs,
24
24
  );
25
25
  // Code ghost color prop should work as text color by default
26
26
  const resolvedColor = props.variant === 'ghost' ? color || undefined : color;
@@ -12,6 +12,7 @@
12
12
  align-items: center;
13
13
  flex-shrink: 0;
14
14
  flex-grow: 1;
15
+ min-width: 0;
15
16
  }
16
17
 
17
18
  .rt-ContainerInner {
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Context Menu component that provides right-click menu functionality.
3
+ * Requires client-side rendering due to event handling and portal usage.
4
+ */
1
5
  'use client';
2
6
 
3
7
  import * as React from 'react';
@@ -51,11 +55,34 @@ interface ContextMenuContentProps
51
55
  const ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(
52
56
  (props, forwardedRef) => {
53
57
  const themeContext = useThemeContext();
58
+
59
+ // Show deprecation warning for panelBackground when used
60
+ React.useEffect(() => {
61
+ if (props.panelBackground !== undefined) {
62
+ console.warn(
63
+ 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',
64
+ );
65
+ }
66
+ }, [props.panelBackground]);
67
+
68
+ // Material takes precedence over panelBackground
69
+ const effectiveMaterial =
70
+ props.material ?? props.panelBackground ?? themeContext.panelBackground;
71
+
72
+ // Memoize theme context values to prevent unnecessary re-renders
73
+ const memoizedThemeContext = React.useMemo(
74
+ () => ({
75
+ material: effectiveMaterial,
76
+ accentColor: themeContext.accentColor,
77
+ }),
78
+ [effectiveMaterial, themeContext.accentColor],
79
+ );
80
+
54
81
  const {
55
82
  size = contextMenuContentPropDefs.size.default,
56
83
  variant = contextMenuContentPropDefs.variant.default,
57
84
  highContrast = contextMenuContentPropDefs.highContrast.default,
58
- panelBackground = props.panelBackground ?? themeContext.panelBackground,
85
+ material = memoizedThemeContext.material,
59
86
  } = props;
60
87
  const {
61
88
  className,
@@ -63,16 +90,23 @@ const ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMe
63
90
  color,
64
91
  container,
65
92
  forceMount,
66
- panelBackground: _,
93
+ material: _,
94
+ panelBackground: __,
67
95
  ...contentProps
68
96
  } = extractProps(props, contextMenuContentPropDefs);
69
- const resolvedColor = color || themeContext.accentColor;
97
+
98
+ // Memoize color resolution to prevent unnecessary re-renders
99
+ const resolvedColor = React.useMemo(
100
+ () => color || memoizedThemeContext.accentColor,
101
+ [color, memoizedThemeContext.accentColor],
102
+ );
70
103
  return (
71
104
  <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>
72
105
  <Theme asChild>
73
106
  <ContextMenuPrimitive.Content
74
107
  data-accent-color={resolvedColor}
75
- data-panel-background={panelBackground}
108
+ data-material={material}
109
+ data-panel-background={material}
76
110
  alignOffset={-Number(size) * 4}
77
111
  collisionPadding={10}
78
112
  {...contentProps}
@@ -89,8 +123,8 @@ const ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMe
89
123
  <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>
90
124
  <ContextMenuContentContext.Provider
91
125
  value={React.useMemo(
92
- () => ({ size, variant, color: resolvedColor, highContrast, panelBackground }),
93
- [size, variant, resolvedColor, highContrast, panelBackground],
126
+ () => ({ size, variant, color: resolvedColor, highContrast, material }),
127
+ [size, variant, resolvedColor, highContrast, material],
94
128
  )}
95
129
  >
96
130
  {children}
@@ -305,24 +339,31 @@ ContextMenuSubTrigger.displayName = 'ContextMenu.SubTrigger';
305
339
 
306
340
  type ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;
307
341
  interface ContextMenuSubContentProps
308
- extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubContent, RemovedProps> {
342
+ extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubContent, RemovedProps>,
343
+ ContextMenuContentContextValue {
309
344
  container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];
310
345
  }
311
346
  const ContextMenuSubContent = React.forwardRef<
312
347
  ContextMenuSubContentElement,
313
348
  ContextMenuSubContentProps
314
349
  >((props, forwardedRef) => {
315
- const { size, variant, color, highContrast, panelBackground } =
316
- React.useContext(ContextMenuContentContext);
350
+ // Memoize context consumption to prevent unnecessary re-renders
351
+ const contextValue = React.useContext(ContextMenuContentContext);
352
+ const { size, variant, color, highContrast, material } = React.useMemo(
353
+ () => contextValue,
354
+ [contextValue],
355
+ );
356
+
317
357
  const {
318
358
  className,
319
359
  children,
320
360
  container,
321
361
  forceMount,
322
- panelBackground: _,
362
+ material: _,
363
+ panelBackground: __,
323
364
  ...subContentProps
324
365
  } = extractProps(
325
- { size, variant, color, highContrast, panelBackground, ...props },
366
+ { size, variant, color, highContrast, material, ...props },
326
367
  contextMenuContentPropDefs,
327
368
  );
328
369
  return (
@@ -330,7 +371,8 @@ const ContextMenuSubContent = React.forwardRef<
330
371
  <Theme asChild>
331
372
  <ContextMenuPrimitive.SubContent
332
373
  data-accent-color={color}
333
- data-panel-background={panelBackground}
374
+ data-material={material}
375
+ data-panel-background={material}
334
376
  alignOffset={-Number(size) * 4}
335
377
  // Side offset accounts for the outer solid box-shadow
336
378
  sideOffset={1}
@@ -8,6 +8,7 @@ import type { PropDef, GetPropDefTypes } from '../props/prop-def.js';
8
8
  const alignValues = ['start', 'center'] as const;
9
9
  const contentSizes = ['1', '2', '3', '4'] as const;
10
10
  const panelBackgrounds = ['solid', 'translucent'] as const;
11
+ const materials = ['solid', 'translucent'] as const;
11
12
 
12
13
  const dialogContentPropDefs = {
13
14
  ...asChildPropDef,
@@ -25,6 +26,7 @@ const dialogContentPropDefs = {
25
26
  responsive: true,
26
27
  },
27
28
  panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },
29
+ material: { type: 'enum', values: materials, default: undefined },
28
30
  width: widthPropDefs.width,
29
31
  minWidth: widthPropDefs.minWidth,
30
32
  maxWidth: { ...widthPropDefs.maxWidth, default: '600px' },
@@ -33,6 +35,7 @@ const dialogContentPropDefs = {
33
35
  align: PropDef<(typeof alignValues)[number]>;
34
36
  size: PropDef<(typeof contentSizes)[number]>;
35
37
  panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;
38
+ material: PropDef<(typeof materials)[number] | undefined>;
36
39
  width: PropDef<string>;
37
40
  minWidth: PropDef<string>;
38
41
  maxWidth: PropDef<string>;
@@ -43,20 +43,99 @@ const DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>
43
43
  const {
44
44
  align: alignPropDef,
45
45
  panelBackground: panelBackgroundPropDef,
46
+ material: materialPropDef,
46
47
  ...propDefs
47
48
  } = dialogContentPropDefs;
49
+
48
50
  const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });
49
- const { panelBackground } = extractProps(
51
+
52
+ // Extract panelBackground and material from props
53
+ const { panelBackground: extractedPanelBackground } = extractProps(
50
54
  { panelBackground: props.panelBackground },
51
55
  { panelBackground: panelBackgroundPropDef },
52
56
  );
57
+
58
+ const { material: extractedMaterial } = extractProps(
59
+ { material: props.material },
60
+ { material: materialPropDef },
61
+ );
62
+
63
+ // Handle material prop with panelBackground fallback
64
+ const materialValue = React.useMemo(() => {
65
+ if (extractedMaterial !== undefined) {
66
+ console.warn(
67
+ 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',
68
+ );
69
+ }
70
+ return extractedMaterial ?? extractedPanelBackground;
71
+ }, [extractedMaterial, extractedPanelBackground]);
72
+
53
73
  const {
54
74
  className,
55
75
  forceMount,
56
76
  container,
57
77
  panelBackground: _,
78
+ material: __,
58
79
  ...contentProps
59
80
  } = extractProps(props, propDefs);
81
+
82
+ // Focus management
83
+ const contentRef = React.useRef<HTMLDivElement>(null);
84
+ const combinedRef = React.useMemo(
85
+ () => (node: HTMLDivElement | null) => {
86
+ contentRef.current = node;
87
+ if (typeof forwardedRef === 'function') {
88
+ forwardedRef(node);
89
+ } else if (forwardedRef) {
90
+ forwardedRef.current = node;
91
+ }
92
+ },
93
+ [forwardedRef],
94
+ );
95
+
96
+ // Focus trap effect
97
+ React.useEffect(() => {
98
+ // SSR safety - only run on client
99
+ if (typeof window === 'undefined') return;
100
+
101
+ const content = contentRef.current;
102
+ if (!content) return;
103
+
104
+ const focusableElements = content.querySelectorAll(
105
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])',
106
+ );
107
+
108
+ if (focusableElements.length === 0) return;
109
+
110
+ const firstElement = focusableElements[0] as HTMLElement;
111
+ const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;
112
+
113
+ const handleKeyDown = (event: KeyboardEvent) => {
114
+ if (event.key === 'Tab') {
115
+ if (event.shiftKey) {
116
+ if (document.activeElement === firstElement) {
117
+ event.preventDefault();
118
+ lastElement.focus();
119
+ }
120
+ } else {
121
+ if (document.activeElement === lastElement) {
122
+ event.preventDefault();
123
+ firstElement.focus();
124
+ }
125
+ }
126
+ }
127
+ };
128
+
129
+ content.addEventListener('keydown', handleKeyDown);
130
+
131
+ // Focus first element when dialog opens
132
+ firstElement.focus();
133
+
134
+ return () => {
135
+ content.removeEventListener('keydown', handleKeyDown);
136
+ };
137
+ }, []);
138
+
60
139
  return (
61
140
  <DialogPrimitive.Portal container={container} forceMount={forceMount}>
62
141
  <Theme asChild>
@@ -67,9 +146,20 @@ const DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>
67
146
  >
68
147
  <DialogPrimitive.Content
69
148
  {...contentProps}
70
- ref={forwardedRef}
149
+ ref={combinedRef}
71
150
  className={classNames('rt-BaseDialogContent', 'rt-DialogContent', className)}
72
- data-panel-background={panelBackground}
151
+ data-material={materialValue}
152
+ data-panel-background={materialValue}
153
+ tabIndex={-1}
154
+ role="dialog"
155
+ aria-modal="true"
156
+ />
157
+ {/* ARIA live region for screen reader announcements */}
158
+ <div
159
+ aria-live="polite"
160
+ aria-atomic="true"
161
+ className="rt-sr-only"
162
+ id="dialog-announcement"
73
163
  />
74
164
  </div>
75
165
  </div>