@kushagradhawan/kookie-ui 0.3.21 → 0.3.23

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 (548) hide show
  1. package/components.css +264 -329
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +4 -4
  5. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js +1 -1
  6. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js.map +3 -3
  7. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  8. package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
  9. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
  10. package/dist/cjs/components/_internal/shell-handles.js +1 -1
  11. package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
  12. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  13. package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
  14. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  15. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  16. package/dist/cjs/components/accordion.d.ts.map +1 -1
  17. package/dist/cjs/components/accordion.js +1 -1
  18. package/dist/cjs/components/accordion.js.map +4 -4
  19. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  20. package/dist/cjs/components/alert-dialog.js +1 -1
  21. package/dist/cjs/components/alert-dialog.js.map +4 -4
  22. package/dist/cjs/components/avatar.js +1 -1
  23. package/dist/cjs/components/avatar.js.map +4 -4
  24. package/dist/cjs/components/badge.d.ts.map +1 -1
  25. package/dist/cjs/components/badge.js +1 -1
  26. package/dist/cjs/components/badge.js.map +4 -4
  27. package/dist/cjs/components/blockquote.js +1 -1
  28. package/dist/cjs/components/blockquote.js.map +4 -4
  29. package/dist/cjs/components/box.js +1 -1
  30. package/dist/cjs/components/box.js.map +4 -4
  31. package/dist/cjs/components/button.js +1 -1
  32. package/dist/cjs/components/button.js.map +4 -4
  33. package/dist/cjs/components/callout.js +1 -1
  34. package/dist/cjs/components/callout.js.map +4 -4
  35. package/dist/cjs/components/card.js +1 -1
  36. package/dist/cjs/components/card.js.map +4 -4
  37. package/dist/cjs/components/chatbar.js +2 -2
  38. package/dist/cjs/components/chatbar.js.map +4 -4
  39. package/dist/cjs/components/checkbox-cards.js +1 -1
  40. package/dist/cjs/components/checkbox-cards.js.map +4 -4
  41. package/dist/cjs/components/checkbox-group.js +1 -1
  42. package/dist/cjs/components/checkbox-group.js.map +4 -4
  43. package/dist/cjs/components/checkbox.js +1 -1
  44. package/dist/cjs/components/checkbox.js.map +4 -4
  45. package/dist/cjs/components/code.js +1 -1
  46. package/dist/cjs/components/code.js.map +4 -4
  47. package/dist/cjs/components/combobox.js +1 -1
  48. package/dist/cjs/components/combobox.js.map +4 -4
  49. package/dist/cjs/components/container.js +1 -1
  50. package/dist/cjs/components/container.js.map +4 -4
  51. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  52. package/dist/cjs/components/context-menu.js +1 -1
  53. package/dist/cjs/components/context-menu.js.map +4 -4
  54. package/dist/cjs/components/data-list.js +1 -1
  55. package/dist/cjs/components/data-list.js.map +4 -4
  56. package/dist/cjs/components/dialog.d.ts.map +1 -1
  57. package/dist/cjs/components/dialog.js +1 -1
  58. package/dist/cjs/components/dialog.js.map +4 -4
  59. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  60. package/dist/cjs/components/dropdown-menu.js +1 -1
  61. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  62. package/dist/cjs/components/em.js +1 -1
  63. package/dist/cjs/components/em.js.map +4 -4
  64. package/dist/cjs/components/flex.js +1 -1
  65. package/dist/cjs/components/flex.js.map +4 -4
  66. package/dist/cjs/components/grid.js +1 -1
  67. package/dist/cjs/components/grid.js.map +4 -4
  68. package/dist/cjs/components/heading.js +1 -1
  69. package/dist/cjs/components/heading.js.map +4 -4
  70. package/dist/cjs/components/hover-card.js +1 -1
  71. package/dist/cjs/components/hover-card.js.map +4 -4
  72. package/dist/cjs/components/icon-button.js +2 -2
  73. package/dist/cjs/components/icon-button.js.map +4 -4
  74. package/dist/cjs/components/image.js +1 -1
  75. package/dist/cjs/components/image.js.map +4 -4
  76. package/dist/cjs/components/index.js +5 -5
  77. package/dist/cjs/components/index.js.map +4 -4
  78. package/dist/cjs/components/inset.js +1 -1
  79. package/dist/cjs/components/inset.js.map +4 -4
  80. package/dist/cjs/components/kbd.js +1 -1
  81. package/dist/cjs/components/kbd.js.map +4 -4
  82. package/dist/cjs/components/link.js +1 -1
  83. package/dist/cjs/components/link.js.map +4 -4
  84. package/dist/cjs/components/navbar.js +1 -1
  85. package/dist/cjs/components/navbar.js.map +4 -4
  86. package/dist/cjs/components/popover.js +1 -1
  87. package/dist/cjs/components/popover.js.map +4 -4
  88. package/dist/cjs/components/progress.js +1 -1
  89. package/dist/cjs/components/progress.js.map +4 -4
  90. package/dist/cjs/components/quote.js +1 -1
  91. package/dist/cjs/components/quote.js.map +4 -4
  92. package/dist/cjs/components/radio-cards.js +1 -1
  93. package/dist/cjs/components/radio-cards.js.map +4 -4
  94. package/dist/cjs/components/radio-group.js +1 -1
  95. package/dist/cjs/components/radio-group.js.map +4 -4
  96. package/dist/cjs/components/radio.js +1 -1
  97. package/dist/cjs/components/radio.js.map +4 -4
  98. package/dist/cjs/components/schemas/base-button.schema.d.ts +2 -2
  99. package/dist/cjs/components/schemas/button.schema.d.ts +2 -2
  100. package/dist/cjs/components/schemas/icon-button.schema.d.ts +4 -4
  101. package/dist/cjs/components/schemas/shell.schema.d.ts +2 -2
  102. package/dist/cjs/components/schemas/toggle-button.schema.d.ts +6 -6
  103. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +8 -8
  104. package/dist/cjs/components/scroll-area.js +1 -1
  105. package/dist/cjs/components/scroll-area.js.map +4 -4
  106. package/dist/cjs/components/section.js +1 -1
  107. package/dist/cjs/components/section.js.map +4 -4
  108. package/dist/cjs/components/segmented-control.js +1 -1
  109. package/dist/cjs/components/segmented-control.js.map +4 -4
  110. package/dist/cjs/components/select.js +1 -1
  111. package/dist/cjs/components/select.js.map +4 -4
  112. package/dist/cjs/components/separator.js +1 -1
  113. package/dist/cjs/components/separator.js.map +4 -4
  114. package/dist/cjs/components/sheet.d.ts.map +1 -1
  115. package/dist/cjs/components/sheet.js +1 -1
  116. package/dist/cjs/components/sheet.js.map +4 -4
  117. package/dist/cjs/components/shell.d.ts.map +1 -1
  118. package/dist/cjs/components/shell.js +1 -1
  119. package/dist/cjs/components/shell.js.map +4 -4
  120. package/dist/cjs/components/sidebar.js +1 -1
  121. package/dist/cjs/components/sidebar.js.map +4 -4
  122. package/dist/cjs/components/skeleton.js +1 -1
  123. package/dist/cjs/components/skeleton.js.map +4 -4
  124. package/dist/cjs/components/slider.js +1 -1
  125. package/dist/cjs/components/slider.js.map +4 -4
  126. package/dist/cjs/components/spinner.js +1 -1
  127. package/dist/cjs/components/spinner.js.map +4 -4
  128. package/dist/cjs/components/strong.js +1 -1
  129. package/dist/cjs/components/strong.js.map +4 -4
  130. package/dist/cjs/components/switch.js +1 -1
  131. package/dist/cjs/components/switch.js.map +4 -4
  132. package/dist/cjs/components/tab-nav.js +1 -1
  133. package/dist/cjs/components/tab-nav.js.map +4 -4
  134. package/dist/cjs/components/table.js +1 -1
  135. package/dist/cjs/components/table.js.map +4 -4
  136. package/dist/cjs/components/tabs.js +1 -1
  137. package/dist/cjs/components/tabs.js.map +4 -4
  138. package/dist/cjs/components/text-area.js +1 -1
  139. package/dist/cjs/components/text-area.js.map +4 -4
  140. package/dist/cjs/components/text-field.js +2 -2
  141. package/dist/cjs/components/text-field.js.map +4 -4
  142. package/dist/cjs/components/text.js +1 -1
  143. package/dist/cjs/components/text.js.map +4 -4
  144. package/dist/cjs/components/theme-panel.js +3 -3
  145. package/dist/cjs/components/theme-panel.js.map +4 -4
  146. package/dist/cjs/components/theme.d.ts.map +1 -1
  147. package/dist/cjs/components/theme.js +1 -1
  148. package/dist/cjs/components/theme.js.map +4 -4
  149. package/dist/cjs/components/toggle-button.js +2 -2
  150. package/dist/cjs/components/toggle-button.js.map +4 -4
  151. package/dist/cjs/components/toggle-icon-button.js +3 -3
  152. package/dist/cjs/components/toggle-icon-button.js.map +4 -4
  153. package/dist/cjs/components/toolbar.js +1 -1
  154. package/dist/cjs/components/toolbar.js.map +4 -4
  155. package/dist/cjs/components/tooltip.js +1 -1
  156. package/dist/cjs/components/tooltip.js.map +4 -4
  157. package/dist/cjs/components/user-card.js +1 -1
  158. package/dist/cjs/components/user-card.js.map +4 -4
  159. package/dist/cjs/helpers/compile-prop-defs.d.ts +49 -0
  160. package/dist/cjs/helpers/compile-prop-defs.d.ts.map +1 -0
  161. package/dist/cjs/helpers/compile-prop-defs.js +2 -0
  162. package/dist/cjs/helpers/compile-prop-defs.js.map +7 -0
  163. package/dist/cjs/helpers/extract-props.d.ts.map +1 -1
  164. package/dist/cjs/helpers/extract-props.js +1 -1
  165. package/dist/cjs/helpers/extract-props.js.map +4 -4
  166. package/dist/cjs/helpers/get-margin-styles.d.ts.map +1 -1
  167. package/dist/cjs/helpers/get-margin-styles.js +1 -1
  168. package/dist/cjs/helpers/get-margin-styles.js.map +3 -3
  169. package/dist/cjs/helpers/get-responsive-styles.d.ts +5 -2
  170. package/dist/cjs/helpers/get-responsive-styles.d.ts.map +1 -1
  171. package/dist/cjs/helpers/get-responsive-styles.js +1 -1
  172. package/dist/cjs/helpers/get-responsive-styles.js.map +3 -3
  173. package/dist/cjs/helpers/index.js +2 -2
  174. package/dist/cjs/helpers/index.js.map +4 -4
  175. package/dist/cjs/helpers/use-deprecation-warning.d.ts +10 -0
  176. package/dist/cjs/helpers/use-deprecation-warning.d.ts.map +1 -0
  177. package/dist/cjs/helpers/use-deprecation-warning.js +2 -0
  178. package/dist/cjs/helpers/use-deprecation-warning.js.map +7 -0
  179. package/dist/cjs/hooks/index.js +2 -2
  180. package/dist/cjs/hooks/index.js.map +3 -3
  181. package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
  182. package/dist/cjs/hooks/use-body-pointer-events-cleanup.js +1 -1
  183. package/dist/cjs/hooks/use-body-pointer-events-cleanup.js.map +3 -3
  184. package/dist/cjs/hooks/use-breakpoint.d.ts +7 -3
  185. package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-breakpoint.js +1 -1
  187. package/dist/cjs/hooks/use-breakpoint.js.map +3 -3
  188. package/dist/cjs/hooks/use-prop-synced-state.d.ts +14 -0
  189. package/dist/cjs/hooks/use-prop-synced-state.d.ts.map +1 -0
  190. package/dist/cjs/hooks/use-prop-synced-state.js +2 -0
  191. package/dist/cjs/hooks/use-prop-synced-state.js.map +7 -0
  192. package/dist/cjs/index.js +5 -5
  193. package/dist/cjs/index.js.map +4 -4
  194. package/dist/esm/{chunk-RQ2ZPMHJ.js → chunk-22HGLMPQ.js} +2 -2
  195. package/dist/esm/{chunk-WYA4IRU6.js → chunk-25WZA7ZU.js} +2 -2
  196. package/dist/esm/chunk-2UPAYDKR.js +2 -0
  197. package/dist/esm/chunk-2UPAYDKR.js.map +7 -0
  198. package/dist/esm/{chunk-XHQGMOXV.js → chunk-36ZQVP7F.js} +2 -2
  199. package/dist/esm/{chunk-K3R4AH3E.js → chunk-3MWWP4MW.js} +2 -2
  200. package/dist/esm/{chunk-HQ35PM4O.js → chunk-43A5GUSI.js} +2 -2
  201. package/dist/esm/{chunk-Z5DQ6FSA.js → chunk-4AQTUBVP.js} +2 -2
  202. package/dist/esm/{chunk-25U7DENY.js → chunk-4BBOHEF4.js} +2 -2
  203. package/dist/esm/chunk-4CKDU6FY.js +2 -0
  204. package/dist/esm/chunk-4CKDU6FY.js.map +7 -0
  205. package/dist/esm/{chunk-ZSEFZM5H.js → chunk-4IY2PR6N.js} +2 -2
  206. package/dist/esm/{chunk-QLIELX4I.js → chunk-4ME6O27S.js} +2 -2
  207. package/dist/esm/chunk-4XJY6FIK.js +2 -0
  208. package/dist/esm/chunk-4XJY6FIK.js.map +7 -0
  209. package/dist/esm/{chunk-JQOFJNCV.js → chunk-4YFJWXL2.js} +2 -2
  210. package/dist/esm/{chunk-DNI4QRXQ.js → chunk-5IBGFL6O.js} +2 -2
  211. package/dist/esm/chunk-5TXQLK4G.js +2 -0
  212. package/dist/esm/chunk-5TXQLK4G.js.map +7 -0
  213. package/dist/esm/{chunk-IPJUHVM6.js → chunk-666GX7O5.js} +2 -2
  214. package/dist/esm/chunk-6FLLFCBU.js +2 -0
  215. package/dist/esm/chunk-6FLLFCBU.js.map +7 -0
  216. package/dist/esm/{chunk-DJBPM5QK.js → chunk-7FC7HF76.js} +2 -2
  217. package/dist/esm/{chunk-SVLY6B5F.js → chunk-7QDTSBJF.js} +2 -2
  218. package/dist/esm/chunk-AX5S56DS.js +2 -0
  219. package/dist/esm/chunk-AX5S56DS.js.map +7 -0
  220. package/dist/esm/{chunk-DK5MHD6I.js → chunk-B24BDVG2.js} +2 -2
  221. package/dist/esm/{chunk-WZCZHCVE.js → chunk-BJYUPIXO.js} +2 -2
  222. package/dist/esm/{chunk-BJTJUIYJ.js → chunk-CRWYCLTE.js} +2 -2
  223. package/dist/esm/{chunk-OHJVFZMH.js → chunk-CSKZZOI2.js} +2 -2
  224. package/dist/esm/chunk-D5N627TH.js +2 -0
  225. package/dist/esm/chunk-D5N627TH.js.map +7 -0
  226. package/dist/esm/{chunk-ADYTQCZX.js → chunk-D6B7IMZU.js} +2 -2
  227. package/dist/esm/chunk-DL2O3GKG.js +2 -0
  228. package/dist/esm/chunk-DL2O3GKG.js.map +7 -0
  229. package/dist/esm/{chunk-USGTBZ43.js → chunk-E67CIG6A.js} +2 -2
  230. package/dist/esm/{chunk-42HFGCHX.js → chunk-ETMLMDW4.js} +2 -2
  231. package/dist/esm/{chunk-7CBAHIVG.js → chunk-F2HYQ3ZR.js} +2 -2
  232. package/dist/esm/{chunk-YUZPSUJE.js → chunk-F7IYL2VW.js} +2 -2
  233. package/dist/esm/{chunk-FVCWNSRU.js → chunk-FHOCUZDR.js} +2 -2
  234. package/dist/esm/{chunk-7MURQ6CR.js → chunk-FLFAXVFB.js} +2 -2
  235. package/dist/esm/{chunk-APRBRAOT.js → chunk-FOEZLQTW.js} +2 -2
  236. package/dist/esm/{chunk-WNSPLWRV.js → chunk-GJSGKE7B.js} +2 -2
  237. package/dist/esm/{chunk-OGOOZLUD.js → chunk-GLERJXVS.js} +2 -2
  238. package/dist/esm/{chunk-6VGPTAHM.js → chunk-GWXVETMF.js} +2 -2
  239. package/dist/esm/{chunk-ES7MK2MM.js → chunk-GYBLXQ4R.js} +2 -2
  240. package/dist/esm/{chunk-4OBMRJHC.js → chunk-H7ST535H.js} +2 -2
  241. package/dist/esm/{chunk-QLZ5XAW6.js → chunk-HF5WY5YE.js} +2 -2
  242. package/dist/esm/chunk-ICIGZ3N7.js +2 -0
  243. package/dist/esm/chunk-ICIGZ3N7.js.map +7 -0
  244. package/dist/esm/{chunk-RDP4UQ42.js → chunk-IEWCQU2S.js} +2 -2
  245. package/dist/esm/{chunk-XLOHPURR.js → chunk-IHK3H2OM.js} +2 -2
  246. package/dist/esm/{chunk-3F6I7YOR.js → chunk-JDGJSNWT.js} +2 -2
  247. package/dist/esm/chunk-JQQIPEGY.js +2 -0
  248. package/dist/esm/chunk-JQQIPEGY.js.map +7 -0
  249. package/dist/esm/chunk-JR2YOGII.js +2 -0
  250. package/dist/esm/chunk-JR2YOGII.js.map +7 -0
  251. package/dist/esm/chunk-JUY7CBSL.js +2 -0
  252. package/dist/esm/chunk-JUY7CBSL.js.map +7 -0
  253. package/dist/esm/{chunk-VF5TRT3H.js → chunk-KKM6T5P7.js} +2 -2
  254. package/dist/esm/{chunk-ZHYOJNWV.js → chunk-LKAK5GXF.js} +2 -2
  255. package/dist/esm/chunk-LOGJJF4I.js +2 -0
  256. package/dist/esm/chunk-LOGJJF4I.js.map +7 -0
  257. package/dist/esm/{chunk-JCYI4NTV.js → chunk-MBCBP73P.js} +2 -2
  258. package/dist/esm/{chunk-UYNYUR7O.js → chunk-MBE2YSBU.js} +2 -2
  259. package/dist/esm/chunk-MHANZINI.js +2 -0
  260. package/dist/esm/chunk-MHANZINI.js.map +7 -0
  261. package/dist/esm/chunk-MRECKC4D.js +2 -0
  262. package/dist/esm/chunk-MRECKC4D.js.map +7 -0
  263. package/dist/esm/{chunk-H2G446JG.js → chunk-NMKPFUNP.js} +2 -2
  264. package/dist/esm/{chunk-4N5JU7XQ.js → chunk-O3CDWEZA.js} +2 -2
  265. package/dist/esm/{chunk-TEULZKBM.js → chunk-OGXZHAQL.js} +2 -2
  266. package/dist/esm/{chunk-2AEELIG6.js → chunk-OWAUCLRT.js} +2 -2
  267. package/dist/esm/{chunk-7CXVHFMQ.js → chunk-P7HYVJSU.js} +2 -2
  268. package/dist/esm/{chunk-4532RT2B.js → chunk-P7IAHW4V.js} +2 -2
  269. package/dist/esm/{chunk-M3ZYJANH.js → chunk-PQZXQ4ST.js} +2 -2
  270. package/dist/esm/{chunk-SGU4HUHF.js → chunk-PTLFMWCN.js} +2 -2
  271. package/dist/esm/chunk-S2HA3W3V.js +2 -0
  272. package/dist/esm/chunk-S2HA3W3V.js.map +7 -0
  273. package/dist/esm/{chunk-E6IWYD3U.js → chunk-S5C5YRBS.js} +2 -2
  274. package/dist/esm/{chunk-A24PYRVV.js → chunk-SO67YEVQ.js} +2 -2
  275. package/dist/esm/chunk-TLWTUKKL.js +2 -0
  276. package/dist/esm/chunk-TLWTUKKL.js.map +7 -0
  277. package/dist/esm/{chunk-HACQF6F4.js → chunk-TOOSHJOA.js} +2 -2
  278. package/dist/esm/{chunk-QOWA5LK5.js → chunk-U2X2CAW4.js} +2 -2
  279. package/dist/esm/{chunk-U7AASKZI.js → chunk-UVCH7QKO.js} +2 -2
  280. package/dist/esm/{chunk-GWYFT3EI.js → chunk-VLO7NXSP.js} +2 -2
  281. package/dist/esm/{chunk-DXI5P5O4.js → chunk-VX6ARMWP.js} +2 -2
  282. package/dist/esm/chunk-WAURCNAS.js +2 -0
  283. package/dist/esm/chunk-WAURCNAS.js.map +7 -0
  284. package/dist/esm/{chunk-EJWAAFCI.js → chunk-WO43WW3A.js} +2 -2
  285. package/dist/esm/{chunk-GLC4QJBF.js → chunk-WTYNFBFV.js} +2 -2
  286. package/dist/esm/{chunk-6FAICIYS.js → chunk-XMRIRFM7.js} +2 -2
  287. package/dist/esm/chunk-YV2KYHGR.js +2 -0
  288. package/dist/esm/chunk-YV2KYHGR.js.map +7 -0
  289. package/dist/esm/{chunk-UIEUZLZZ.js → chunk-ZY6SQWHT.js} +2 -2
  290. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  291. package/dist/esm/components/_internal/base-button.js +1 -1
  292. package/dist/esm/components/_internal/dropdown-menu-drill-down.js +1 -1
  293. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  294. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
  295. package/dist/esm/components/_internal/shell-handles.js +1 -1
  296. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  297. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  298. package/dist/esm/components/accordion.d.ts.map +1 -1
  299. package/dist/esm/components/accordion.js +1 -1
  300. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  301. package/dist/esm/components/alert-dialog.js +1 -1
  302. package/dist/esm/components/avatar.js +1 -1
  303. package/dist/esm/components/badge.d.ts.map +1 -1
  304. package/dist/esm/components/badge.js +1 -1
  305. package/dist/esm/components/blockquote.js +1 -1
  306. package/dist/esm/components/box.js +1 -1
  307. package/dist/esm/components/button.js +1 -1
  308. package/dist/esm/components/callout.js +1 -1
  309. package/dist/esm/components/card.js +1 -1
  310. package/dist/esm/components/chatbar.js +1 -1
  311. package/dist/esm/components/checkbox-cards.js +1 -1
  312. package/dist/esm/components/checkbox-group.js +1 -1
  313. package/dist/esm/components/checkbox.js +1 -1
  314. package/dist/esm/components/code.js +1 -1
  315. package/dist/esm/components/combobox.js +1 -1
  316. package/dist/esm/components/container.js +1 -1
  317. package/dist/esm/components/context-menu.d.ts.map +1 -1
  318. package/dist/esm/components/context-menu.js +1 -1
  319. package/dist/esm/components/data-list.js +1 -1
  320. package/dist/esm/components/dialog.d.ts.map +1 -1
  321. package/dist/esm/components/dialog.js +1 -1
  322. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  323. package/dist/esm/components/dropdown-menu.js +1 -1
  324. package/dist/esm/components/em.js +1 -1
  325. package/dist/esm/components/flex.js +1 -1
  326. package/dist/esm/components/grid.js +1 -1
  327. package/dist/esm/components/heading.js +1 -1
  328. package/dist/esm/components/hover-card.js +1 -1
  329. package/dist/esm/components/icon-button.js +1 -1
  330. package/dist/esm/components/image.js +1 -1
  331. package/dist/esm/components/index.js +1 -1
  332. package/dist/esm/components/inset.js +1 -1
  333. package/dist/esm/components/kbd.js +1 -1
  334. package/dist/esm/components/link.js +1 -1
  335. package/dist/esm/components/navbar.js +1 -1
  336. package/dist/esm/components/popover.js +1 -1
  337. package/dist/esm/components/progress.js +1 -1
  338. package/dist/esm/components/quote.js +1 -1
  339. package/dist/esm/components/radio-cards.js +1 -1
  340. package/dist/esm/components/radio-group.js +1 -1
  341. package/dist/esm/components/radio.js +1 -1
  342. package/dist/esm/components/schemas/base-button.schema.d.ts +2 -2
  343. package/dist/esm/components/schemas/button.schema.d.ts +2 -2
  344. package/dist/esm/components/schemas/icon-button.schema.d.ts +4 -4
  345. package/dist/esm/components/schemas/shell.schema.d.ts +2 -2
  346. package/dist/esm/components/schemas/toggle-button.schema.d.ts +6 -6
  347. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +8 -8
  348. package/dist/esm/components/scroll-area.js +1 -1
  349. package/dist/esm/components/section.js +1 -1
  350. package/dist/esm/components/segmented-control.js +1 -1
  351. package/dist/esm/components/select.js +1 -1
  352. package/dist/esm/components/separator.js +1 -1
  353. package/dist/esm/components/sheet.d.ts.map +1 -1
  354. package/dist/esm/components/sheet.js +1 -1
  355. package/dist/esm/components/shell.d.ts.map +1 -1
  356. package/dist/esm/components/shell.js +1 -1
  357. package/dist/esm/components/sidebar.js +1 -1
  358. package/dist/esm/components/skeleton.js +1 -1
  359. package/dist/esm/components/slider.js +1 -1
  360. package/dist/esm/components/spinner.js +1 -1
  361. package/dist/esm/components/strong.js +1 -1
  362. package/dist/esm/components/switch.js +1 -1
  363. package/dist/esm/components/tab-nav.js +1 -1
  364. package/dist/esm/components/table.js +1 -1
  365. package/dist/esm/components/tabs.js +1 -1
  366. package/dist/esm/components/text-area.js +1 -1
  367. package/dist/esm/components/text-field.js +1 -1
  368. package/dist/esm/components/text.js +1 -1
  369. package/dist/esm/components/theme-panel.js +1 -1
  370. package/dist/esm/components/theme.d.ts.map +1 -1
  371. package/dist/esm/components/theme.js +1 -1
  372. package/dist/esm/components/toggle-button.js +1 -1
  373. package/dist/esm/components/toggle-icon-button.js +1 -1
  374. package/dist/esm/components/toolbar.js +1 -1
  375. package/dist/esm/components/tooltip.js +1 -1
  376. package/dist/esm/components/user-card.js +1 -1
  377. package/dist/esm/helpers/compile-prop-defs.d.ts +49 -0
  378. package/dist/esm/helpers/compile-prop-defs.d.ts.map +1 -0
  379. package/dist/esm/helpers/compile-prop-defs.js +2 -0
  380. package/dist/esm/helpers/compile-prop-defs.js.map +7 -0
  381. package/dist/esm/helpers/extract-props.d.ts.map +1 -1
  382. package/dist/esm/helpers/extract-props.js +1 -1
  383. package/dist/esm/helpers/get-margin-styles.d.ts.map +1 -1
  384. package/dist/esm/helpers/get-margin-styles.js +1 -1
  385. package/dist/esm/helpers/get-responsive-styles.d.ts +5 -2
  386. package/dist/esm/helpers/get-responsive-styles.d.ts.map +1 -1
  387. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  388. package/dist/esm/helpers/index.js +1 -1
  389. package/dist/esm/helpers/use-deprecation-warning.d.ts +10 -0
  390. package/dist/esm/helpers/use-deprecation-warning.d.ts.map +1 -0
  391. package/dist/esm/helpers/use-deprecation-warning.js +2 -0
  392. package/dist/esm/helpers/use-deprecation-warning.js.map +7 -0
  393. package/dist/esm/hooks/index.js +1 -1
  394. package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-body-pointer-events-cleanup.js +1 -1
  396. package/dist/esm/hooks/use-breakpoint.d.ts +7 -3
  397. package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-breakpoint.js +1 -1
  399. package/dist/esm/hooks/use-prop-synced-state.d.ts +14 -0
  400. package/dist/esm/hooks/use-prop-synced-state.d.ts.map +1 -0
  401. package/dist/esm/hooks/use-prop-synced-state.js +2 -0
  402. package/dist/esm/hooks/use-prop-synced-state.js.map +7 -0
  403. package/dist/esm/index.js +1 -1
  404. package/package.json +2 -1
  405. package/schemas/base-button.json +0 -1
  406. package/schemas/button.json +0 -1
  407. package/schemas/icon-button.json +0 -1
  408. package/schemas/index.json +0 -6
  409. package/schemas/toggle-button.json +0 -1
  410. package/schemas/toggle-icon-button.json +0 -1
  411. package/src/components/_internal/base-button.css +2 -2
  412. package/src/components/_internal/base-button.tsx +3 -58
  413. package/src/components/_internal/base-card.css +19 -4
  414. package/src/components/_internal/base-checkbox.css +2 -2
  415. package/src/components/_internal/base-dialog.css +7 -13
  416. package/src/components/_internal/base-menu.css +7 -0
  417. package/src/components/_internal/base-radio.css +2 -2
  418. package/src/components/_internal/base-sidebar.css +7 -0
  419. package/src/components/_internal/base-tab-list.css +2 -2
  420. package/src/components/_internal/shell-handles.tsx +27 -0
  421. package/src/components/accordion.css +6 -6
  422. package/src/components/accordion.tsx +2 -8
  423. package/src/components/alert-dialog.tsx +22 -20
  424. package/src/components/avatar.css +2 -2
  425. package/src/components/badge.css +2 -2
  426. package/src/components/badge.tsx +2 -8
  427. package/src/components/callout.css +2 -2
  428. package/src/components/chatbar.css +1 -1
  429. package/src/components/context-menu.tsx +2 -8
  430. package/src/components/dialog.tsx +46 -72
  431. package/src/components/dropdown-menu.tsx +2 -8
  432. package/src/components/popover.css +7 -0
  433. package/src/components/progress.css +21 -8
  434. package/src/components/segmented-control.css +2 -2
  435. package/src/components/select.css +9 -2
  436. package/src/components/sheet.tsx +31 -28
  437. package/src/components/shell.css +106 -69
  438. package/src/components/shell.tsx +168 -97
  439. package/src/components/slider.css +2 -2
  440. package/src/components/switch.css +2 -2
  441. package/src/components/table.css +7 -0
  442. package/src/components/text-area.css +2 -2
  443. package/src/components/text-field.css +2 -2
  444. package/src/components/theme.tsx +35 -34
  445. package/src/helpers/compile-prop-defs.ts +121 -0
  446. package/src/helpers/extract-props.ts +104 -83
  447. package/src/helpers/get-margin-styles.ts +38 -71
  448. package/src/helpers/get-responsive-styles.ts +37 -38
  449. package/src/helpers/use-deprecation-warning.ts +26 -0
  450. package/src/hooks/use-body-pointer-events-cleanup.ts +36 -6
  451. package/src/hooks/use-breakpoint.ts +94 -53
  452. package/src/hooks/use-prop-synced-state.ts +24 -0
  453. package/src/styles/tokens/blur.css +28 -0
  454. package/src/styles/tokens/color.css +3 -3
  455. package/src/styles/tokens/constants.css +11 -0
  456. package/styles.css +280 -332
  457. package/tokens/base.css +13 -3
  458. package/tokens.css +16 -3
  459. package/dist/esm/chunk-2SS3FA3N.js +0 -2
  460. package/dist/esm/chunk-2SS3FA3N.js.map +0 -7
  461. package/dist/esm/chunk-5U2Q23K3.js +0 -2
  462. package/dist/esm/chunk-5U2Q23K3.js.map +0 -7
  463. package/dist/esm/chunk-6ELPYR73.js +0 -2
  464. package/dist/esm/chunk-6ELPYR73.js.map +0 -7
  465. package/dist/esm/chunk-DZ4H2KTP.js +0 -2
  466. package/dist/esm/chunk-DZ4H2KTP.js.map +0 -7
  467. package/dist/esm/chunk-H4MMVAGQ.js +0 -2
  468. package/dist/esm/chunk-H4MMVAGQ.js.map +0 -7
  469. package/dist/esm/chunk-HURTSXRY.js +0 -2
  470. package/dist/esm/chunk-HURTSXRY.js.map +0 -7
  471. package/dist/esm/chunk-ITRVKLYU.js +0 -2
  472. package/dist/esm/chunk-ITRVKLYU.js.map +0 -7
  473. package/dist/esm/chunk-KCAFSCOV.js +0 -2
  474. package/dist/esm/chunk-KCAFSCOV.js.map +0 -7
  475. package/dist/esm/chunk-KMPBTEZH.js +0 -2
  476. package/dist/esm/chunk-KMPBTEZH.js.map +0 -7
  477. package/dist/esm/chunk-LN5SP46K.js +0 -2
  478. package/dist/esm/chunk-LN5SP46K.js.map +0 -7
  479. package/dist/esm/chunk-Q73Y5O5P.js +0 -2
  480. package/dist/esm/chunk-Q73Y5O5P.js.map +0 -7
  481. package/dist/esm/chunk-RMBS6CAO.js +0 -2
  482. package/dist/esm/chunk-RMBS6CAO.js.map +0 -7
  483. package/dist/esm/chunk-UUX42HBM.js +0 -2
  484. package/dist/esm/chunk-UUX42HBM.js.map +0 -7
  485. package/dist/esm/chunk-X7BD5FLE.js +0 -2
  486. package/dist/esm/chunk-X7BD5FLE.js.map +0 -7
  487. package/dist/esm/chunk-YEA646GM.js +0 -2
  488. package/dist/esm/chunk-YEA646GM.js.map +0 -7
  489. package/dist/esm/chunk-ZMEXIPWM.js +0 -2
  490. package/dist/esm/chunk-ZMEXIPWM.js.map +0 -7
  491. /package/dist/esm/{chunk-RQ2ZPMHJ.js.map → chunk-22HGLMPQ.js.map} +0 -0
  492. /package/dist/esm/{chunk-WYA4IRU6.js.map → chunk-25WZA7ZU.js.map} +0 -0
  493. /package/dist/esm/{chunk-XHQGMOXV.js.map → chunk-36ZQVP7F.js.map} +0 -0
  494. /package/dist/esm/{chunk-K3R4AH3E.js.map → chunk-3MWWP4MW.js.map} +0 -0
  495. /package/dist/esm/{chunk-HQ35PM4O.js.map → chunk-43A5GUSI.js.map} +0 -0
  496. /package/dist/esm/{chunk-Z5DQ6FSA.js.map → chunk-4AQTUBVP.js.map} +0 -0
  497. /package/dist/esm/{chunk-25U7DENY.js.map → chunk-4BBOHEF4.js.map} +0 -0
  498. /package/dist/esm/{chunk-ZSEFZM5H.js.map → chunk-4IY2PR6N.js.map} +0 -0
  499. /package/dist/esm/{chunk-QLIELX4I.js.map → chunk-4ME6O27S.js.map} +0 -0
  500. /package/dist/esm/{chunk-JQOFJNCV.js.map → chunk-4YFJWXL2.js.map} +0 -0
  501. /package/dist/esm/{chunk-DNI4QRXQ.js.map → chunk-5IBGFL6O.js.map} +0 -0
  502. /package/dist/esm/{chunk-IPJUHVM6.js.map → chunk-666GX7O5.js.map} +0 -0
  503. /package/dist/esm/{chunk-DJBPM5QK.js.map → chunk-7FC7HF76.js.map} +0 -0
  504. /package/dist/esm/{chunk-SVLY6B5F.js.map → chunk-7QDTSBJF.js.map} +0 -0
  505. /package/dist/esm/{chunk-DK5MHD6I.js.map → chunk-B24BDVG2.js.map} +0 -0
  506. /package/dist/esm/{chunk-WZCZHCVE.js.map → chunk-BJYUPIXO.js.map} +0 -0
  507. /package/dist/esm/{chunk-BJTJUIYJ.js.map → chunk-CRWYCLTE.js.map} +0 -0
  508. /package/dist/esm/{chunk-OHJVFZMH.js.map → chunk-CSKZZOI2.js.map} +0 -0
  509. /package/dist/esm/{chunk-ADYTQCZX.js.map → chunk-D6B7IMZU.js.map} +0 -0
  510. /package/dist/esm/{chunk-USGTBZ43.js.map → chunk-E67CIG6A.js.map} +0 -0
  511. /package/dist/esm/{chunk-42HFGCHX.js.map → chunk-ETMLMDW4.js.map} +0 -0
  512. /package/dist/esm/{chunk-7CBAHIVG.js.map → chunk-F2HYQ3ZR.js.map} +0 -0
  513. /package/dist/esm/{chunk-YUZPSUJE.js.map → chunk-F7IYL2VW.js.map} +0 -0
  514. /package/dist/esm/{chunk-FVCWNSRU.js.map → chunk-FHOCUZDR.js.map} +0 -0
  515. /package/dist/esm/{chunk-7MURQ6CR.js.map → chunk-FLFAXVFB.js.map} +0 -0
  516. /package/dist/esm/{chunk-APRBRAOT.js.map → chunk-FOEZLQTW.js.map} +0 -0
  517. /package/dist/esm/{chunk-WNSPLWRV.js.map → chunk-GJSGKE7B.js.map} +0 -0
  518. /package/dist/esm/{chunk-OGOOZLUD.js.map → chunk-GLERJXVS.js.map} +0 -0
  519. /package/dist/esm/{chunk-6VGPTAHM.js.map → chunk-GWXVETMF.js.map} +0 -0
  520. /package/dist/esm/{chunk-ES7MK2MM.js.map → chunk-GYBLXQ4R.js.map} +0 -0
  521. /package/dist/esm/{chunk-4OBMRJHC.js.map → chunk-H7ST535H.js.map} +0 -0
  522. /package/dist/esm/{chunk-QLZ5XAW6.js.map → chunk-HF5WY5YE.js.map} +0 -0
  523. /package/dist/esm/{chunk-RDP4UQ42.js.map → chunk-IEWCQU2S.js.map} +0 -0
  524. /package/dist/esm/{chunk-XLOHPURR.js.map → chunk-IHK3H2OM.js.map} +0 -0
  525. /package/dist/esm/{chunk-3F6I7YOR.js.map → chunk-JDGJSNWT.js.map} +0 -0
  526. /package/dist/esm/{chunk-VF5TRT3H.js.map → chunk-KKM6T5P7.js.map} +0 -0
  527. /package/dist/esm/{chunk-ZHYOJNWV.js.map → chunk-LKAK5GXF.js.map} +0 -0
  528. /package/dist/esm/{chunk-JCYI4NTV.js.map → chunk-MBCBP73P.js.map} +0 -0
  529. /package/dist/esm/{chunk-UYNYUR7O.js.map → chunk-MBE2YSBU.js.map} +0 -0
  530. /package/dist/esm/{chunk-H2G446JG.js.map → chunk-NMKPFUNP.js.map} +0 -0
  531. /package/dist/esm/{chunk-4N5JU7XQ.js.map → chunk-O3CDWEZA.js.map} +0 -0
  532. /package/dist/esm/{chunk-TEULZKBM.js.map → chunk-OGXZHAQL.js.map} +0 -0
  533. /package/dist/esm/{chunk-2AEELIG6.js.map → chunk-OWAUCLRT.js.map} +0 -0
  534. /package/dist/esm/{chunk-7CXVHFMQ.js.map → chunk-P7HYVJSU.js.map} +0 -0
  535. /package/dist/esm/{chunk-4532RT2B.js.map → chunk-P7IAHW4V.js.map} +0 -0
  536. /package/dist/esm/{chunk-M3ZYJANH.js.map → chunk-PQZXQ4ST.js.map} +0 -0
  537. /package/dist/esm/{chunk-SGU4HUHF.js.map → chunk-PTLFMWCN.js.map} +0 -0
  538. /package/dist/esm/{chunk-E6IWYD3U.js.map → chunk-S5C5YRBS.js.map} +0 -0
  539. /package/dist/esm/{chunk-A24PYRVV.js.map → chunk-SO67YEVQ.js.map} +0 -0
  540. /package/dist/esm/{chunk-HACQF6F4.js.map → chunk-TOOSHJOA.js.map} +0 -0
  541. /package/dist/esm/{chunk-QOWA5LK5.js.map → chunk-U2X2CAW4.js.map} +0 -0
  542. /package/dist/esm/{chunk-U7AASKZI.js.map → chunk-UVCH7QKO.js.map} +0 -0
  543. /package/dist/esm/{chunk-GWYFT3EI.js.map → chunk-VLO7NXSP.js.map} +0 -0
  544. /package/dist/esm/{chunk-DXI5P5O4.js.map → chunk-VX6ARMWP.js.map} +0 -0
  545. /package/dist/esm/{chunk-EJWAAFCI.js.map → chunk-WO43WW3A.js.map} +0 -0
  546. /package/dist/esm/{chunk-GLC4QJBF.js.map → chunk-WTYNFBFV.js.map} +0 -0
  547. /package/dist/esm/{chunk-6FAICIYS.js.map → chunk-XMRIRFM7.js.map} +0 -0
  548. /package/dist/esm/{chunk-UIEUZLZZ.js.map → chunk-ZY6SQWHT.js.map} +0 -0
@@ -30,6 +30,7 @@ import { Kbd } from './kbd.js';
30
30
  import type { IconProps } from './icons.js';
31
31
  import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';
32
32
  import type { GetPropDefTypes, Responsive } from '../props/prop-def.js';
33
+ import { useDeprecatedPanelBackgroundWarning } from '../helpers/use-deprecation-warning.js';
33
34
 
34
35
  interface DropdownMenuRootProps
35
36
  extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}
@@ -113,14 +114,7 @@ const DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, Dropdow
113
114
  (props, forwardedRef) => {
114
115
  const themeContext = useThemeContext();
115
116
 
116
- // Show deprecation warning for panelBackground when used
117
- React.useEffect(() => {
118
- if (props.panelBackground !== undefined) {
119
- console.warn(
120
- 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',
121
- );
122
- }
123
- }, [props.panelBackground]);
117
+ useDeprecatedPanelBackgroundWarning(props.panelBackground);
124
118
 
125
119
  // Material takes precedence over panelBackground
126
120
  const effectiveMaterial =
@@ -1,4 +1,11 @@
1
1
  .rt-PopoverContent {
2
+ /*
3
+ * This surface blurs its own backdrop, which makes it the backdrop root for
4
+ * everything inside it. A component nested here would re-blur an already
5
+ * blurred, already flat surface for the full cost of another blur pass, so
6
+ * switch the component filter off for the subtree. See tokens/blur.css.
7
+ */
8
+ --backdrop-filter-components-enabled: none;
2
9
  /* Base state: use --color-panel which adapts to theme context */
3
10
  background-color: var(--color-panel);
4
11
  backdrop-filter: var(--backdrop-filter-panel);
@@ -15,7 +15,7 @@
15
15
  */
16
16
  :where([data-panel-background='translucent'], [data-material='translucent']) & {
17
17
  backdrop-filter: var(--backdrop-filter-components);
18
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
18
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
19
19
  }
20
20
 
21
21
  /* Prevent backdrop-filter stacking with parent elements */
@@ -32,7 +32,7 @@
32
32
 
33
33
  &:where([data-panel-background='translucent'], [data-material='translucent']) {
34
34
  backdrop-filter: var(--backdrop-filter-components);
35
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
35
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
36
36
  }
37
37
  }
38
38
 
@@ -40,8 +40,21 @@
40
40
  .rt-ProgressIndicator {
41
41
  display: block;
42
42
  height: var(--position-full);
43
- width: max(calc(var(--progress-value) / var(--progress-max) * 100%), var(--progress-height));
43
+ width: var(--position-full);
44
44
  border-radius: var(--progress-indicator-radius);
45
+
46
+ /*
47
+ * The bar is full width and slid into place rather than grown. `width` is a
48
+ * layout property: animating it re-lays-out on every frame, and the
49
+ * indeterminate animation never stops, so a visible bar reflowed forever.
50
+ * `.rt-ProgressRoot` clips the overhang. `max()` keeps a sliver of the bar
51
+ * visible at very low values, as the width form did.
52
+ */
53
+ transform: translateX(
54
+ calc(
55
+ -100% + max(calc(var(--progress-value) / var(--progress-max) * 100%), var(--progress-height))
56
+ )
57
+ );
45
58
  transition: var(--transition-progress);
46
59
 
47
60
  &:where([data-state='indeterminate']) {
@@ -55,20 +68,20 @@
55
68
 
56
69
  @keyframes rt-progress-indicator-indeterminate-grow {
57
70
  0% {
58
- width: calc(var(--progress-scale-initial) * 100%);
71
+ transform: translateX(calc(-100% + var(--progress-scale-initial) * 100%));
59
72
  }
60
73
  20% {
61
- width: calc(var(--progress-scale-step-1) * 100%);
74
+ transform: translateX(calc(-100% + var(--progress-scale-step-1) * 100%));
62
75
  }
63
76
  30% {
64
- width: calc(var(--progress-scale-step-2) * 100%);
77
+ transform: translateX(calc(-100% + var(--progress-scale-step-2) * 100%));
65
78
  }
66
79
  40%,
67
80
  50% {
68
- width: calc(var(--progress-scale-step-3) * 100%);
81
+ transform: translateX(calc(-100% + var(--progress-scale-step-3) * 100%));
69
82
  }
70
83
  100% {
71
- width: calc(var(--progress-scale-final) * 100%);
84
+ transform: translateX(calc(-100% + var(--progress-scale-final) * 100%));
72
85
  }
73
86
  }
74
87
 
@@ -32,7 +32,7 @@
32
32
  */
33
33
  :where([data-panel-background='translucent'], [data-material='translucent']) & {
34
34
  backdrop-filter: var(--backdrop-filter-components);
35
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
35
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
36
36
  }
37
37
 
38
38
  /*
@@ -46,7 +46,7 @@
46
46
 
47
47
  &:where([data-panel-background='translucent'], [data-material='translucent']) {
48
48
  backdrop-filter: var(--backdrop-filter-components);
49
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
49
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
50
50
  }
51
51
 
52
52
  /* Disable backdrop-filter when inside elements that already have backdrop-filter */
@@ -16,7 +16,7 @@
16
16
  /* Theme-level translucent override */
17
17
  :where([data-panel-background='translucent'], [data-material='translucent']) & {
18
18
  backdrop-filter: var(--backdrop-filter-components);
19
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
19
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
20
20
  }
21
21
 
22
22
  /* Prevent backdrop-filter stacking with parents */
@@ -30,7 +30,7 @@
30
30
 
31
31
  &:where([data-panel-background='translucent'], [data-material='translucent']) {
32
32
  backdrop-filter: var(--backdrop-filter-components);
33
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
33
+ --backdrop-filter-components: var(--backdrop-filter-components-enabled);
34
34
  }
35
35
 
36
36
  &:where(.rt-high-contrast) {
@@ -71,6 +71,13 @@
71
71
  }
72
72
 
73
73
  .rt-SelectContent {
74
+ /*
75
+ * This surface blurs its own backdrop, which makes it the backdrop root for
76
+ * everything inside it. A component nested here would re-blur an already
77
+ * blurred, already flat surface for the full cost of another blur pass, so
78
+ * switch the component filter off for the subtree. See tokens/blur.css.
79
+ */
80
+ --backdrop-filter-components-enabled: none;
74
81
  --scrollarea-scrollbar-vertical-margin-top: var(--select-content-padding);
75
82
  --scrollarea-scrollbar-vertical-margin-bottom: var(--select-content-padding);
76
83
  --scrollarea-scrollbar-horizontal-margin-left: var(--select-content-padding);
@@ -43,6 +43,7 @@ import { Theme } from './theme.js';
43
43
  import { Heading } from './heading.js';
44
44
  import { Text } from './text.js';
45
45
  import { extractProps } from '../helpers/extract-props.js';
46
+ import { useDeprecatedPanelBackgroundWarning } from '../helpers/use-deprecation-warning.js';
46
47
  import { requireReactElement } from '../helpers/require-react-element.js';
47
48
  import { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';
48
49
 
@@ -85,6 +86,30 @@ Trigger.displayName = 'Sheet.Trigger';
85
86
 
86
87
  // Content
87
88
  /** Element type for `Sheet.Content`. */
89
+ // Reuse dialog content prop defs for size/width/height tokens, but handle
90
+ // material/panelBackground explicitly to avoid forwarding unknown DOM props.
91
+ // Built once at module scope: `extractProps` memoises on the identity of the
92
+ // prop def objects it is handed, so rebuilding these per render would recompile
93
+ // them every time a sheet renders.
94
+ const {
95
+ align: _alignPropDef,
96
+ panelBackground: panelBackgroundPropDef,
97
+ material: materialPropDef,
98
+ ...dialogPropDefsForSheet
99
+ } = dialogContentPropDefs;
100
+
101
+ const materialPropDefs = {
102
+ panelBackground: panelBackgroundPropDef,
103
+ material: materialPropDef,
104
+ };
105
+
106
+ // Override dialog's default maxWidth (600px) to avoid clamping Sheet by default
107
+ const { default: _mwDefault, ...maxWidthWithoutDefault } = dialogPropDefsForSheet.maxWidth;
108
+ const sheetPropDefs = {
109
+ ...dialogPropDefsForSheet,
110
+ maxWidth: maxWidthWithoutDefault,
111
+ } as typeof dialogPropDefsForSheet;
112
+
88
113
  type SheetContentElement = React.ElementRef<typeof DialogPrimitive.Content>;
89
114
  interface SheetContentProps
90
115
  extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,
@@ -120,40 +145,18 @@ const Content = React.forwardRef<SheetContentElement, SheetContentProps>(
120
145
  bottom: 'bottom',
121
146
  };
122
147
  const normalizedSide = normalizedSideMap[side];
123
- // Reuse dialog content prop defs for size/width/height tokens, but handle
124
- // material/panelBackground explicitly to avoid forwarding unknown DOM props.
125
- const {
126
- align: _alignPropDef,
127
- panelBackground: panelBackgroundPropDef,
128
- material: materialPropDef,
129
- ...propDefs
130
- } = dialogContentPropDefs;
131
-
132
148
  // Extract panelBackground and material together (remove from DOM props)
133
149
  const { panelBackground: resolvedPanelBackground, material: resolvedMaterial } = extractProps(
134
150
  { panelBackground: panelBackgroundProp, material: materialProp },
135
- { panelBackground: panelBackgroundPropDef, material: materialPropDef },
151
+ materialPropDefs,
136
152
  );
137
153
 
138
- const materialValue = React.useMemo(() => {
139
- if (resolvedPanelBackground !== undefined) {
140
- if (process.env.NODE_ENV !== 'production') {
141
- console.warn(
142
- 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use the `material` prop instead.',
143
- );
144
- }
145
- }
146
- return resolvedMaterial ?? resolvedPanelBackground;
147
- }, [resolvedMaterial, resolvedPanelBackground]);
154
+ useDeprecatedPanelBackgroundWarning(panelBackgroundProp);
155
+
156
+ // Material takes precedence over the deprecated panelBackground
157
+ const materialValue = resolvedMaterial ?? resolvedPanelBackground;
148
158
 
149
- // Now extract remaining props using dialog defs so size/width/height classnames are applied
150
- // Override dialog's default maxWidth (600px) to avoid clamping Sheet by default
151
- // Match dialog.tsx: extract once and avoid leaking panel/material
152
- const { default: _mwDefault, ...maxWidthWithoutDefault } = propDefs.maxWidth;
153
- const sheetPropDefs = {
154
- ...propDefs,
155
- maxWidth: maxWidthWithoutDefault,
156
- } as typeof propDefs;
159
+ // Size/width/height class names come from the dialog defs — see `sheetPropDefs`.
157
160
  const { className: extractedClassName, ...contentProps } = extractProps(
158
161
  restProps,
159
162
  sheetPropDefs,
@@ -70,47 +70,51 @@
70
70
  height: 100%;
71
71
  overflow: hidden;
72
72
 
73
- /* Animation setup */
74
- transition: width var(--motion-duration-small) var(--motion-ease-standard);
73
+ /* Above the panel, so a collapsing panel tucks behind it rather than across it. */
74
+ position: relative;
75
+ z-index: 2;
75
76
  }
76
77
 
78
+ /* Steps to its width in one layout pass — see .rt-ShellPanel for why. */
77
79
  .rt-ShellRail[data-mode='expanded'] {
78
80
  width: var(--rail-size, 64px);
79
81
  }
80
82
 
81
- /* Collapsed rail: stay in flow during transition, then hide */
82
83
  .rt-ShellRail[data-mode='collapsed'] {
83
84
  width: 0px;
84
- /* Delay container collapse until content fade completes */
85
- transition-delay: var(--motion-duration-small);
85
+ transition: width 0s var(--motion-duration-small);
86
86
  }
87
87
 
88
88
  /* Peek overlay rules consolidated later to avoid duplication */
89
89
 
90
90
  .rt-ShellRailContent {
91
+ position: absolute;
92
+ inset-block: 0;
93
+ inset-inline-start: 0;
94
+
91
95
  display: flex;
92
96
  flex-direction: column;
93
- width: var(--rail-size, 64px);
97
+ width: 100%;
94
98
  height: 100%;
95
99
  gap: var(--space-2);
96
100
 
97
- /* Content animation: fade out first, then fade in after width settles */
101
+ /* Content animation */
98
102
  opacity: 0;
99
103
  pointer-events: none;
100
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard) var(--motion-duration-small);
104
+ transform: translateX(-100%);
105
+ transition:
106
+ transform var(--motion-duration-small) var(--motion-ease-standard),
107
+ opacity var(--motion-duration-small) var(--motion-ease-standard);
108
+ }
109
+
110
+ :where([dir='rtl']) .rt-ShellRailContent {
111
+ transform: translateX(100%);
101
112
  }
102
113
 
103
114
  .rt-ShellRailContent[data-visible] {
104
115
  opacity: 1;
105
116
  pointer-events: auto;
106
- }
107
-
108
- .rt-ShellRail[data-mode='collapsed'] .rt-ShellRailContent {
109
- /* Exit animation: fade out content first, then collapse */
110
- opacity: 0;
111
- width: 0;
112
- visibility: hidden;
113
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard);
117
+ transform: translateX(0);
114
118
  }
115
119
 
116
120
  /* Panel - sidebar content next to Rail */
@@ -122,46 +126,67 @@
122
126
  overflow: visible;
123
127
  position: relative;
124
128
  z-index: 1;
125
-
126
- /* Animation setup */
127
- transition: width var(--motion-duration-small) var(--motion-ease-standard);
128
129
  }
129
130
 
131
+ /*
132
+ * The pane takes its width in one step rather than animating it. `width` is a
133
+ * layout property, so animating it re-lays-out everything in `.rt-ShellContent`
134
+ * on every frame of a collapse: measured on this stylesheet, that is 11 layout
135
+ * passes per toggle and 5.3ms per frame with 100 rows of content beside it,
136
+ * 10.1ms with 300 and 17.2ms with 800. Stepping to the final width costs one
137
+ * layout pass, and the pane's contents slide on `transform`, which the
138
+ * compositor handles without laying anything out.
139
+ *
140
+ * Expanding applies the width immediately, so the contents have somewhere to
141
+ * slide into. Collapsing holds the width until the slide has finished — a `0s`
142
+ * transition with a delay — so the contents are never sliding across
143
+ * `.rt-ShellContent`, and the content area widens once, at the end.
144
+ */
130
145
  .rt-ShellPanel[data-visible] {
131
146
  width: var(--panel-size, 288px);
132
147
  }
133
148
 
134
- /* Collapsed panel: stay in flow during transition, then hide */
135
149
  .rt-ShellPanel:not([data-visible]) {
136
150
  width: 0px;
137
- /* Delay container collapse until content fade completes */
138
- transition-delay: var(--motion-duration-small);
151
+ transition: width 0s var(--motion-duration-small);
139
152
  }
140
153
 
141
154
  .rt-ShellPanelContent {
155
+ /*
156
+ * Taken out of flow so it can slide across the space the pane no longer
157
+ * occupies. `.rt-ShellBody` clips it at the edge of the shell.
158
+ */
159
+ position: absolute;
160
+ inset-block: 0;
161
+ inset-inline-start: 0;
162
+
142
163
  display: flex;
143
164
  flex-direction: column;
144
- width: var(--panel-size, 288px);
165
+ width: 100%;
145
166
  height: 100%;
146
167
  overflow: hidden;
147
168
 
148
169
  /* Content animation */
149
170
  opacity: 0;
150
171
  pointer-events: none;
151
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard) var(--motion-duration-small);
172
+ transform: translateX(-100%);
173
+ transition:
174
+ transform var(--motion-duration-small) var(--motion-ease-standard),
175
+ opacity var(--motion-duration-small) var(--motion-ease-standard);
176
+ }
177
+
178
+ :where([dir='rtl']) .rt-ShellPanelContent {
179
+ transform: translateX(100%);
152
180
  }
153
181
 
154
182
  .rt-ShellPanelContent[data-visible] {
155
183
  opacity: 1;
156
184
  pointer-events: auto;
185
+ transform: translateX(0);
157
186
  }
158
187
 
159
- .rt-ShellPanel:not([data-visible]) .rt-ShellPanelContent {
160
- /* Exit animation: fade out content first, then collapse */
161
- opacity: 0;
162
- width: 0;
163
- visibility: hidden;
164
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard);
188
+ :where([dir='rtl']) .rt-ShellPanelContent[data-visible] {
189
+ transform: translateX(0);
165
190
  }
166
191
 
167
192
  /* Sidebar - alternative to Rail+Panel */
@@ -174,10 +199,17 @@
174
199
  position: relative;
175
200
  z-index: 1;
176
201
 
177
- /* Animation setup */
178
- transition: width var(--motion-duration-small) var(--motion-ease-standard);
179
202
  }
180
203
 
204
+ /*
205
+ * Steps to its width in one layout pass — see .rt-ShellPanel for why.
206
+ *
207
+ * Sidebar has two open sizes, so expanded and thin both apply immediately and
208
+ * the switch between them is a step rather than a slide: there is no composited
209
+ * way to move a pane between two widths that both take space in the flow. The
210
+ * phase rules below already fade the contents out across that switch, so the
211
+ * step lands while they are not visible.
212
+ */
181
213
  .rt-ShellSidebar[data-mode='expanded'] {
182
214
  width: var(--sidebar-size, 288px);
183
215
  }
@@ -186,19 +218,16 @@
186
218
  width: var(--sidebar-thin-size, 64px);
187
219
  }
188
220
 
189
- /* Ensure content matches thin width in thin mode */
190
- .rt-ShellSidebar[data-mode='thin'] .rt-ShellSidebarContent {
191
- width: var(--sidebar-thin-size, 64px);
192
- }
193
-
194
- /* Collapsed sidebar: stay in flow during transition, then hide */
195
221
  .rt-ShellSidebar[data-mode='collapsed'] {
196
222
  width: 0px;
197
- /* Delay container collapse until content fade completes */
198
- transition-delay: var(--motion-duration-small);
223
+ transition: width 0s var(--motion-duration-small);
199
224
  }
200
225
 
201
226
  .rt-ShellSidebarContent {
227
+ position: absolute;
228
+ inset-block: 0;
229
+ inset-inline-start: 0;
230
+
202
231
  display: flex;
203
232
  flex-direction: column;
204
233
  width: 100%;
@@ -208,7 +237,14 @@
208
237
  /* Content animation */
209
238
  opacity: 0;
210
239
  pointer-events: none;
211
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard) var(--motion-duration-small);
240
+ transform: translateX(-100%);
241
+ transition:
242
+ transform var(--motion-duration-small) var(--motion-ease-standard),
243
+ opacity var(--motion-duration-small) var(--motion-ease-standard);
244
+ }
245
+
246
+ :where([dir='rtl']) .rt-ShellSidebarContent {
247
+ transform: translateX(100%);
212
248
  }
213
249
 
214
250
  /* Hide resizer in thin mode */
@@ -219,6 +255,7 @@
219
255
  .rt-ShellSidebarContent[data-visible] {
220
256
  opacity: 1;
221
257
  pointer-events: auto;
258
+ transform: translateX(0);
222
259
  }
223
260
 
224
261
  /* Sidebar presentation switch sequencing (thin ↔ expanded) */
@@ -237,13 +274,6 @@
237
274
  transition: opacity var(--motion-duration-small) var(--motion-ease-standard);
238
275
  }
239
276
 
240
- .rt-ShellSidebar[data-mode='collapsed'] .rt-ShellSidebarContent {
241
- /* Exit animation: fade out content first, then collapse */
242
- opacity: 0;
243
- width: 0;
244
- visibility: hidden;
245
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard);
246
- }
247
277
 
248
278
  /* Stacked Sidebar: left side, floating without reflow */
249
279
  .rt-ShellSidebar[data-presentation='stacked'] {
@@ -291,10 +321,9 @@
291
321
  position: relative;
292
322
  z-index: 1;
293
323
 
294
- /* Animation setup */
295
- transition: width var(--motion-duration-small) var(--motion-ease-standard);
296
324
  }
297
325
 
326
+ /* Steps to its width in one layout pass — see .rt-ShellPanel for why. */
298
327
  .rt-ShellInspector[data-mode='expanded'] {
299
328
  width: var(--inspector-size, 320px);
300
329
  }
@@ -302,34 +331,37 @@
302
331
  /* Collapsed inspector: stay in flow during transition, then hide */
303
332
  .rt-ShellInspector[data-mode='collapsed'] {
304
333
  width: 0px;
305
- /* Delay container collapse until content fade completes */
306
- transition-delay: var(--motion-duration-small);
334
+ transition: width 0s var(--motion-duration-small);
307
335
  }
308
336
 
309
337
  .rt-ShellInspectorContent {
338
+ position: absolute;
339
+ inset-block: 0;
340
+ inset-inline-end: 0;
341
+
310
342
  display: flex;
311
343
  flex-direction: column;
312
- width: var(--inspector-size, 320px);
344
+ width: 100%;
313
345
  height: 100%;
314
346
  overflow: hidden;
315
347
 
316
348
  /* Content animation */
317
349
  opacity: 0;
318
350
  pointer-events: none;
319
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard) var(--motion-duration-small);
351
+ transform: translateX(100%);
352
+ transition:
353
+ transform var(--motion-duration-small) var(--motion-ease-standard),
354
+ opacity var(--motion-duration-small) var(--motion-ease-standard);
355
+ }
356
+
357
+ :where([dir='rtl']) .rt-ShellInspectorContent {
358
+ transform: translateX(-100%);
320
359
  }
321
360
 
322
361
  .rt-ShellInspectorContent[data-visible] {
323
362
  opacity: 1;
324
363
  pointer-events: auto;
325
- }
326
-
327
- .rt-ShellInspector[data-mode='collapsed'] .rt-ShellInspectorContent {
328
- /* Exit animation: fade out content first, then collapse */
329
- opacity: 0;
330
- width: 0;
331
- visibility: hidden;
332
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard);
364
+ transform: translateX(0);
333
365
  }
334
366
 
335
367
  /* Bottom - bottom panel */
@@ -342,37 +374,42 @@
342
374
  flex-shrink: 0;
343
375
  position: relative;
344
376
 
345
- /* Animation setup */
346
- transition: height var(--motion-duration-small) var(--motion-ease-standard);
347
377
  }
348
378
 
379
+ /* Steps to its height in one layout pass — see .rt-ShellPanel for why. */
349
380
  .rt-ShellBottom[data-mode='expanded'] {
350
381
  height: var(--bottom-size, 200px);
351
382
  }
352
383
 
353
- /* Collapsed bottom: stay in flow during transition, then hide */
354
384
  .rt-ShellBottom[data-mode='collapsed'] {
355
385
  height: 0px;
356
- /* Delay container collapse until content fade completes */
357
- transition-delay: var(--motion-duration-small);
386
+ transition: height 0s var(--motion-duration-small);
358
387
  }
359
388
 
360
389
  .rt-ShellBottomContent {
390
+ position: absolute;
391
+ inset-inline: 0;
392
+ inset-block-end: 0;
393
+
361
394
  display: flex;
362
395
  flex-direction: column;
363
396
  width: 100%;
364
- height: var(--bottom-size, 200px);
397
+ height: 100%;
365
398
  overflow: hidden;
366
399
 
367
400
  /* Content animation */
368
401
  opacity: 0;
369
402
  pointer-events: none;
370
- transition: opacity var(--motion-duration-small) var(--motion-ease-standard) var(--motion-duration-small);
403
+ transform: translateY(100%);
404
+ transition:
405
+ transform var(--motion-duration-small) var(--motion-ease-standard),
406
+ opacity var(--motion-duration-small) var(--motion-ease-standard);
371
407
  }
372
408
 
373
409
  .rt-ShellBottomContent[data-visible] {
374
410
  opacity: 1;
375
411
  pointer-events: auto;
412
+ transform: translateY(0);
376
413
  }
377
414
 
378
415
  /* Disable transitions during active resize */