@womp/kookie-ui 0.3.22

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 (2388) hide show
  1. package/README.md +321 -0
  2. package/components.css +23090 -0
  3. package/dist/cjs/components/_internal/base-button.d.ts +51 -0
  4. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -0
  5. package/dist/cjs/components/_internal/base-button.js +2 -0
  6. package/dist/cjs/components/_internal/base-button.js.map +7 -0
  7. package/dist/cjs/components/_internal/base-button.props.d.ts +115 -0
  8. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -0
  9. package/dist/cjs/components/_internal/base-button.props.js +2 -0
  10. package/dist/cjs/components/_internal/base-button.props.js.map +7 -0
  11. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +32 -0
  12. package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -0
  13. package/dist/cjs/components/_internal/base-checkbox.props.js +2 -0
  14. package/dist/cjs/components/_internal/base-checkbox.props.js.map +7 -0
  15. package/dist/cjs/components/_internal/base-menu.props.d.ts +121 -0
  16. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -0
  17. package/dist/cjs/components/_internal/base-menu.props.js +2 -0
  18. package/dist/cjs/components/_internal/base-menu.props.js.map +7 -0
  19. package/dist/cjs/components/_internal/base-radio.props.d.ts +32 -0
  20. package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -0
  21. package/dist/cjs/components/_internal/base-radio.props.js +2 -0
  22. package/dist/cjs/components/_internal/base-radio.props.js.map +7 -0
  23. package/dist/cjs/components/_internal/base-tab-list.props.d.ts +38 -0
  24. package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -0
  25. package/dist/cjs/components/_internal/base-tab-list.props.js +2 -0
  26. package/dist/cjs/components/_internal/base-tab-list.props.js.map +7 -0
  27. package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts +81 -0
  28. package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -0
  29. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js +2 -0
  30. package/dist/cjs/components/_internal/dropdown-menu-drill-down.js.map +7 -0
  31. package/dist/cjs/components/_internal/menu-context.d.ts +27 -0
  32. package/dist/cjs/components/_internal/menu-context.d.ts.map +1 -0
  33. package/dist/cjs/components/_internal/menu-context.js +2 -0
  34. package/dist/cjs/components/_internal/menu-context.js.map +7 -0
  35. package/dist/cjs/components/_internal/shell-bottom.d.ts +40 -0
  36. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -0
  37. package/dist/cjs/components/_internal/shell-bottom.js +2 -0
  38. package/dist/cjs/components/_internal/shell-bottom.js.map +7 -0
  39. package/dist/cjs/components/_internal/shell-handles.d.ts +7 -0
  40. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -0
  41. package/dist/cjs/components/_internal/shell-handles.js +2 -0
  42. package/dist/cjs/components/_internal/shell-handles.js.map +7 -0
  43. package/dist/cjs/components/_internal/shell-inspector.d.ts +40 -0
  44. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -0
  45. package/dist/cjs/components/_internal/shell-inspector.js +2 -0
  46. package/dist/cjs/components/_internal/shell-inspector.js.map +7 -0
  47. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +7 -0
  48. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +1 -0
  49. package/dist/cjs/components/_internal/shell-prop-helpers.js +2 -0
  50. package/dist/cjs/components/_internal/shell-prop-helpers.js.map +7 -0
  51. package/dist/cjs/components/_internal/shell-resize.d.ts +24 -0
  52. package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -0
  53. package/dist/cjs/components/_internal/shell-resize.js +2 -0
  54. package/dist/cjs/components/_internal/shell-resize.js.map +7 -0
  55. package/dist/cjs/components/_internal/shell-sidebar.d.ts +40 -0
  56. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -0
  57. package/dist/cjs/components/_internal/shell-sidebar.js +2 -0
  58. package/dist/cjs/components/_internal/shell-sidebar.js.map +7 -0
  59. package/dist/cjs/components/accessible-icon.d.ts +4 -0
  60. package/dist/cjs/components/accessible-icon.d.ts.map +1 -0
  61. package/dist/cjs/components/accessible-icon.js +2 -0
  62. package/dist/cjs/components/accessible-icon.js.map +7 -0
  63. package/dist/cjs/components/accordion.d.ts +22 -0
  64. package/dist/cjs/components/accordion.d.ts.map +1 -0
  65. package/dist/cjs/components/accordion.js +2 -0
  66. package/dist/cjs/components/accordion.js.map +7 -0
  67. package/dist/cjs/components/accordion.props.d.ts +97 -0
  68. package/dist/cjs/components/accordion.props.d.ts.map +1 -0
  69. package/dist/cjs/components/accordion.props.js +2 -0
  70. package/dist/cjs/components/accordion.props.js.map +7 -0
  71. package/dist/cjs/components/alert-dialog.d.ts +29 -0
  72. package/dist/cjs/components/alert-dialog.d.ts.map +1 -0
  73. package/dist/cjs/components/alert-dialog.js +2 -0
  74. package/dist/cjs/components/alert-dialog.js.map +7 -0
  75. package/dist/cjs/components/alert-dialog.props.d.ts +70 -0
  76. package/dist/cjs/components/alert-dialog.props.d.ts.map +1 -0
  77. package/dist/cjs/components/alert-dialog.props.js +2 -0
  78. package/dist/cjs/components/alert-dialog.props.js.map +7 -0
  79. package/dist/cjs/components/aspect-ratio.d.ts +4 -0
  80. package/dist/cjs/components/aspect-ratio.d.ts.map +1 -0
  81. package/dist/cjs/components/aspect-ratio.js +2 -0
  82. package/dist/cjs/components/aspect-ratio.js.map +7 -0
  83. package/dist/cjs/components/avatar.d.ts +16 -0
  84. package/dist/cjs/components/avatar.d.ts.map +1 -0
  85. package/dist/cjs/components/avatar.js +2 -0
  86. package/dist/cjs/components/avatar.js.map +7 -0
  87. package/dist/cjs/components/avatar.props.d.ts +82 -0
  88. package/dist/cjs/components/avatar.props.d.ts.map +1 -0
  89. package/dist/cjs/components/avatar.props.js +2 -0
  90. package/dist/cjs/components/avatar.props.js.map +7 -0
  91. package/dist/cjs/components/badge.d.ts +19 -0
  92. package/dist/cjs/components/badge.d.ts.map +1 -0
  93. package/dist/cjs/components/badge.js +2 -0
  94. package/dist/cjs/components/badge.js.map +7 -0
  95. package/dist/cjs/components/badge.props.d.ts +48 -0
  96. package/dist/cjs/components/badge.props.d.ts.map +1 -0
  97. package/dist/cjs/components/badge.props.js +2 -0
  98. package/dist/cjs/components/badge.props.js.map +7 -0
  99. package/dist/cjs/components/blockquote.d.ts +12 -0
  100. package/dist/cjs/components/blockquote.d.ts.map +1 -0
  101. package/dist/cjs/components/blockquote.js +2 -0
  102. package/dist/cjs/components/blockquote.js.map +7 -0
  103. package/dist/cjs/components/blockquote.props.d.ts +39 -0
  104. package/dist/cjs/components/blockquote.props.d.ts.map +1 -0
  105. package/dist/cjs/components/blockquote.props.js +2 -0
  106. package/dist/cjs/components/blockquote.props.js.map +7 -0
  107. package/dist/cjs/components/box.d.ts +18 -0
  108. package/dist/cjs/components/box.d.ts.map +1 -0
  109. package/dist/cjs/components/box.js +2 -0
  110. package/dist/cjs/components/box.js.map +7 -0
  111. package/dist/cjs/components/box.props.d.ts +40 -0
  112. package/dist/cjs/components/box.props.d.ts.map +1 -0
  113. package/dist/cjs/components/box.props.js +2 -0
  114. package/dist/cjs/components/box.props.js.map +7 -0
  115. package/dist/cjs/components/button.d.ts +107 -0
  116. package/dist/cjs/components/button.d.ts.map +1 -0
  117. package/dist/cjs/components/button.js +2 -0
  118. package/dist/cjs/components/button.js.map +7 -0
  119. package/dist/cjs/components/button.props.d.ts +19 -0
  120. package/dist/cjs/components/button.props.d.ts.map +1 -0
  121. package/dist/cjs/components/button.props.js +2 -0
  122. package/dist/cjs/components/button.props.js.map +7 -0
  123. package/dist/cjs/components/callout.d.ts +22 -0
  124. package/dist/cjs/components/callout.d.ts.map +1 -0
  125. package/dist/cjs/components/callout.js +2 -0
  126. package/dist/cjs/components/callout.js.map +7 -0
  127. package/dist/cjs/components/callout.props.d.ts +43 -0
  128. package/dist/cjs/components/callout.props.d.ts.map +1 -0
  129. package/dist/cjs/components/callout.props.js +2 -0
  130. package/dist/cjs/components/callout.props.js.map +7 -0
  131. package/dist/cjs/components/card.d.ts +12 -0
  132. package/dist/cjs/components/card.d.ts.map +1 -0
  133. package/dist/cjs/components/card.js +2 -0
  134. package/dist/cjs/components/card.js.map +7 -0
  135. package/dist/cjs/components/card.props.d.ts +38 -0
  136. package/dist/cjs/components/card.props.d.ts.map +1 -0
  137. package/dist/cjs/components/card.props.js +2 -0
  138. package/dist/cjs/components/card.props.js.map +7 -0
  139. package/dist/cjs/components/chatbar.d.ts +233 -0
  140. package/dist/cjs/components/chatbar.d.ts.map +1 -0
  141. package/dist/cjs/components/chatbar.js +5 -0
  142. package/dist/cjs/components/chatbar.js.map +7 -0
  143. package/dist/cjs/components/checkbox-cards.d.ts +19 -0
  144. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -0
  145. package/dist/cjs/components/checkbox-cards.js +2 -0
  146. package/dist/cjs/components/checkbox-cards.js.map +7 -0
  147. package/dist/cjs/components/checkbox-cards.props.d.ts +52 -0
  148. package/dist/cjs/components/checkbox-cards.props.d.ts.map +1 -0
  149. package/dist/cjs/components/checkbox-cards.props.js +2 -0
  150. package/dist/cjs/components/checkbox-cards.props.js.map +7 -0
  151. package/dist/cjs/components/checkbox-group.d.ts +16 -0
  152. package/dist/cjs/components/checkbox-group.d.ts.map +1 -0
  153. package/dist/cjs/components/checkbox-group.js +2 -0
  154. package/dist/cjs/components/checkbox-group.js.map +7 -0
  155. package/dist/cjs/components/checkbox-group.primitive.d.ts +41 -0
  156. package/dist/cjs/components/checkbox-group.primitive.d.ts.map +1 -0
  157. package/dist/cjs/components/checkbox-group.primitive.js +2 -0
  158. package/dist/cjs/components/checkbox-group.primitive.js.map +7 -0
  159. package/dist/cjs/components/checkbox-group.props.d.ts +35 -0
  160. package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -0
  161. package/dist/cjs/components/checkbox-group.props.js +2 -0
  162. package/dist/cjs/components/checkbox-group.props.js.map +7 -0
  163. package/dist/cjs/components/checkbox.d.ts +13 -0
  164. package/dist/cjs/components/checkbox.d.ts.map +1 -0
  165. package/dist/cjs/components/checkbox.js +2 -0
  166. package/dist/cjs/components/checkbox.js.map +7 -0
  167. package/dist/cjs/components/checkbox.props.d.ts +2 -0
  168. package/dist/cjs/components/checkbox.props.d.ts.map +1 -0
  169. package/dist/cjs/components/checkbox.props.js +2 -0
  170. package/dist/cjs/components/checkbox.props.js.map +7 -0
  171. package/dist/cjs/components/code.d.ts +12 -0
  172. package/dist/cjs/components/code.d.ts.map +1 -0
  173. package/dist/cjs/components/code.js +2 -0
  174. package/dist/cjs/components/code.js.map +7 -0
  175. package/dist/cjs/components/code.props.d.ts +45 -0
  176. package/dist/cjs/components/code.props.d.ts.map +1 -0
  177. package/dist/cjs/components/code.props.js +2 -0
  178. package/dist/cjs/components/code.props.js.map +7 -0
  179. package/dist/cjs/components/combobox.d.ts +101 -0
  180. package/dist/cjs/components/combobox.d.ts.map +1 -0
  181. package/dist/cjs/components/combobox.js +2 -0
  182. package/dist/cjs/components/combobox.js.map +7 -0
  183. package/dist/cjs/components/combobox.props.d.ts +98 -0
  184. package/dist/cjs/components/combobox.props.d.ts.map +1 -0
  185. package/dist/cjs/components/combobox.props.js +2 -0
  186. package/dist/cjs/components/combobox.props.js.map +7 -0
  187. package/dist/cjs/components/container.d.ts +11 -0
  188. package/dist/cjs/components/container.d.ts.map +1 -0
  189. package/dist/cjs/components/container.js +2 -0
  190. package/dist/cjs/components/container.js.map +7 -0
  191. package/dist/cjs/components/container.props.d.ts +68 -0
  192. package/dist/cjs/components/container.props.d.ts.map +1 -0
  193. package/dist/cjs/components/container.props.js +2 -0
  194. package/dist/cjs/components/container.props.js.map +7 -0
  195. package/dist/cjs/components/context-menu.d.ts +54 -0
  196. package/dist/cjs/components/context-menu.d.ts.map +1 -0
  197. package/dist/cjs/components/context-menu.js +2 -0
  198. package/dist/cjs/components/context-menu.js.map +7 -0
  199. package/dist/cjs/components/context-menu.props.d.ts +2 -0
  200. package/dist/cjs/components/context-menu.props.d.ts.map +1 -0
  201. package/dist/cjs/components/context-menu.props.js +2 -0
  202. package/dist/cjs/components/context-menu.props.js.map +7 -0
  203. package/dist/cjs/components/data-list.d.ts +23 -0
  204. package/dist/cjs/components/data-list.d.ts.map +1 -0
  205. package/dist/cjs/components/data-list.js +2 -0
  206. package/dist/cjs/components/data-list.js.map +7 -0
  207. package/dist/cjs/components/data-list.props.d.ts +62 -0
  208. package/dist/cjs/components/data-list.props.d.ts.map +1 -0
  209. package/dist/cjs/components/data-list.props.js +2 -0
  210. package/dist/cjs/components/data-list.props.js.map +7 -0
  211. package/dist/cjs/components/dialog.d.ts +26 -0
  212. package/dist/cjs/components/dialog.d.ts.map +1 -0
  213. package/dist/cjs/components/dialog.js +2 -0
  214. package/dist/cjs/components/dialog.js.map +7 -0
  215. package/dist/cjs/components/dialog.props.d.ts +72 -0
  216. package/dist/cjs/components/dialog.props.d.ts.map +1 -0
  217. package/dist/cjs/components/dialog.props.js +2 -0
  218. package/dist/cjs/components/dialog.props.js.map +7 -0
  219. package/dist/cjs/components/dropdown-menu.d.ts +89 -0
  220. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -0
  221. package/dist/cjs/components/dropdown-menu.js +2 -0
  222. package/dist/cjs/components/dropdown-menu.js.map +7 -0
  223. package/dist/cjs/components/dropdown-menu.props.d.ts +2 -0
  224. package/dist/cjs/components/dropdown-menu.props.d.ts.map +1 -0
  225. package/dist/cjs/components/dropdown-menu.props.js +2 -0
  226. package/dist/cjs/components/dropdown-menu.props.js.map +7 -0
  227. package/dist/cjs/components/em.d.ts +11 -0
  228. package/dist/cjs/components/em.d.ts.map +1 -0
  229. package/dist/cjs/components/em.js +2 -0
  230. package/dist/cjs/components/em.js.map +7 -0
  231. package/dist/cjs/components/em.props.d.ts +17 -0
  232. package/dist/cjs/components/em.props.d.ts.map +1 -0
  233. package/dist/cjs/components/em.props.js +2 -0
  234. package/dist/cjs/components/em.props.js.map +7 -0
  235. package/dist/cjs/components/flex.d.ts +18 -0
  236. package/dist/cjs/components/flex.d.ts.map +1 -0
  237. package/dist/cjs/components/flex.js +2 -0
  238. package/dist/cjs/components/flex.js.map +7 -0
  239. package/dist/cjs/components/flex.props.d.ts +132 -0
  240. package/dist/cjs/components/flex.props.d.ts.map +1 -0
  241. package/dist/cjs/components/flex.props.js +2 -0
  242. package/dist/cjs/components/flex.props.js.map +7 -0
  243. package/dist/cjs/components/grid.d.ts +18 -0
  244. package/dist/cjs/components/grid.d.ts.map +1 -0
  245. package/dist/cjs/components/grid.js +2 -0
  246. package/dist/cjs/components/grid.js.map +7 -0
  247. package/dist/cjs/components/grid.props.d.ts +211 -0
  248. package/dist/cjs/components/grid.props.d.ts.map +1 -0
  249. package/dist/cjs/components/grid.props.js +2 -0
  250. package/dist/cjs/components/grid.props.js.map +7 -0
  251. package/dist/cjs/components/heading.d.ts +31 -0
  252. package/dist/cjs/components/heading.d.ts.map +1 -0
  253. package/dist/cjs/components/heading.js +2 -0
  254. package/dist/cjs/components/heading.js.map +7 -0
  255. package/dist/cjs/components/heading.props.d.ts +62 -0
  256. package/dist/cjs/components/heading.props.d.ts.map +1 -0
  257. package/dist/cjs/components/heading.props.js +2 -0
  258. package/dist/cjs/components/heading.props.js.map +7 -0
  259. package/dist/cjs/components/hover-card.d.ts +17 -0
  260. package/dist/cjs/components/hover-card.d.ts.map +1 -0
  261. package/dist/cjs/components/hover-card.js +2 -0
  262. package/dist/cjs/components/hover-card.js.map +7 -0
  263. package/dist/cjs/components/hover-card.props.d.ts +57 -0
  264. package/dist/cjs/components/hover-card.props.d.ts.map +1 -0
  265. package/dist/cjs/components/hover-card.props.js +2 -0
  266. package/dist/cjs/components/hover-card.props.js.map +7 -0
  267. package/dist/cjs/components/icon-button.d.ts +106 -0
  268. package/dist/cjs/components/icon-button.d.ts.map +1 -0
  269. package/dist/cjs/components/icon-button.js +5 -0
  270. package/dist/cjs/components/icon-button.js.map +7 -0
  271. package/dist/cjs/components/icon-button.props.d.ts +2 -0
  272. package/dist/cjs/components/icon-button.props.d.ts.map +1 -0
  273. package/dist/cjs/components/icon-button.props.js +2 -0
  274. package/dist/cjs/components/icon-button.props.js.map +7 -0
  275. package/dist/cjs/components/icons.d.ts +18 -0
  276. package/dist/cjs/components/icons.d.ts.map +1 -0
  277. package/dist/cjs/components/icons.js +2 -0
  278. package/dist/cjs/components/icons.js.map +7 -0
  279. package/dist/cjs/components/image.d.ts +101 -0
  280. package/dist/cjs/components/image.d.ts.map +1 -0
  281. package/dist/cjs/components/image.js +2 -0
  282. package/dist/cjs/components/image.js.map +7 -0
  283. package/dist/cjs/components/image.props.d.ts +147 -0
  284. package/dist/cjs/components/image.props.d.ts.map +1 -0
  285. package/dist/cjs/components/image.props.js +2 -0
  286. package/dist/cjs/components/image.props.js.map +7 -0
  287. package/dist/cjs/components/index.d.ts +72 -0
  288. package/dist/cjs/components/index.d.ts.map +1 -0
  289. package/dist/cjs/components/index.js +24 -0
  290. package/dist/cjs/components/index.js.map +7 -0
  291. package/dist/cjs/components/inset.d.ts +12 -0
  292. package/dist/cjs/components/inset.d.ts.map +1 -0
  293. package/dist/cjs/components/inset.js +2 -0
  294. package/dist/cjs/components/inset.js.map +7 -0
  295. package/dist/cjs/components/inset.props.d.ts +71 -0
  296. package/dist/cjs/components/inset.props.d.ts.map +1 -0
  297. package/dist/cjs/components/inset.props.js +2 -0
  298. package/dist/cjs/components/inset.props.js.map +7 -0
  299. package/dist/cjs/components/kbd.d.ts +12 -0
  300. package/dist/cjs/components/kbd.d.ts.map +1 -0
  301. package/dist/cjs/components/kbd.js +2 -0
  302. package/dist/cjs/components/kbd.js.map +7 -0
  303. package/dist/cjs/components/kbd.props.d.ts +19 -0
  304. package/dist/cjs/components/kbd.props.d.ts.map +1 -0
  305. package/dist/cjs/components/kbd.props.js +2 -0
  306. package/dist/cjs/components/kbd.props.js.map +7 -0
  307. package/dist/cjs/components/link.d.ts +12 -0
  308. package/dist/cjs/components/link.d.ts.map +1 -0
  309. package/dist/cjs/components/link.js +2 -0
  310. package/dist/cjs/components/link.js.map +7 -0
  311. package/dist/cjs/components/link.props.d.ts +51 -0
  312. package/dist/cjs/components/link.props.d.ts.map +1 -0
  313. package/dist/cjs/components/link.props.js +2 -0
  314. package/dist/cjs/components/link.props.js.map +7 -0
  315. package/dist/cjs/components/navbar.d.ts +24 -0
  316. package/dist/cjs/components/navbar.d.ts.map +1 -0
  317. package/dist/cjs/components/navbar.js +2 -0
  318. package/dist/cjs/components/navbar.js.map +7 -0
  319. package/dist/cjs/components/navbar.props.d.ts +14 -0
  320. package/dist/cjs/components/navbar.props.d.ts.map +1 -0
  321. package/dist/cjs/components/navbar.props.js +2 -0
  322. package/dist/cjs/components/navbar.props.js.map +7 -0
  323. package/dist/cjs/components/popover.d.ts +35 -0
  324. package/dist/cjs/components/popover.d.ts.map +1 -0
  325. package/dist/cjs/components/popover.js +2 -0
  326. package/dist/cjs/components/popover.js.map +7 -0
  327. package/dist/cjs/components/popover.props.d.ts +62 -0
  328. package/dist/cjs/components/popover.props.d.ts.map +1 -0
  329. package/dist/cjs/components/popover.props.js +2 -0
  330. package/dist/cjs/components/popover.props.js.map +7 -0
  331. package/dist/cjs/components/portal.d.ts +5 -0
  332. package/dist/cjs/components/portal.d.ts.map +1 -0
  333. package/dist/cjs/components/portal.js +2 -0
  334. package/dist/cjs/components/portal.js.map +7 -0
  335. package/dist/cjs/components/progress.d.ts +14 -0
  336. package/dist/cjs/components/progress.d.ts.map +1 -0
  337. package/dist/cjs/components/progress.js +2 -0
  338. package/dist/cjs/components/progress.js.map +7 -0
  339. package/dist/cjs/components/progress.props.d.ts +35 -0
  340. package/dist/cjs/components/progress.props.d.ts.map +1 -0
  341. package/dist/cjs/components/progress.props.js +2 -0
  342. package/dist/cjs/components/progress.props.js.map +7 -0
  343. package/dist/cjs/components/quote.d.ts +11 -0
  344. package/dist/cjs/components/quote.d.ts.map +1 -0
  345. package/dist/cjs/components/quote.js +2 -0
  346. package/dist/cjs/components/quote.js.map +7 -0
  347. package/dist/cjs/components/quote.props.d.ts +17 -0
  348. package/dist/cjs/components/quote.props.d.ts.map +1 -0
  349. package/dist/cjs/components/quote.props.js +2 -0
  350. package/dist/cjs/components/quote.props.js.map +7 -0
  351. package/dist/cjs/components/radio-cards.d.ts +16 -0
  352. package/dist/cjs/components/radio-cards.d.ts.map +1 -0
  353. package/dist/cjs/components/radio-cards.js +2 -0
  354. package/dist/cjs/components/radio-cards.js.map +7 -0
  355. package/dist/cjs/components/radio-cards.props.d.ts +52 -0
  356. package/dist/cjs/components/radio-cards.props.d.ts.map +1 -0
  357. package/dist/cjs/components/radio-cards.props.js +2 -0
  358. package/dist/cjs/components/radio-cards.props.js.map +7 -0
  359. package/dist/cjs/components/radio-group.d.ts +22 -0
  360. package/dist/cjs/components/radio-group.d.ts.map +1 -0
  361. package/dist/cjs/components/radio-group.js +2 -0
  362. package/dist/cjs/components/radio-group.js.map +7 -0
  363. package/dist/cjs/components/radio-group.props.d.ts +30 -0
  364. package/dist/cjs/components/radio-group.props.d.ts.map +1 -0
  365. package/dist/cjs/components/radio-group.props.js +2 -0
  366. package/dist/cjs/components/radio-group.props.js.map +7 -0
  367. package/dist/cjs/components/radio.d.ts +17 -0
  368. package/dist/cjs/components/radio.d.ts.map +1 -0
  369. package/dist/cjs/components/radio.js +2 -0
  370. package/dist/cjs/components/radio.js.map +7 -0
  371. package/dist/cjs/components/radio.props.d.ts +2 -0
  372. package/dist/cjs/components/radio.props.d.ts.map +1 -0
  373. package/dist/cjs/components/radio.props.js +2 -0
  374. package/dist/cjs/components/radio.props.js.map +7 -0
  375. package/dist/cjs/components/reset.d.ts +9 -0
  376. package/dist/cjs/components/reset.d.ts.map +1 -0
  377. package/dist/cjs/components/reset.js +2 -0
  378. package/dist/cjs/components/reset.js.map +7 -0
  379. package/dist/cjs/components/schemas/base-button.schema.d.ts +319 -0
  380. package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -0
  381. package/dist/cjs/components/schemas/base-button.schema.js +2 -0
  382. package/dist/cjs/components/schemas/base-button.schema.js.map +7 -0
  383. package/dist/cjs/components/schemas/button.schema.d.ts +686 -0
  384. package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -0
  385. package/dist/cjs/components/schemas/button.schema.js +2 -0
  386. package/dist/cjs/components/schemas/button.schema.js.map +7 -0
  387. package/dist/cjs/components/schemas/icon-button.schema.d.ts +329 -0
  388. package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +1 -0
  389. package/dist/cjs/components/schemas/icon-button.schema.js +2 -0
  390. package/dist/cjs/components/schemas/icon-button.schema.js.map +7 -0
  391. package/dist/cjs/components/schemas/index.d.ts +54 -0
  392. package/dist/cjs/components/schemas/index.d.ts.map +1 -0
  393. package/dist/cjs/components/schemas/index.js +2 -0
  394. package/dist/cjs/components/schemas/index.js.map +7 -0
  395. package/dist/cjs/components/schemas/shell.schema.d.ts +1025 -0
  396. package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -0
  397. package/dist/cjs/components/schemas/shell.schema.js +2 -0
  398. package/dist/cjs/components/schemas/shell.schema.js.map +7 -0
  399. package/dist/cjs/components/schemas/toggle-button.schema.d.ts +1172 -0
  400. package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +1 -0
  401. package/dist/cjs/components/schemas/toggle-button.schema.js +2 -0
  402. package/dist/cjs/components/schemas/toggle-button.schema.js.map +7 -0
  403. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +563 -0
  404. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
  405. package/dist/cjs/components/schemas/toggle-icon-button.schema.js +2 -0
  406. package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +7 -0
  407. package/dist/cjs/components/scroll-area.d.ts +13 -0
  408. package/dist/cjs/components/scroll-area.d.ts.map +1 -0
  409. package/dist/cjs/components/scroll-area.js +2 -0
  410. package/dist/cjs/components/scroll-area.js.map +7 -0
  411. package/dist/cjs/components/scroll-area.props.d.ts +24 -0
  412. package/dist/cjs/components/scroll-area.props.d.ts.map +1 -0
  413. package/dist/cjs/components/scroll-area.props.js +2 -0
  414. package/dist/cjs/components/scroll-area.props.js.map +7 -0
  415. package/dist/cjs/components/section.d.ts +11 -0
  416. package/dist/cjs/components/section.d.ts.map +1 -0
  417. package/dist/cjs/components/section.js +2 -0
  418. package/dist/cjs/components/section.js.map +7 -0
  419. package/dist/cjs/components/section.props.d.ts +52 -0
  420. package/dist/cjs/components/section.props.d.ts.map +1 -0
  421. package/dist/cjs/components/section.props.js +2 -0
  422. package/dist/cjs/components/section.props.js.map +7 -0
  423. package/dist/cjs/components/segmented-control.d.ts +24 -0
  424. package/dist/cjs/components/segmented-control.d.ts.map +1 -0
  425. package/dist/cjs/components/segmented-control.js +2 -0
  426. package/dist/cjs/components/segmented-control.js.map +7 -0
  427. package/dist/cjs/components/segmented-control.props.d.ts +39 -0
  428. package/dist/cjs/components/segmented-control.props.d.ts.map +1 -0
  429. package/dist/cjs/components/segmented-control.props.js +2 -0
  430. package/dist/cjs/components/segmented-control.props.js.map +7 -0
  431. package/dist/cjs/components/select.d.ts +35 -0
  432. package/dist/cjs/components/select.d.ts.map +1 -0
  433. package/dist/cjs/components/select.js +2 -0
  434. package/dist/cjs/components/select.js.map +7 -0
  435. package/dist/cjs/components/select.props.d.ts +67 -0
  436. package/dist/cjs/components/select.props.d.ts.map +1 -0
  437. package/dist/cjs/components/select.props.js +2 -0
  438. package/dist/cjs/components/select.props.js.map +7 -0
  439. package/dist/cjs/components/separator.d.ts +12 -0
  440. package/dist/cjs/components/separator.d.ts.map +1 -0
  441. package/dist/cjs/components/separator.js +2 -0
  442. package/dist/cjs/components/separator.js.map +7 -0
  443. package/dist/cjs/components/separator.props.d.ts +32 -0
  444. package/dist/cjs/components/separator.props.d.ts.map +1 -0
  445. package/dist/cjs/components/separator.props.js +2 -0
  446. package/dist/cjs/components/separator.props.js.map +7 -0
  447. package/dist/cjs/components/sheet.d.ts +82 -0
  448. package/dist/cjs/components/sheet.d.ts.map +1 -0
  449. package/dist/cjs/components/sheet.js +2 -0
  450. package/dist/cjs/components/sheet.js.map +7 -0
  451. package/dist/cjs/components/shell.context.d.ts +143 -0
  452. package/dist/cjs/components/shell.context.d.ts.map +1 -0
  453. package/dist/cjs/components/shell.context.js +2 -0
  454. package/dist/cjs/components/shell.context.js.map +7 -0
  455. package/dist/cjs/components/shell.d.ts +107 -0
  456. package/dist/cjs/components/shell.d.ts.map +1 -0
  457. package/dist/cjs/components/shell.hooks.d.ts +26 -0
  458. package/dist/cjs/components/shell.hooks.d.ts.map +1 -0
  459. package/dist/cjs/components/shell.hooks.js +2 -0
  460. package/dist/cjs/components/shell.hooks.js.map +7 -0
  461. package/dist/cjs/components/shell.js +2 -0
  462. package/dist/cjs/components/shell.js.map +7 -0
  463. package/dist/cjs/components/shell.types.d.ts +53 -0
  464. package/dist/cjs/components/shell.types.d.ts.map +1 -0
  465. package/dist/cjs/components/shell.types.js +2 -0
  466. package/dist/cjs/components/shell.types.js.map +7 -0
  467. package/dist/cjs/components/sidebar.d.ts +146 -0
  468. package/dist/cjs/components/sidebar.d.ts.map +1 -0
  469. package/dist/cjs/components/sidebar.js +2 -0
  470. package/dist/cjs/components/sidebar.js.map +7 -0
  471. package/dist/cjs/components/sidebar.props.d.ts +66 -0
  472. package/dist/cjs/components/sidebar.props.d.ts.map +1 -0
  473. package/dist/cjs/components/sidebar.props.js +2 -0
  474. package/dist/cjs/components/sidebar.props.js.map +7 -0
  475. package/dist/cjs/components/skeleton.d.ts +12 -0
  476. package/dist/cjs/components/skeleton.d.ts.map +1 -0
  477. package/dist/cjs/components/skeleton.js +2 -0
  478. package/dist/cjs/components/skeleton.js.map +7 -0
  479. package/dist/cjs/components/skeleton.props.d.ts +44 -0
  480. package/dist/cjs/components/skeleton.props.d.ts.map +1 -0
  481. package/dist/cjs/components/skeleton.props.js +2 -0
  482. package/dist/cjs/components/skeleton.props.js.map +7 -0
  483. package/dist/cjs/components/slider.d.ts +18 -0
  484. package/dist/cjs/components/slider.d.ts.map +1 -0
  485. package/dist/cjs/components/slider.js +2 -0
  486. package/dist/cjs/components/slider.js.map +7 -0
  487. package/dist/cjs/components/slider.props.d.ts +40 -0
  488. package/dist/cjs/components/slider.props.d.ts.map +1 -0
  489. package/dist/cjs/components/slider.props.js +2 -0
  490. package/dist/cjs/components/slider.props.js.map +7 -0
  491. package/dist/cjs/components/slot.d.ts +5 -0
  492. package/dist/cjs/components/slot.d.ts.map +1 -0
  493. package/dist/cjs/components/slot.js +2 -0
  494. package/dist/cjs/components/slot.js.map +7 -0
  495. package/dist/cjs/components/spinner.d.ts +12 -0
  496. package/dist/cjs/components/spinner.d.ts.map +1 -0
  497. package/dist/cjs/components/spinner.js +2 -0
  498. package/dist/cjs/components/spinner.js.map +7 -0
  499. package/dist/cjs/components/spinner.props.d.ts +15 -0
  500. package/dist/cjs/components/spinner.props.d.ts.map +1 -0
  501. package/dist/cjs/components/spinner.props.js +2 -0
  502. package/dist/cjs/components/spinner.props.js.map +7 -0
  503. package/dist/cjs/components/strong.d.ts +11 -0
  504. package/dist/cjs/components/strong.d.ts.map +1 -0
  505. package/dist/cjs/components/strong.js +2 -0
  506. package/dist/cjs/components/strong.js.map +7 -0
  507. package/dist/cjs/components/strong.props.d.ts +17 -0
  508. package/dist/cjs/components/strong.props.d.ts.map +1 -0
  509. package/dist/cjs/components/strong.props.js +2 -0
  510. package/dist/cjs/components/strong.props.js.map +7 -0
  511. package/dist/cjs/components/switch.d.ts +13 -0
  512. package/dist/cjs/components/switch.d.ts.map +1 -0
  513. package/dist/cjs/components/switch.js +2 -0
  514. package/dist/cjs/components/switch.js.map +7 -0
  515. package/dist/cjs/components/switch.props.d.ts +45 -0
  516. package/dist/cjs/components/switch.props.d.ts.map +1 -0
  517. package/dist/cjs/components/switch.props.js +2 -0
  518. package/dist/cjs/components/switch.props.js.map +7 -0
  519. package/dist/cjs/components/tab-nav.d.ts +19 -0
  520. package/dist/cjs/components/tab-nav.d.ts.map +1 -0
  521. package/dist/cjs/components/tab-nav.js +2 -0
  522. package/dist/cjs/components/tab-nav.js.map +7 -0
  523. package/dist/cjs/components/tab-nav.props.d.ts +12 -0
  524. package/dist/cjs/components/tab-nav.props.d.ts.map +1 -0
  525. package/dist/cjs/components/tab-nav.props.js +2 -0
  526. package/dist/cjs/components/tab-nav.props.js.map +7 -0
  527. package/dist/cjs/components/table.d.ts +32 -0
  528. package/dist/cjs/components/table.d.ts.map +1 -0
  529. package/dist/cjs/components/table.js +2 -0
  530. package/dist/cjs/components/table.js.map +7 -0
  531. package/dist/cjs/components/table.props.d.ts +110 -0
  532. package/dist/cjs/components/table.props.d.ts.map +1 -0
  533. package/dist/cjs/components/table.props.js +2 -0
  534. package/dist/cjs/components/table.props.js.map +7 -0
  535. package/dist/cjs/components/tabs.d.ts +25 -0
  536. package/dist/cjs/components/tabs.d.ts.map +1 -0
  537. package/dist/cjs/components/tabs.js +2 -0
  538. package/dist/cjs/components/tabs.js.map +7 -0
  539. package/dist/cjs/components/tabs.props.d.ts +13 -0
  540. package/dist/cjs/components/tabs.props.d.ts.map +1 -0
  541. package/dist/cjs/components/tabs.props.js +2 -0
  542. package/dist/cjs/components/tabs.props.js.map +7 -0
  543. package/dist/cjs/components/text-area.d.ts +15 -0
  544. package/dist/cjs/components/text-area.d.ts.map +1 -0
  545. package/dist/cjs/components/text-area.js +2 -0
  546. package/dist/cjs/components/text-area.js.map +7 -0
  547. package/dist/cjs/components/text-area.props.d.ts +67 -0
  548. package/dist/cjs/components/text-area.props.d.ts.map +1 -0
  549. package/dist/cjs/components/text-area.props.js +2 -0
  550. package/dist/cjs/components/text-area.props.js.map +7 -0
  551. package/dist/cjs/components/text-field.d.ts +22 -0
  552. package/dist/cjs/components/text-field.d.ts.map +1 -0
  553. package/dist/cjs/components/text-field.js +5 -0
  554. package/dist/cjs/components/text-field.js.map +7 -0
  555. package/dist/cjs/components/text-field.props.d.ts +126 -0
  556. package/dist/cjs/components/text-field.props.d.ts.map +1 -0
  557. package/dist/cjs/components/text-field.props.js +2 -0
  558. package/dist/cjs/components/text-field.props.js.map +7 -0
  559. package/dist/cjs/components/text.d.ts +25 -0
  560. package/dist/cjs/components/text.d.ts.map +1 -0
  561. package/dist/cjs/components/text.js +2 -0
  562. package/dist/cjs/components/text.js.map +7 -0
  563. package/dist/cjs/components/text.props.d.ts +61 -0
  564. package/dist/cjs/components/text.props.d.ts.map +1 -0
  565. package/dist/cjs/components/text.props.js +2 -0
  566. package/dist/cjs/components/text.props.js.map +7 -0
  567. package/dist/cjs/components/theme-panel.d.ts +25 -0
  568. package/dist/cjs/components/theme-panel.d.ts.map +1 -0
  569. package/dist/cjs/components/theme-panel.js +13 -0
  570. package/dist/cjs/components/theme-panel.js.map +7 -0
  571. package/dist/cjs/components/theme.d.ts +43 -0
  572. package/dist/cjs/components/theme.d.ts.map +1 -0
  573. package/dist/cjs/components/theme.js +2 -0
  574. package/dist/cjs/components/theme.js.map +7 -0
  575. package/dist/cjs/components/theme.props.d.ts +112 -0
  576. package/dist/cjs/components/theme.props.d.ts.map +1 -0
  577. package/dist/cjs/components/theme.props.js +2 -0
  578. package/dist/cjs/components/theme.props.js.map +7 -0
  579. package/dist/cjs/components/toggle-button.d.ts +63 -0
  580. package/dist/cjs/components/toggle-button.d.ts.map +1 -0
  581. package/dist/cjs/components/toggle-button.js +10 -0
  582. package/dist/cjs/components/toggle-button.js.map +7 -0
  583. package/dist/cjs/components/toggle-icon-button.d.ts +107 -0
  584. package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -0
  585. package/dist/cjs/components/toggle-icon-button.js +13 -0
  586. package/dist/cjs/components/toggle-icon-button.js.map +7 -0
  587. package/dist/cjs/components/toolbar.d.ts +40 -0
  588. package/dist/cjs/components/toolbar.d.ts.map +1 -0
  589. package/dist/cjs/components/toolbar.js +2 -0
  590. package/dist/cjs/components/toolbar.js.map +7 -0
  591. package/dist/cjs/components/tooltip.d.ts +14 -0
  592. package/dist/cjs/components/tooltip.d.ts.map +1 -0
  593. package/dist/cjs/components/tooltip.js +2 -0
  594. package/dist/cjs/components/tooltip.js.map +7 -0
  595. package/dist/cjs/components/tooltip.props.d.ts +31 -0
  596. package/dist/cjs/components/tooltip.props.d.ts.map +1 -0
  597. package/dist/cjs/components/tooltip.props.js +2 -0
  598. package/dist/cjs/components/tooltip.props.js.map +7 -0
  599. package/dist/cjs/components/user-card.d.ts +12 -0
  600. package/dist/cjs/components/user-card.d.ts.map +1 -0
  601. package/dist/cjs/components/user-card.js +2 -0
  602. package/dist/cjs/components/user-card.js.map +7 -0
  603. package/dist/cjs/components/user-card.props.d.ts +63 -0
  604. package/dist/cjs/components/user-card.props.d.ts.map +1 -0
  605. package/dist/cjs/components/user-card.props.js +2 -0
  606. package/dist/cjs/components/user-card.props.js.map +7 -0
  607. package/dist/cjs/components/virtual-menu.d.ts +116 -0
  608. package/dist/cjs/components/virtual-menu.d.ts.map +1 -0
  609. package/dist/cjs/components/virtual-menu.js +2 -0
  610. package/dist/cjs/components/virtual-menu.js.map +7 -0
  611. package/dist/cjs/components/visually-hidden.d.ts +5 -0
  612. package/dist/cjs/components/visually-hidden.d.ts.map +1 -0
  613. package/dist/cjs/components/visually-hidden.js +2 -0
  614. package/dist/cjs/components/visually-hidden.js.map +7 -0
  615. package/dist/cjs/helpers/component-props.d.ts +8 -0
  616. package/dist/cjs/helpers/component-props.d.ts.map +1 -0
  617. package/dist/cjs/helpers/component-props.js +2 -0
  618. package/dist/cjs/helpers/component-props.js.map +7 -0
  619. package/dist/cjs/helpers/extract-margin-props.d.ts +12 -0
  620. package/dist/cjs/helpers/extract-margin-props.d.ts.map +1 -0
  621. package/dist/cjs/helpers/extract-margin-props.js +2 -0
  622. package/dist/cjs/helpers/extract-margin-props.js.map +7 -0
  623. package/dist/cjs/helpers/extract-props.d.ts +23 -0
  624. package/dist/cjs/helpers/extract-props.d.ts.map +1 -0
  625. package/dist/cjs/helpers/extract-props.js +2 -0
  626. package/dist/cjs/helpers/extract-props.js.map +7 -0
  627. package/dist/cjs/helpers/font-config.d.ts +106 -0
  628. package/dist/cjs/helpers/font-config.d.ts.map +1 -0
  629. package/dist/cjs/helpers/font-config.js +3 -0
  630. package/dist/cjs/helpers/font-config.js.map +7 -0
  631. package/dist/cjs/helpers/get-margin-styles.d.ts +3 -0
  632. package/dist/cjs/helpers/get-margin-styles.d.ts.map +1 -0
  633. package/dist/cjs/helpers/get-margin-styles.js +2 -0
  634. package/dist/cjs/helpers/get-margin-styles.js.map +7 -0
  635. package/dist/cjs/helpers/get-matching-gray-color.d.ts +5 -0
  636. package/dist/cjs/helpers/get-matching-gray-color.d.ts.map +1 -0
  637. package/dist/cjs/helpers/get-matching-gray-color.js +2 -0
  638. package/dist/cjs/helpers/get-matching-gray-color.js.map +7 -0
  639. package/dist/cjs/helpers/get-responsive-styles.d.ts +26 -0
  640. package/dist/cjs/helpers/get-responsive-styles.d.ts.map +1 -0
  641. package/dist/cjs/helpers/get-responsive-styles.js +2 -0
  642. package/dist/cjs/helpers/get-responsive-styles.js.map +7 -0
  643. package/dist/cjs/helpers/get-subtree.d.ts +13 -0
  644. package/dist/cjs/helpers/get-subtree.d.ts.map +1 -0
  645. package/dist/cjs/helpers/get-subtree.js +2 -0
  646. package/dist/cjs/helpers/get-subtree.js.map +7 -0
  647. package/dist/cjs/helpers/has-own-property.d.ts +4 -0
  648. package/dist/cjs/helpers/has-own-property.d.ts.map +1 -0
  649. package/dist/cjs/helpers/has-own-property.js +2 -0
  650. package/dist/cjs/helpers/has-own-property.js.map +7 -0
  651. package/dist/cjs/helpers/index.d.ts +16 -0
  652. package/dist/cjs/helpers/index.d.ts.map +1 -0
  653. package/dist/cjs/helpers/index.js +3 -0
  654. package/dist/cjs/helpers/index.js.map +7 -0
  655. package/dist/cjs/helpers/inert.d.ts +3 -0
  656. package/dist/cjs/helpers/inert.d.ts.map +1 -0
  657. package/dist/cjs/helpers/inert.js +2 -0
  658. package/dist/cjs/helpers/inert.js.map +7 -0
  659. package/dist/cjs/helpers/input-attributes.d.ts +7 -0
  660. package/dist/cjs/helpers/input-attributes.d.ts.map +1 -0
  661. package/dist/cjs/helpers/input-attributes.js +2 -0
  662. package/dist/cjs/helpers/input-attributes.js.map +7 -0
  663. package/dist/cjs/helpers/is-responsive-object.d.ts +3 -0
  664. package/dist/cjs/helpers/is-responsive-object.d.ts.map +1 -0
  665. package/dist/cjs/helpers/is-responsive-object.js +2 -0
  666. package/dist/cjs/helpers/is-responsive-object.js.map +7 -0
  667. package/dist/cjs/helpers/map-prop-values.d.ts +10 -0
  668. package/dist/cjs/helpers/map-prop-values.d.ts.map +1 -0
  669. package/dist/cjs/helpers/map-prop-values.js +2 -0
  670. package/dist/cjs/helpers/map-prop-values.js.map +7 -0
  671. package/dist/cjs/helpers/merge-styles.d.ts +4 -0
  672. package/dist/cjs/helpers/merge-styles.d.ts.map +1 -0
  673. package/dist/cjs/helpers/merge-styles.js +2 -0
  674. package/dist/cjs/helpers/merge-styles.js.map +7 -0
  675. package/dist/cjs/helpers/normalize-to-px.d.ts +10 -0
  676. package/dist/cjs/helpers/normalize-to-px.d.ts.map +1 -0
  677. package/dist/cjs/helpers/normalize-to-px.js +2 -0
  678. package/dist/cjs/helpers/normalize-to-px.js.map +7 -0
  679. package/dist/cjs/helpers/require-react-element.d.ts +4 -0
  680. package/dist/cjs/helpers/require-react-element.d.ts.map +1 -0
  681. package/dist/cjs/helpers/require-react-element.js +2 -0
  682. package/dist/cjs/helpers/require-react-element.js.map +7 -0
  683. package/dist/cjs/hooks/index.d.ts +5 -0
  684. package/dist/cjs/hooks/index.d.ts.map +1 -0
  685. package/dist/cjs/hooks/index.js +10 -0
  686. package/dist/cjs/hooks/index.js.map +7 -0
  687. package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts +9 -0
  688. package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -0
  689. package/dist/cjs/hooks/use-body-pointer-events-cleanup.js +2 -0
  690. package/dist/cjs/hooks/use-body-pointer-events-cleanup.js.map +7 -0
  691. package/dist/cjs/hooks/use-breakpoint.d.ts +11 -0
  692. package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -0
  693. package/dist/cjs/hooks/use-breakpoint.js +2 -0
  694. package/dist/cjs/hooks/use-breakpoint.js.map +7 -0
  695. package/dist/cjs/hooks/use-live-announcer.d.ts +6 -0
  696. package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -0
  697. package/dist/cjs/hooks/use-live-announcer.js +10 -0
  698. package/dist/cjs/hooks/use-live-announcer.js.map +7 -0
  699. package/dist/cjs/hooks/use-toggle-state.d.ts +37 -0
  700. package/dist/cjs/hooks/use-toggle-state.d.ts.map +1 -0
  701. package/dist/cjs/hooks/use-toggle-state.js +10 -0
  702. package/dist/cjs/hooks/use-toggle-state.js.map +7 -0
  703. package/dist/cjs/hooks/use-tooltip-wrapper.d.ts +29 -0
  704. package/dist/cjs/hooks/use-tooltip-wrapper.d.ts.map +1 -0
  705. package/dist/cjs/hooks/use-tooltip-wrapper.js +2 -0
  706. package/dist/cjs/hooks/use-tooltip-wrapper.js.map +7 -0
  707. package/dist/cjs/index.d.ts +3 -0
  708. package/dist/cjs/index.d.ts.map +1 -0
  709. package/dist/cjs/index.js +24 -0
  710. package/dist/cjs/index.js.map +7 -0
  711. package/dist/cjs/props/as-child.prop.d.ts +11 -0
  712. package/dist/cjs/props/as-child.prop.d.ts.map +1 -0
  713. package/dist/cjs/props/as-child.prop.js +2 -0
  714. package/dist/cjs/props/as-child.prop.js.map +7 -0
  715. package/dist/cjs/props/color.prop.d.ts +18 -0
  716. package/dist/cjs/props/color.prop.d.ts.map +1 -0
  717. package/dist/cjs/props/color.prop.js +2 -0
  718. package/dist/cjs/props/color.prop.js.map +7 -0
  719. package/dist/cjs/props/font-family.prop.d.ts +9 -0
  720. package/dist/cjs/props/font-family.prop.d.ts.map +1 -0
  721. package/dist/cjs/props/font-family.prop.js +2 -0
  722. package/dist/cjs/props/font-family.prop.js.map +7 -0
  723. package/dist/cjs/props/gap.props.d.ts +61 -0
  724. package/dist/cjs/props/gap.props.d.ts.map +1 -0
  725. package/dist/cjs/props/gap.props.js +2 -0
  726. package/dist/cjs/props/gap.props.js.map +7 -0
  727. package/dist/cjs/props/height.props.d.ts +58 -0
  728. package/dist/cjs/props/height.props.d.ts.map +1 -0
  729. package/dist/cjs/props/height.props.js +2 -0
  730. package/dist/cjs/props/height.props.js.map +7 -0
  731. package/dist/cjs/props/high-contrast.prop.d.ts +9 -0
  732. package/dist/cjs/props/high-contrast.prop.d.ts.map +1 -0
  733. package/dist/cjs/props/high-contrast.prop.js +2 -0
  734. package/dist/cjs/props/high-contrast.prop.js.map +7 -0
  735. package/dist/cjs/props/index.d.ts +69 -0
  736. package/dist/cjs/props/index.d.ts.map +1 -0
  737. package/dist/cjs/props/index.js +2 -0
  738. package/dist/cjs/props/index.js.map +7 -0
  739. package/dist/cjs/props/layout.props.d.ts +472 -0
  740. package/dist/cjs/props/layout.props.d.ts.map +1 -0
  741. package/dist/cjs/props/layout.props.js +2 -0
  742. package/dist/cjs/props/layout.props.js.map +7 -0
  743. package/dist/cjs/props/leading-trim.prop.d.ts +10 -0
  744. package/dist/cjs/props/leading-trim.prop.d.ts.map +1 -0
  745. package/dist/cjs/props/leading-trim.prop.js +2 -0
  746. package/dist/cjs/props/leading-trim.prop.js.map +7 -0
  747. package/dist/cjs/props/margin.props.d.ts +142 -0
  748. package/dist/cjs/props/margin.props.d.ts.map +1 -0
  749. package/dist/cjs/props/margin.props.js +2 -0
  750. package/dist/cjs/props/margin.props.js.map +7 -0
  751. package/dist/cjs/props/padding.props.d.ts +142 -0
  752. package/dist/cjs/props/padding.props.d.ts.map +1 -0
  753. package/dist/cjs/props/padding.props.js +2 -0
  754. package/dist/cjs/props/padding.props.js.map +7 -0
  755. package/dist/cjs/props/prop-def.d.ts +60 -0
  756. package/dist/cjs/props/prop-def.d.ts.map +1 -0
  757. package/dist/cjs/props/prop-def.js +2 -0
  758. package/dist/cjs/props/prop-def.js.map +7 -0
  759. package/dist/cjs/props/radius.prop.d.ts +10 -0
  760. package/dist/cjs/props/radius.prop.d.ts.map +1 -0
  761. package/dist/cjs/props/radius.prop.js +2 -0
  762. package/dist/cjs/props/radius.prop.js.map +7 -0
  763. package/dist/cjs/props/shadow.props.d.ts +24 -0
  764. package/dist/cjs/props/shadow.props.d.ts.map +1 -0
  765. package/dist/cjs/props/shadow.props.js +2 -0
  766. package/dist/cjs/props/shadow.props.js.map +7 -0
  767. package/dist/cjs/props/text-align.prop.d.ts +10 -0
  768. package/dist/cjs/props/text-align.prop.d.ts.map +1 -0
  769. package/dist/cjs/props/text-align.prop.js +2 -0
  770. package/dist/cjs/props/text-align.prop.js.map +7 -0
  771. package/dist/cjs/props/text-wrap.prop.d.ts +10 -0
  772. package/dist/cjs/props/text-wrap.prop.d.ts.map +1 -0
  773. package/dist/cjs/props/text-wrap.prop.js +2 -0
  774. package/dist/cjs/props/text-wrap.prop.js.map +7 -0
  775. package/dist/cjs/props/truncate.prop.d.ts +8 -0
  776. package/dist/cjs/props/truncate.prop.d.ts.map +1 -0
  777. package/dist/cjs/props/truncate.prop.js +2 -0
  778. package/dist/cjs/props/truncate.prop.js.map +7 -0
  779. package/dist/cjs/props/weight.prop.d.ts +10 -0
  780. package/dist/cjs/props/weight.prop.d.ts.map +1 -0
  781. package/dist/cjs/props/weight.prop.js +2 -0
  782. package/dist/cjs/props/weight.prop.js.map +7 -0
  783. package/dist/cjs/props/width.props.d.ts +58 -0
  784. package/dist/cjs/props/width.props.d.ts.map +1 -0
  785. package/dist/cjs/props/width.props.js +2 -0
  786. package/dist/cjs/props/width.props.js.map +7 -0
  787. package/dist/esm/chunk-25U7DENY.js +2 -0
  788. package/dist/esm/chunk-25U7DENY.js.map +7 -0
  789. package/dist/esm/chunk-2AEELIG6.js +2 -0
  790. package/dist/esm/chunk-2AEELIG6.js.map +7 -0
  791. package/dist/esm/chunk-2LYX5S7H.js +2 -0
  792. package/dist/esm/chunk-2LYX5S7H.js.map +7 -0
  793. package/dist/esm/chunk-2N2AQNJH.js +2 -0
  794. package/dist/esm/chunk-2N2AQNJH.js.map +7 -0
  795. package/dist/esm/chunk-2SS3FA3N.js +2 -0
  796. package/dist/esm/chunk-2SS3FA3N.js.map +7 -0
  797. package/dist/esm/chunk-3DC63EZP.js +2 -0
  798. package/dist/esm/chunk-3DC63EZP.js.map +7 -0
  799. package/dist/esm/chunk-3F6I7YOR.js +2 -0
  800. package/dist/esm/chunk-3F6I7YOR.js.map +7 -0
  801. package/dist/esm/chunk-3KB2XWBE.js +2 -0
  802. package/dist/esm/chunk-3KB2XWBE.js.map +7 -0
  803. package/dist/esm/chunk-3XT5P2HO.js +2 -0
  804. package/dist/esm/chunk-3XT5P2HO.js.map +7 -0
  805. package/dist/esm/chunk-42HFGCHX.js +2 -0
  806. package/dist/esm/chunk-42HFGCHX.js.map +7 -0
  807. package/dist/esm/chunk-4532RT2B.js +2 -0
  808. package/dist/esm/chunk-4532RT2B.js.map +7 -0
  809. package/dist/esm/chunk-4JQZUQY7.js +2 -0
  810. package/dist/esm/chunk-4JQZUQY7.js.map +7 -0
  811. package/dist/esm/chunk-4N5JU7XQ.js +2 -0
  812. package/dist/esm/chunk-4N5JU7XQ.js.map +7 -0
  813. package/dist/esm/chunk-4OBMRJHC.js +2 -0
  814. package/dist/esm/chunk-4OBMRJHC.js.map +7 -0
  815. package/dist/esm/chunk-4TCXI3L3.js +2 -0
  816. package/dist/esm/chunk-4TCXI3L3.js.map +7 -0
  817. package/dist/esm/chunk-4Z33XHOK.js +2 -0
  818. package/dist/esm/chunk-4Z33XHOK.js.map +7 -0
  819. package/dist/esm/chunk-5GXFBLBJ.js +2 -0
  820. package/dist/esm/chunk-5GXFBLBJ.js.map +7 -0
  821. package/dist/esm/chunk-5KICSAT7.js +2 -0
  822. package/dist/esm/chunk-5KICSAT7.js.map +7 -0
  823. package/dist/esm/chunk-5LXFJMFB.js +2 -0
  824. package/dist/esm/chunk-5LXFJMFB.js.map +7 -0
  825. package/dist/esm/chunk-5T6K7VPP.js +2 -0
  826. package/dist/esm/chunk-5T6K7VPP.js.map +7 -0
  827. package/dist/esm/chunk-5U2Q23K3.js +2 -0
  828. package/dist/esm/chunk-5U2Q23K3.js.map +7 -0
  829. package/dist/esm/chunk-66ZLZAAJ.js +2 -0
  830. package/dist/esm/chunk-66ZLZAAJ.js.map +7 -0
  831. package/dist/esm/chunk-6DWDNKLS.js +1 -0
  832. package/dist/esm/chunk-6DWDNKLS.js.map +7 -0
  833. package/dist/esm/chunk-6ELPYR73.js +2 -0
  834. package/dist/esm/chunk-6ELPYR73.js.map +7 -0
  835. package/dist/esm/chunk-6FAICIYS.js +2 -0
  836. package/dist/esm/chunk-6FAICIYS.js.map +7 -0
  837. package/dist/esm/chunk-6HEAF5IT.js +2 -0
  838. package/dist/esm/chunk-6HEAF5IT.js.map +7 -0
  839. package/dist/esm/chunk-6VGPTAHM.js +2 -0
  840. package/dist/esm/chunk-6VGPTAHM.js.map +7 -0
  841. package/dist/esm/chunk-72AHPGPN.js +2 -0
  842. package/dist/esm/chunk-72AHPGPN.js.map +7 -0
  843. package/dist/esm/chunk-7CBAHIVG.js +2 -0
  844. package/dist/esm/chunk-7CBAHIVG.js.map +7 -0
  845. package/dist/esm/chunk-7CXVHFMQ.js +2 -0
  846. package/dist/esm/chunk-7CXVHFMQ.js.map +7 -0
  847. package/dist/esm/chunk-7MURQ6CR.js +2 -0
  848. package/dist/esm/chunk-7MURQ6CR.js.map +7 -0
  849. package/dist/esm/chunk-A24PYRVV.js +2 -0
  850. package/dist/esm/chunk-A24PYRVV.js.map +7 -0
  851. package/dist/esm/chunk-A3NH376A.js +2 -0
  852. package/dist/esm/chunk-A3NH376A.js.map +7 -0
  853. package/dist/esm/chunk-ADYTQCZX.js +2 -0
  854. package/dist/esm/chunk-ADYTQCZX.js.map +7 -0
  855. package/dist/esm/chunk-AGAQC4HH.js +2 -0
  856. package/dist/esm/chunk-AGAQC4HH.js.map +7 -0
  857. package/dist/esm/chunk-APRBRAOT.js +2 -0
  858. package/dist/esm/chunk-APRBRAOT.js.map +7 -0
  859. package/dist/esm/chunk-ARIV4AT5.js +2 -0
  860. package/dist/esm/chunk-ARIV4AT5.js.map +7 -0
  861. package/dist/esm/chunk-AUV6B4AH.js +2 -0
  862. package/dist/esm/chunk-AUV6B4AH.js.map +7 -0
  863. package/dist/esm/chunk-AXUDFYLY.js +2 -0
  864. package/dist/esm/chunk-AXUDFYLY.js.map +7 -0
  865. package/dist/esm/chunk-BALS3AVM.js +2 -0
  866. package/dist/esm/chunk-BALS3AVM.js.map +7 -0
  867. package/dist/esm/chunk-BI7W34WW.js +2 -0
  868. package/dist/esm/chunk-BI7W34WW.js.map +7 -0
  869. package/dist/esm/chunk-BJTJUIYJ.js +2 -0
  870. package/dist/esm/chunk-BJTJUIYJ.js.map +7 -0
  871. package/dist/esm/chunk-BPVVFHYD.js +2 -0
  872. package/dist/esm/chunk-BPVVFHYD.js.map +7 -0
  873. package/dist/esm/chunk-CBR3VIRS.js +2 -0
  874. package/dist/esm/chunk-CBR3VIRS.js.map +7 -0
  875. package/dist/esm/chunk-CECQNGUL.js +2 -0
  876. package/dist/esm/chunk-CECQNGUL.js.map +7 -0
  877. package/dist/esm/chunk-D2AZAGGP.js +2 -0
  878. package/dist/esm/chunk-D2AZAGGP.js.map +7 -0
  879. package/dist/esm/chunk-DJBPM5QK.js +2 -0
  880. package/dist/esm/chunk-DJBPM5QK.js.map +7 -0
  881. package/dist/esm/chunk-DK5MHD6I.js +2 -0
  882. package/dist/esm/chunk-DK5MHD6I.js.map +7 -0
  883. package/dist/esm/chunk-DNI4QRXQ.js +2 -0
  884. package/dist/esm/chunk-DNI4QRXQ.js.map +7 -0
  885. package/dist/esm/chunk-DUHJVT64.js +2 -0
  886. package/dist/esm/chunk-DUHJVT64.js.map +7 -0
  887. package/dist/esm/chunk-DXI5P5O4.js +2 -0
  888. package/dist/esm/chunk-DXI5P5O4.js.map +7 -0
  889. package/dist/esm/chunk-DZ4H2KTP.js +2 -0
  890. package/dist/esm/chunk-DZ4H2KTP.js.map +7 -0
  891. package/dist/esm/chunk-E23RKOQJ.js +2 -0
  892. package/dist/esm/chunk-E23RKOQJ.js.map +7 -0
  893. package/dist/esm/chunk-E2Z5IA2P.js +2 -0
  894. package/dist/esm/chunk-E2Z5IA2P.js.map +7 -0
  895. package/dist/esm/chunk-E6IWYD3U.js +2 -0
  896. package/dist/esm/chunk-E6IWYD3U.js.map +7 -0
  897. package/dist/esm/chunk-EE54S7YV.js +10 -0
  898. package/dist/esm/chunk-EE54S7YV.js.map +7 -0
  899. package/dist/esm/chunk-EJWAAFCI.js +10 -0
  900. package/dist/esm/chunk-EJWAAFCI.js.map +7 -0
  901. package/dist/esm/chunk-EL7YGOTY.js +1 -0
  902. package/dist/esm/chunk-EL7YGOTY.js.map +7 -0
  903. package/dist/esm/chunk-ERGJN7FJ.js +2 -0
  904. package/dist/esm/chunk-ERGJN7FJ.js.map +7 -0
  905. package/dist/esm/chunk-ERNM3KVF.js +2 -0
  906. package/dist/esm/chunk-ERNM3KVF.js.map +7 -0
  907. package/dist/esm/chunk-ES7MK2MM.js +2 -0
  908. package/dist/esm/chunk-ES7MK2MM.js.map +7 -0
  909. package/dist/esm/chunk-F22ZRNWL.js +2 -0
  910. package/dist/esm/chunk-F22ZRNWL.js.map +7 -0
  911. package/dist/esm/chunk-F7IUK2I2.js +2 -0
  912. package/dist/esm/chunk-F7IUK2I2.js.map +7 -0
  913. package/dist/esm/chunk-FC2DBBJ3.js +2 -0
  914. package/dist/esm/chunk-FC2DBBJ3.js.map +7 -0
  915. package/dist/esm/chunk-FD2TR343.js +2 -0
  916. package/dist/esm/chunk-FD2TR343.js.map +7 -0
  917. package/dist/esm/chunk-FGORMEAO.js +2 -0
  918. package/dist/esm/chunk-FGORMEAO.js.map +7 -0
  919. package/dist/esm/chunk-FHEHX7CE.js +2 -0
  920. package/dist/esm/chunk-FHEHX7CE.js.map +7 -0
  921. package/dist/esm/chunk-FLBLS7M4.js +2 -0
  922. package/dist/esm/chunk-FLBLS7M4.js.map +7 -0
  923. package/dist/esm/chunk-FVCWNSRU.js +2 -0
  924. package/dist/esm/chunk-FVCWNSRU.js.map +7 -0
  925. package/dist/esm/chunk-FWB47YCH.js +2 -0
  926. package/dist/esm/chunk-FWB47YCH.js.map +7 -0
  927. package/dist/esm/chunk-G2CKYO2I.js +2 -0
  928. package/dist/esm/chunk-G2CKYO2I.js.map +7 -0
  929. package/dist/esm/chunk-GCUGJXI2.js +2 -0
  930. package/dist/esm/chunk-GCUGJXI2.js.map +7 -0
  931. package/dist/esm/chunk-GFOSP3PZ.js +2 -0
  932. package/dist/esm/chunk-GFOSP3PZ.js.map +7 -0
  933. package/dist/esm/chunk-GLC4QJBF.js +5 -0
  934. package/dist/esm/chunk-GLC4QJBF.js.map +7 -0
  935. package/dist/esm/chunk-GSIE6SUD.js +2 -0
  936. package/dist/esm/chunk-GSIE6SUD.js.map +7 -0
  937. package/dist/esm/chunk-GSTOGDAJ.js +2 -0
  938. package/dist/esm/chunk-GSTOGDAJ.js.map +7 -0
  939. package/dist/esm/chunk-GWYFT3EI.js +2 -0
  940. package/dist/esm/chunk-GWYFT3EI.js.map +7 -0
  941. package/dist/esm/chunk-H2G446JG.js +2 -0
  942. package/dist/esm/chunk-H2G446JG.js.map +7 -0
  943. package/dist/esm/chunk-H4MMVAGQ.js +2 -0
  944. package/dist/esm/chunk-H4MMVAGQ.js.map +7 -0
  945. package/dist/esm/chunk-HACQF6F4.js +2 -0
  946. package/dist/esm/chunk-HACQF6F4.js.map +7 -0
  947. package/dist/esm/chunk-HAGKI7NA.js +2 -0
  948. package/dist/esm/chunk-HAGKI7NA.js.map +7 -0
  949. package/dist/esm/chunk-HOHUDTTL.js +2 -0
  950. package/dist/esm/chunk-HOHUDTTL.js.map +7 -0
  951. package/dist/esm/chunk-HQ35PM4O.js +2 -0
  952. package/dist/esm/chunk-HQ35PM4O.js.map +7 -0
  953. package/dist/esm/chunk-HUKPWYG2.js +2 -0
  954. package/dist/esm/chunk-HUKPWYG2.js.map +7 -0
  955. package/dist/esm/chunk-HVWEPVBH.js +2 -0
  956. package/dist/esm/chunk-HVWEPVBH.js.map +7 -0
  957. package/dist/esm/chunk-IBF5U4QW.js +2 -0
  958. package/dist/esm/chunk-IBF5U4QW.js.map +7 -0
  959. package/dist/esm/chunk-IDYHZIS6.js +2 -0
  960. package/dist/esm/chunk-IDYHZIS6.js.map +7 -0
  961. package/dist/esm/chunk-IGQRZCAI.js +2 -0
  962. package/dist/esm/chunk-IGQRZCAI.js.map +7 -0
  963. package/dist/esm/chunk-ILRJA7FU.js +2 -0
  964. package/dist/esm/chunk-ILRJA7FU.js.map +7 -0
  965. package/dist/esm/chunk-IPJUHVM6.js +2 -0
  966. package/dist/esm/chunk-IPJUHVM6.js.map +7 -0
  967. package/dist/esm/chunk-ITRVKLYU.js +2 -0
  968. package/dist/esm/chunk-ITRVKLYU.js.map +7 -0
  969. package/dist/esm/chunk-IX5HIHVI.js +2 -0
  970. package/dist/esm/chunk-IX5HIHVI.js.map +7 -0
  971. package/dist/esm/chunk-JAMLW534.js +2 -0
  972. package/dist/esm/chunk-JAMLW534.js.map +7 -0
  973. package/dist/esm/chunk-JCYI4NTV.js +2 -0
  974. package/dist/esm/chunk-JCYI4NTV.js.map +7 -0
  975. package/dist/esm/chunk-JQOFJNCV.js +2 -0
  976. package/dist/esm/chunk-JQOFJNCV.js.map +7 -0
  977. package/dist/esm/chunk-K3R4AH3E.js +2 -0
  978. package/dist/esm/chunk-K3R4AH3E.js.map +7 -0
  979. package/dist/esm/chunk-K53W3ELO.js +2 -0
  980. package/dist/esm/chunk-K53W3ELO.js.map +7 -0
  981. package/dist/esm/chunk-KCAFSCOV.js +2 -0
  982. package/dist/esm/chunk-KCAFSCOV.js.map +7 -0
  983. package/dist/esm/chunk-KFA53SVQ.js +2 -0
  984. package/dist/esm/chunk-KFA53SVQ.js.map +7 -0
  985. package/dist/esm/chunk-KMPBTEZH.js +2 -0
  986. package/dist/esm/chunk-KMPBTEZH.js.map +7 -0
  987. package/dist/esm/chunk-KNQBAOMV.js +2 -0
  988. package/dist/esm/chunk-KNQBAOMV.js.map +7 -0
  989. package/dist/esm/chunk-KPBG7CIL.js +2 -0
  990. package/dist/esm/chunk-KPBG7CIL.js.map +7 -0
  991. package/dist/esm/chunk-KRJTW535.js +2 -0
  992. package/dist/esm/chunk-KRJTW535.js.map +7 -0
  993. package/dist/esm/chunk-KTAFIHJY.js +2 -0
  994. package/dist/esm/chunk-KTAFIHJY.js.map +7 -0
  995. package/dist/esm/chunk-L6UXAITB.js +2 -0
  996. package/dist/esm/chunk-L6UXAITB.js.map +7 -0
  997. package/dist/esm/chunk-LN5SP46K.js +2 -0
  998. package/dist/esm/chunk-LN5SP46K.js.map +7 -0
  999. package/dist/esm/chunk-M3ZYJANH.js +2 -0
  1000. package/dist/esm/chunk-M3ZYJANH.js.map +7 -0
  1001. package/dist/esm/chunk-MCQAJV4K.js +2 -0
  1002. package/dist/esm/chunk-MCQAJV4K.js.map +7 -0
  1003. package/dist/esm/chunk-MCQCG6AS.js +2 -0
  1004. package/dist/esm/chunk-MCQCG6AS.js.map +7 -0
  1005. package/dist/esm/chunk-MHPPVJDB.js +2 -0
  1006. package/dist/esm/chunk-MHPPVJDB.js.map +7 -0
  1007. package/dist/esm/chunk-MJ47O7KH.js +2 -0
  1008. package/dist/esm/chunk-MJ47O7KH.js.map +7 -0
  1009. package/dist/esm/chunk-MJJ7XDIP.js +2 -0
  1010. package/dist/esm/chunk-MJJ7XDIP.js.map +7 -0
  1011. package/dist/esm/chunk-MQWH2IFO.js +2 -0
  1012. package/dist/esm/chunk-MQWH2IFO.js.map +7 -0
  1013. package/dist/esm/chunk-N2B7TWIP.js +2 -0
  1014. package/dist/esm/chunk-N2B7TWIP.js.map +7 -0
  1015. package/dist/esm/chunk-NIX6Z3JG.js +2 -0
  1016. package/dist/esm/chunk-NIX6Z3JG.js.map +7 -0
  1017. package/dist/esm/chunk-NNO7M466.js +2 -0
  1018. package/dist/esm/chunk-NNO7M466.js.map +7 -0
  1019. package/dist/esm/chunk-NZJGC6ZW.js +2 -0
  1020. package/dist/esm/chunk-NZJGC6ZW.js.map +7 -0
  1021. package/dist/esm/chunk-OA7C34MJ.js +1 -0
  1022. package/dist/esm/chunk-OA7C34MJ.js.map +7 -0
  1023. package/dist/esm/chunk-ODWCNOWX.js +1 -0
  1024. package/dist/esm/chunk-ODWCNOWX.js.map +7 -0
  1025. package/dist/esm/chunk-OGOOZLUD.js +2 -0
  1026. package/dist/esm/chunk-OGOOZLUD.js.map +7 -0
  1027. package/dist/esm/chunk-OHJVFZMH.js +2 -0
  1028. package/dist/esm/chunk-OHJVFZMH.js.map +7 -0
  1029. package/dist/esm/chunk-OKJNS7Z7.js +2 -0
  1030. package/dist/esm/chunk-OKJNS7Z7.js.map +7 -0
  1031. package/dist/esm/chunk-OO652UQW.js +2 -0
  1032. package/dist/esm/chunk-OO652UQW.js.map +7 -0
  1033. package/dist/esm/chunk-PPNWGWN3.js +2 -0
  1034. package/dist/esm/chunk-PPNWGWN3.js.map +7 -0
  1035. package/dist/esm/chunk-PS6NEG5A.js +2 -0
  1036. package/dist/esm/chunk-PS6NEG5A.js.map +7 -0
  1037. package/dist/esm/chunk-Q73Y5O5P.js +2 -0
  1038. package/dist/esm/chunk-Q73Y5O5P.js.map +7 -0
  1039. package/dist/esm/chunk-Q7P6BTVU.js +3 -0
  1040. package/dist/esm/chunk-Q7P6BTVU.js.map +7 -0
  1041. package/dist/esm/chunk-QCNUTT4R.js +2 -0
  1042. package/dist/esm/chunk-QCNUTT4R.js.map +7 -0
  1043. package/dist/esm/chunk-QDW5ZG5E.js +1 -0
  1044. package/dist/esm/chunk-QDW5ZG5E.js.map +7 -0
  1045. package/dist/esm/chunk-QLIELX4I.js +2 -0
  1046. package/dist/esm/chunk-QLIELX4I.js.map +7 -0
  1047. package/dist/esm/chunk-QLZ5XAW6.js +2 -0
  1048. package/dist/esm/chunk-QLZ5XAW6.js.map +7 -0
  1049. package/dist/esm/chunk-QM3RCK5P.js +2 -0
  1050. package/dist/esm/chunk-QM3RCK5P.js.map +7 -0
  1051. package/dist/esm/chunk-QOWA5LK5.js +2 -0
  1052. package/dist/esm/chunk-QOWA5LK5.js.map +7 -0
  1053. package/dist/esm/chunk-RDP4UQ42.js +2 -0
  1054. package/dist/esm/chunk-RDP4UQ42.js.map +7 -0
  1055. package/dist/esm/chunk-RJNCH62T.js +1 -0
  1056. package/dist/esm/chunk-RJNCH62T.js.map +7 -0
  1057. package/dist/esm/chunk-RMBS6CAO.js +2 -0
  1058. package/dist/esm/chunk-RMBS6CAO.js.map +7 -0
  1059. package/dist/esm/chunk-RQ2ZPMHJ.js +2 -0
  1060. package/dist/esm/chunk-RQ2ZPMHJ.js.map +7 -0
  1061. package/dist/esm/chunk-RZCX6IBE.js +2 -0
  1062. package/dist/esm/chunk-RZCX6IBE.js.map +7 -0
  1063. package/dist/esm/chunk-SESAEJ6W.js +2 -0
  1064. package/dist/esm/chunk-SESAEJ6W.js.map +7 -0
  1065. package/dist/esm/chunk-SGU4HUHF.js +5 -0
  1066. package/dist/esm/chunk-SGU4HUHF.js.map +7 -0
  1067. package/dist/esm/chunk-SMGDH54W.js +2 -0
  1068. package/dist/esm/chunk-SMGDH54W.js.map +7 -0
  1069. package/dist/esm/chunk-SNHEJU2S.js +2 -0
  1070. package/dist/esm/chunk-SNHEJU2S.js.map +7 -0
  1071. package/dist/esm/chunk-SNR5VFWG.js +2 -0
  1072. package/dist/esm/chunk-SNR5VFWG.js.map +7 -0
  1073. package/dist/esm/chunk-STPMPY3X.js +1 -0
  1074. package/dist/esm/chunk-STPMPY3X.js.map +7 -0
  1075. package/dist/esm/chunk-SVLY6B5F.js +2 -0
  1076. package/dist/esm/chunk-SVLY6B5F.js.map +7 -0
  1077. package/dist/esm/chunk-T27QHMW7.js +2 -0
  1078. package/dist/esm/chunk-T27QHMW7.js.map +7 -0
  1079. package/dist/esm/chunk-TBJ6L4NL.js +2 -0
  1080. package/dist/esm/chunk-TBJ6L4NL.js.map +7 -0
  1081. package/dist/esm/chunk-TEULZKBM.js +2 -0
  1082. package/dist/esm/chunk-TEULZKBM.js.map +7 -0
  1083. package/dist/esm/chunk-TGN5ZJU5.js +2 -0
  1084. package/dist/esm/chunk-TGN5ZJU5.js.map +7 -0
  1085. package/dist/esm/chunk-TTFUM47A.js +2 -0
  1086. package/dist/esm/chunk-TTFUM47A.js.map +7 -0
  1087. package/dist/esm/chunk-TZTUPQYK.js +2 -0
  1088. package/dist/esm/chunk-TZTUPQYK.js.map +7 -0
  1089. package/dist/esm/chunk-U7AASKZI.js +2 -0
  1090. package/dist/esm/chunk-U7AASKZI.js.map +7 -0
  1091. package/dist/esm/chunk-UICSVJ3B.js +1 -0
  1092. package/dist/esm/chunk-UICSVJ3B.js.map +7 -0
  1093. package/dist/esm/chunk-UIEUZLZZ.js +2 -0
  1094. package/dist/esm/chunk-UIEUZLZZ.js.map +7 -0
  1095. package/dist/esm/chunk-UMX5MGLG.js +2 -0
  1096. package/dist/esm/chunk-UMX5MGLG.js.map +7 -0
  1097. package/dist/esm/chunk-USGTBZ43.js +2 -0
  1098. package/dist/esm/chunk-USGTBZ43.js.map +7 -0
  1099. package/dist/esm/chunk-UUX42HBM.js +2 -0
  1100. package/dist/esm/chunk-UUX42HBM.js.map +7 -0
  1101. package/dist/esm/chunk-UWT6TE5D.js +2 -0
  1102. package/dist/esm/chunk-UWT6TE5D.js.map +7 -0
  1103. package/dist/esm/chunk-UYNYUR7O.js +2 -0
  1104. package/dist/esm/chunk-UYNYUR7O.js.map +7 -0
  1105. package/dist/esm/chunk-V32EP3S7.js +2 -0
  1106. package/dist/esm/chunk-V32EP3S7.js.map +7 -0
  1107. package/dist/esm/chunk-VF5TRT3H.js +2 -0
  1108. package/dist/esm/chunk-VF5TRT3H.js.map +7 -0
  1109. package/dist/esm/chunk-VJSZG35J.js +2 -0
  1110. package/dist/esm/chunk-VJSZG35J.js.map +7 -0
  1111. package/dist/esm/chunk-VK7RNXUO.js +2 -0
  1112. package/dist/esm/chunk-VK7RNXUO.js.map +7 -0
  1113. package/dist/esm/chunk-VX44UTQ5.js +2 -0
  1114. package/dist/esm/chunk-VX44UTQ5.js.map +7 -0
  1115. package/dist/esm/chunk-WNSPLWRV.js +2 -0
  1116. package/dist/esm/chunk-WNSPLWRV.js.map +7 -0
  1117. package/dist/esm/chunk-WOR3JCLX.js +1 -0
  1118. package/dist/esm/chunk-WOR3JCLX.js.map +7 -0
  1119. package/dist/esm/chunk-WR7YLY46.js +2 -0
  1120. package/dist/esm/chunk-WR7YLY46.js.map +7 -0
  1121. package/dist/esm/chunk-WRWNN2NW.js +2 -0
  1122. package/dist/esm/chunk-WRWNN2NW.js.map +7 -0
  1123. package/dist/esm/chunk-WXP6MMUB.js +2 -0
  1124. package/dist/esm/chunk-WXP6MMUB.js.map +7 -0
  1125. package/dist/esm/chunk-WYA4IRU6.js +2 -0
  1126. package/dist/esm/chunk-WYA4IRU6.js.map +7 -0
  1127. package/dist/esm/chunk-WYADYDPN.js +2 -0
  1128. package/dist/esm/chunk-WYADYDPN.js.map +7 -0
  1129. package/dist/esm/chunk-WZCZHCVE.js +2 -0
  1130. package/dist/esm/chunk-WZCZHCVE.js.map +7 -0
  1131. package/dist/esm/chunk-WZETC7WV.js +2 -0
  1132. package/dist/esm/chunk-WZETC7WV.js.map +7 -0
  1133. package/dist/esm/chunk-X7BD5FLE.js +2 -0
  1134. package/dist/esm/chunk-X7BD5FLE.js.map +7 -0
  1135. package/dist/esm/chunk-XEZXKPLE.js +2 -0
  1136. package/dist/esm/chunk-XEZXKPLE.js.map +7 -0
  1137. package/dist/esm/chunk-XGGLYV5D.js +2 -0
  1138. package/dist/esm/chunk-XGGLYV5D.js.map +7 -0
  1139. package/dist/esm/chunk-XHQGMOXV.js +2 -0
  1140. package/dist/esm/chunk-XHQGMOXV.js.map +7 -0
  1141. package/dist/esm/chunk-XI5YXUCK.js +2 -0
  1142. package/dist/esm/chunk-XI5YXUCK.js.map +7 -0
  1143. package/dist/esm/chunk-XKASPWCJ.js +2 -0
  1144. package/dist/esm/chunk-XKASPWCJ.js.map +7 -0
  1145. package/dist/esm/chunk-XKBLNVOD.js +2 -0
  1146. package/dist/esm/chunk-XKBLNVOD.js.map +7 -0
  1147. package/dist/esm/chunk-XLOHPURR.js +2 -0
  1148. package/dist/esm/chunk-XLOHPURR.js.map +7 -0
  1149. package/dist/esm/chunk-Y3A6ZU24.js +2 -0
  1150. package/dist/esm/chunk-Y3A6ZU24.js.map +7 -0
  1151. package/dist/esm/chunk-Y7LT3F6R.js +2 -0
  1152. package/dist/esm/chunk-Y7LT3F6R.js.map +7 -0
  1153. package/dist/esm/chunk-YEA646GM.js +2 -0
  1154. package/dist/esm/chunk-YEA646GM.js.map +7 -0
  1155. package/dist/esm/chunk-YKPMLM7M.js +1 -0
  1156. package/dist/esm/chunk-YKPMLM7M.js.map +7 -0
  1157. package/dist/esm/chunk-YUZPSUJE.js +2 -0
  1158. package/dist/esm/chunk-YUZPSUJE.js.map +7 -0
  1159. package/dist/esm/chunk-YVBCDTTD.js +2 -0
  1160. package/dist/esm/chunk-YVBCDTTD.js.map +7 -0
  1161. package/dist/esm/chunk-Z5DQ6FSA.js +2 -0
  1162. package/dist/esm/chunk-Z5DQ6FSA.js.map +7 -0
  1163. package/dist/esm/chunk-ZE2KAVXW.js +2 -0
  1164. package/dist/esm/chunk-ZE2KAVXW.js.map +7 -0
  1165. package/dist/esm/chunk-ZHYOJNWV.js +2 -0
  1166. package/dist/esm/chunk-ZHYOJNWV.js.map +7 -0
  1167. package/dist/esm/chunk-ZMEXIPWM.js +2 -0
  1168. package/dist/esm/chunk-ZMEXIPWM.js.map +7 -0
  1169. package/dist/esm/chunk-ZRKE3NVU.js +2 -0
  1170. package/dist/esm/chunk-ZRKE3NVU.js.map +7 -0
  1171. package/dist/esm/chunk-ZSEFZM5H.js +2 -0
  1172. package/dist/esm/chunk-ZSEFZM5H.js.map +7 -0
  1173. package/dist/esm/components/_internal/base-button.d.ts +51 -0
  1174. package/dist/esm/components/_internal/base-button.d.ts.map +1 -0
  1175. package/dist/esm/components/_internal/base-button.js +2 -0
  1176. package/dist/esm/components/_internal/base-button.js.map +7 -0
  1177. package/dist/esm/components/_internal/base-button.props.d.ts +115 -0
  1178. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -0
  1179. package/dist/esm/components/_internal/base-button.props.js +2 -0
  1180. package/dist/esm/components/_internal/base-button.props.js.map +7 -0
  1181. package/dist/esm/components/_internal/base-checkbox.props.d.ts +32 -0
  1182. package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -0
  1183. package/dist/esm/components/_internal/base-checkbox.props.js +2 -0
  1184. package/dist/esm/components/_internal/base-checkbox.props.js.map +7 -0
  1185. package/dist/esm/components/_internal/base-menu.props.d.ts +121 -0
  1186. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -0
  1187. package/dist/esm/components/_internal/base-menu.props.js +2 -0
  1188. package/dist/esm/components/_internal/base-menu.props.js.map +7 -0
  1189. package/dist/esm/components/_internal/base-radio.props.d.ts +32 -0
  1190. package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -0
  1191. package/dist/esm/components/_internal/base-radio.props.js +2 -0
  1192. package/dist/esm/components/_internal/base-radio.props.js.map +7 -0
  1193. package/dist/esm/components/_internal/base-tab-list.props.d.ts +38 -0
  1194. package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -0
  1195. package/dist/esm/components/_internal/base-tab-list.props.js +2 -0
  1196. package/dist/esm/components/_internal/base-tab-list.props.js.map +7 -0
  1197. package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts +81 -0
  1198. package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -0
  1199. package/dist/esm/components/_internal/dropdown-menu-drill-down.js +2 -0
  1200. package/dist/esm/components/_internal/dropdown-menu-drill-down.js.map +7 -0
  1201. package/dist/esm/components/_internal/menu-context.d.ts +27 -0
  1202. package/dist/esm/components/_internal/menu-context.d.ts.map +1 -0
  1203. package/dist/esm/components/_internal/menu-context.js +2 -0
  1204. package/dist/esm/components/_internal/menu-context.js.map +7 -0
  1205. package/dist/esm/components/_internal/shell-bottom.d.ts +40 -0
  1206. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -0
  1207. package/dist/esm/components/_internal/shell-bottom.js +2 -0
  1208. package/dist/esm/components/_internal/shell-bottom.js.map +7 -0
  1209. package/dist/esm/components/_internal/shell-handles.d.ts +7 -0
  1210. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -0
  1211. package/dist/esm/components/_internal/shell-handles.js +2 -0
  1212. package/dist/esm/components/_internal/shell-handles.js.map +7 -0
  1213. package/dist/esm/components/_internal/shell-inspector.d.ts +40 -0
  1214. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -0
  1215. package/dist/esm/components/_internal/shell-inspector.js +2 -0
  1216. package/dist/esm/components/_internal/shell-inspector.js.map +7 -0
  1217. package/dist/esm/components/_internal/shell-prop-helpers.d.ts +7 -0
  1218. package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +1 -0
  1219. package/dist/esm/components/_internal/shell-prop-helpers.js +2 -0
  1220. package/dist/esm/components/_internal/shell-prop-helpers.js.map +7 -0
  1221. package/dist/esm/components/_internal/shell-resize.d.ts +24 -0
  1222. package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -0
  1223. package/dist/esm/components/_internal/shell-resize.js +2 -0
  1224. package/dist/esm/components/_internal/shell-resize.js.map +7 -0
  1225. package/dist/esm/components/_internal/shell-sidebar.d.ts +40 -0
  1226. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -0
  1227. package/dist/esm/components/_internal/shell-sidebar.js +2 -0
  1228. package/dist/esm/components/_internal/shell-sidebar.js.map +7 -0
  1229. package/dist/esm/components/accessible-icon.d.ts +4 -0
  1230. package/dist/esm/components/accessible-icon.d.ts.map +1 -0
  1231. package/dist/esm/components/accessible-icon.js +2 -0
  1232. package/dist/esm/components/accessible-icon.js.map +7 -0
  1233. package/dist/esm/components/accordion.d.ts +22 -0
  1234. package/dist/esm/components/accordion.d.ts.map +1 -0
  1235. package/dist/esm/components/accordion.js +2 -0
  1236. package/dist/esm/components/accordion.js.map +7 -0
  1237. package/dist/esm/components/accordion.props.d.ts +97 -0
  1238. package/dist/esm/components/accordion.props.d.ts.map +1 -0
  1239. package/dist/esm/components/accordion.props.js +2 -0
  1240. package/dist/esm/components/accordion.props.js.map +7 -0
  1241. package/dist/esm/components/alert-dialog.d.ts +29 -0
  1242. package/dist/esm/components/alert-dialog.d.ts.map +1 -0
  1243. package/dist/esm/components/alert-dialog.js +2 -0
  1244. package/dist/esm/components/alert-dialog.js.map +7 -0
  1245. package/dist/esm/components/alert-dialog.props.d.ts +70 -0
  1246. package/dist/esm/components/alert-dialog.props.d.ts.map +1 -0
  1247. package/dist/esm/components/alert-dialog.props.js +2 -0
  1248. package/dist/esm/components/alert-dialog.props.js.map +7 -0
  1249. package/dist/esm/components/aspect-ratio.d.ts +4 -0
  1250. package/dist/esm/components/aspect-ratio.d.ts.map +1 -0
  1251. package/dist/esm/components/aspect-ratio.js +2 -0
  1252. package/dist/esm/components/aspect-ratio.js.map +7 -0
  1253. package/dist/esm/components/avatar.d.ts +16 -0
  1254. package/dist/esm/components/avatar.d.ts.map +1 -0
  1255. package/dist/esm/components/avatar.js +2 -0
  1256. package/dist/esm/components/avatar.js.map +7 -0
  1257. package/dist/esm/components/avatar.props.d.ts +82 -0
  1258. package/dist/esm/components/avatar.props.d.ts.map +1 -0
  1259. package/dist/esm/components/avatar.props.js +2 -0
  1260. package/dist/esm/components/avatar.props.js.map +7 -0
  1261. package/dist/esm/components/badge.d.ts +19 -0
  1262. package/dist/esm/components/badge.d.ts.map +1 -0
  1263. package/dist/esm/components/badge.js +2 -0
  1264. package/dist/esm/components/badge.js.map +7 -0
  1265. package/dist/esm/components/badge.props.d.ts +48 -0
  1266. package/dist/esm/components/badge.props.d.ts.map +1 -0
  1267. package/dist/esm/components/badge.props.js +2 -0
  1268. package/dist/esm/components/badge.props.js.map +7 -0
  1269. package/dist/esm/components/blockquote.d.ts +12 -0
  1270. package/dist/esm/components/blockquote.d.ts.map +1 -0
  1271. package/dist/esm/components/blockquote.js +2 -0
  1272. package/dist/esm/components/blockquote.js.map +7 -0
  1273. package/dist/esm/components/blockquote.props.d.ts +39 -0
  1274. package/dist/esm/components/blockquote.props.d.ts.map +1 -0
  1275. package/dist/esm/components/blockquote.props.js +2 -0
  1276. package/dist/esm/components/blockquote.props.js.map +7 -0
  1277. package/dist/esm/components/box.d.ts +18 -0
  1278. package/dist/esm/components/box.d.ts.map +1 -0
  1279. package/dist/esm/components/box.js +2 -0
  1280. package/dist/esm/components/box.js.map +7 -0
  1281. package/dist/esm/components/box.props.d.ts +40 -0
  1282. package/dist/esm/components/box.props.d.ts.map +1 -0
  1283. package/dist/esm/components/box.props.js +2 -0
  1284. package/dist/esm/components/box.props.js.map +7 -0
  1285. package/dist/esm/components/button.d.ts +107 -0
  1286. package/dist/esm/components/button.d.ts.map +1 -0
  1287. package/dist/esm/components/button.js +2 -0
  1288. package/dist/esm/components/button.js.map +7 -0
  1289. package/dist/esm/components/button.props.d.ts +19 -0
  1290. package/dist/esm/components/button.props.d.ts.map +1 -0
  1291. package/dist/esm/components/button.props.js +2 -0
  1292. package/dist/esm/components/button.props.js.map +7 -0
  1293. package/dist/esm/components/callout.d.ts +22 -0
  1294. package/dist/esm/components/callout.d.ts.map +1 -0
  1295. package/dist/esm/components/callout.js +2 -0
  1296. package/dist/esm/components/callout.js.map +7 -0
  1297. package/dist/esm/components/callout.props.d.ts +43 -0
  1298. package/dist/esm/components/callout.props.d.ts.map +1 -0
  1299. package/dist/esm/components/callout.props.js +2 -0
  1300. package/dist/esm/components/callout.props.js.map +7 -0
  1301. package/dist/esm/components/card.d.ts +12 -0
  1302. package/dist/esm/components/card.d.ts.map +1 -0
  1303. package/dist/esm/components/card.js +2 -0
  1304. package/dist/esm/components/card.js.map +7 -0
  1305. package/dist/esm/components/card.props.d.ts +38 -0
  1306. package/dist/esm/components/card.props.d.ts.map +1 -0
  1307. package/dist/esm/components/card.props.js +2 -0
  1308. package/dist/esm/components/card.props.js.map +7 -0
  1309. package/dist/esm/components/chatbar.d.ts +233 -0
  1310. package/dist/esm/components/chatbar.d.ts.map +1 -0
  1311. package/dist/esm/components/chatbar.js +2 -0
  1312. package/dist/esm/components/chatbar.js.map +7 -0
  1313. package/dist/esm/components/checkbox-cards.d.ts +19 -0
  1314. package/dist/esm/components/checkbox-cards.d.ts.map +1 -0
  1315. package/dist/esm/components/checkbox-cards.js +2 -0
  1316. package/dist/esm/components/checkbox-cards.js.map +7 -0
  1317. package/dist/esm/components/checkbox-cards.props.d.ts +52 -0
  1318. package/dist/esm/components/checkbox-cards.props.d.ts.map +1 -0
  1319. package/dist/esm/components/checkbox-cards.props.js +2 -0
  1320. package/dist/esm/components/checkbox-cards.props.js.map +7 -0
  1321. package/dist/esm/components/checkbox-group.d.ts +16 -0
  1322. package/dist/esm/components/checkbox-group.d.ts.map +1 -0
  1323. package/dist/esm/components/checkbox-group.js +2 -0
  1324. package/dist/esm/components/checkbox-group.js.map +7 -0
  1325. package/dist/esm/components/checkbox-group.primitive.d.ts +41 -0
  1326. package/dist/esm/components/checkbox-group.primitive.d.ts.map +1 -0
  1327. package/dist/esm/components/checkbox-group.primitive.js +2 -0
  1328. package/dist/esm/components/checkbox-group.primitive.js.map +7 -0
  1329. package/dist/esm/components/checkbox-group.props.d.ts +35 -0
  1330. package/dist/esm/components/checkbox-group.props.d.ts.map +1 -0
  1331. package/dist/esm/components/checkbox-group.props.js +2 -0
  1332. package/dist/esm/components/checkbox-group.props.js.map +7 -0
  1333. package/dist/esm/components/checkbox.d.ts +13 -0
  1334. package/dist/esm/components/checkbox.d.ts.map +1 -0
  1335. package/dist/esm/components/checkbox.js +2 -0
  1336. package/dist/esm/components/checkbox.js.map +7 -0
  1337. package/dist/esm/components/checkbox.props.d.ts +2 -0
  1338. package/dist/esm/components/checkbox.props.d.ts.map +1 -0
  1339. package/dist/esm/components/checkbox.props.js +2 -0
  1340. package/dist/esm/components/checkbox.props.js.map +7 -0
  1341. package/dist/esm/components/code.d.ts +12 -0
  1342. package/dist/esm/components/code.d.ts.map +1 -0
  1343. package/dist/esm/components/code.js +2 -0
  1344. package/dist/esm/components/code.js.map +7 -0
  1345. package/dist/esm/components/code.props.d.ts +45 -0
  1346. package/dist/esm/components/code.props.d.ts.map +1 -0
  1347. package/dist/esm/components/code.props.js +2 -0
  1348. package/dist/esm/components/code.props.js.map +7 -0
  1349. package/dist/esm/components/combobox.d.ts +101 -0
  1350. package/dist/esm/components/combobox.d.ts.map +1 -0
  1351. package/dist/esm/components/combobox.js +2 -0
  1352. package/dist/esm/components/combobox.js.map +7 -0
  1353. package/dist/esm/components/combobox.props.d.ts +98 -0
  1354. package/dist/esm/components/combobox.props.d.ts.map +1 -0
  1355. package/dist/esm/components/combobox.props.js +2 -0
  1356. package/dist/esm/components/combobox.props.js.map +7 -0
  1357. package/dist/esm/components/container.d.ts +11 -0
  1358. package/dist/esm/components/container.d.ts.map +1 -0
  1359. package/dist/esm/components/container.js +2 -0
  1360. package/dist/esm/components/container.js.map +7 -0
  1361. package/dist/esm/components/container.props.d.ts +68 -0
  1362. package/dist/esm/components/container.props.d.ts.map +1 -0
  1363. package/dist/esm/components/container.props.js +2 -0
  1364. package/dist/esm/components/container.props.js.map +7 -0
  1365. package/dist/esm/components/context-menu.d.ts +54 -0
  1366. package/dist/esm/components/context-menu.d.ts.map +1 -0
  1367. package/dist/esm/components/context-menu.js +2 -0
  1368. package/dist/esm/components/context-menu.js.map +7 -0
  1369. package/dist/esm/components/context-menu.props.d.ts +2 -0
  1370. package/dist/esm/components/context-menu.props.d.ts.map +1 -0
  1371. package/dist/esm/components/context-menu.props.js +2 -0
  1372. package/dist/esm/components/context-menu.props.js.map +7 -0
  1373. package/dist/esm/components/data-list.d.ts +23 -0
  1374. package/dist/esm/components/data-list.d.ts.map +1 -0
  1375. package/dist/esm/components/data-list.js +2 -0
  1376. package/dist/esm/components/data-list.js.map +7 -0
  1377. package/dist/esm/components/data-list.props.d.ts +62 -0
  1378. package/dist/esm/components/data-list.props.d.ts.map +1 -0
  1379. package/dist/esm/components/data-list.props.js +2 -0
  1380. package/dist/esm/components/data-list.props.js.map +7 -0
  1381. package/dist/esm/components/dialog.d.ts +26 -0
  1382. package/dist/esm/components/dialog.d.ts.map +1 -0
  1383. package/dist/esm/components/dialog.js +2 -0
  1384. package/dist/esm/components/dialog.js.map +7 -0
  1385. package/dist/esm/components/dialog.props.d.ts +72 -0
  1386. package/dist/esm/components/dialog.props.d.ts.map +1 -0
  1387. package/dist/esm/components/dialog.props.js +2 -0
  1388. package/dist/esm/components/dialog.props.js.map +7 -0
  1389. package/dist/esm/components/dropdown-menu.d.ts +89 -0
  1390. package/dist/esm/components/dropdown-menu.d.ts.map +1 -0
  1391. package/dist/esm/components/dropdown-menu.js +2 -0
  1392. package/dist/esm/components/dropdown-menu.js.map +7 -0
  1393. package/dist/esm/components/dropdown-menu.props.d.ts +2 -0
  1394. package/dist/esm/components/dropdown-menu.props.d.ts.map +1 -0
  1395. package/dist/esm/components/dropdown-menu.props.js +2 -0
  1396. package/dist/esm/components/dropdown-menu.props.js.map +7 -0
  1397. package/dist/esm/components/em.d.ts +11 -0
  1398. package/dist/esm/components/em.d.ts.map +1 -0
  1399. package/dist/esm/components/em.js +2 -0
  1400. package/dist/esm/components/em.js.map +7 -0
  1401. package/dist/esm/components/em.props.d.ts +17 -0
  1402. package/dist/esm/components/em.props.d.ts.map +1 -0
  1403. package/dist/esm/components/em.props.js +2 -0
  1404. package/dist/esm/components/em.props.js.map +7 -0
  1405. package/dist/esm/components/flex.d.ts +18 -0
  1406. package/dist/esm/components/flex.d.ts.map +1 -0
  1407. package/dist/esm/components/flex.js +2 -0
  1408. package/dist/esm/components/flex.js.map +7 -0
  1409. package/dist/esm/components/flex.props.d.ts +132 -0
  1410. package/dist/esm/components/flex.props.d.ts.map +1 -0
  1411. package/dist/esm/components/flex.props.js +2 -0
  1412. package/dist/esm/components/flex.props.js.map +7 -0
  1413. package/dist/esm/components/grid.d.ts +18 -0
  1414. package/dist/esm/components/grid.d.ts.map +1 -0
  1415. package/dist/esm/components/grid.js +2 -0
  1416. package/dist/esm/components/grid.js.map +7 -0
  1417. package/dist/esm/components/grid.props.d.ts +211 -0
  1418. package/dist/esm/components/grid.props.d.ts.map +1 -0
  1419. package/dist/esm/components/grid.props.js +2 -0
  1420. package/dist/esm/components/grid.props.js.map +7 -0
  1421. package/dist/esm/components/heading.d.ts +31 -0
  1422. package/dist/esm/components/heading.d.ts.map +1 -0
  1423. package/dist/esm/components/heading.js +2 -0
  1424. package/dist/esm/components/heading.js.map +7 -0
  1425. package/dist/esm/components/heading.props.d.ts +62 -0
  1426. package/dist/esm/components/heading.props.d.ts.map +1 -0
  1427. package/dist/esm/components/heading.props.js +2 -0
  1428. package/dist/esm/components/heading.props.js.map +7 -0
  1429. package/dist/esm/components/hover-card.d.ts +17 -0
  1430. package/dist/esm/components/hover-card.d.ts.map +1 -0
  1431. package/dist/esm/components/hover-card.js +2 -0
  1432. package/dist/esm/components/hover-card.js.map +7 -0
  1433. package/dist/esm/components/hover-card.props.d.ts +57 -0
  1434. package/dist/esm/components/hover-card.props.d.ts.map +1 -0
  1435. package/dist/esm/components/hover-card.props.js +2 -0
  1436. package/dist/esm/components/hover-card.props.js.map +7 -0
  1437. package/dist/esm/components/icon-button.d.ts +106 -0
  1438. package/dist/esm/components/icon-button.d.ts.map +1 -0
  1439. package/dist/esm/components/icon-button.js +2 -0
  1440. package/dist/esm/components/icon-button.js.map +7 -0
  1441. package/dist/esm/components/icon-button.props.d.ts +2 -0
  1442. package/dist/esm/components/icon-button.props.d.ts.map +1 -0
  1443. package/dist/esm/components/icon-button.props.js +2 -0
  1444. package/dist/esm/components/icon-button.props.js.map +7 -0
  1445. package/dist/esm/components/icons.d.ts +18 -0
  1446. package/dist/esm/components/icons.d.ts.map +1 -0
  1447. package/dist/esm/components/icons.js +2 -0
  1448. package/dist/esm/components/icons.js.map +7 -0
  1449. package/dist/esm/components/image.d.ts +101 -0
  1450. package/dist/esm/components/image.d.ts.map +1 -0
  1451. package/dist/esm/components/image.js +2 -0
  1452. package/dist/esm/components/image.js.map +7 -0
  1453. package/dist/esm/components/image.props.d.ts +147 -0
  1454. package/dist/esm/components/image.props.d.ts.map +1 -0
  1455. package/dist/esm/components/image.props.js +2 -0
  1456. package/dist/esm/components/image.props.js.map +7 -0
  1457. package/dist/esm/components/index.d.ts +72 -0
  1458. package/dist/esm/components/index.d.ts.map +1 -0
  1459. package/dist/esm/components/index.js +2 -0
  1460. package/dist/esm/components/index.js.map +7 -0
  1461. package/dist/esm/components/inset.d.ts +12 -0
  1462. package/dist/esm/components/inset.d.ts.map +1 -0
  1463. package/dist/esm/components/inset.js +2 -0
  1464. package/dist/esm/components/inset.js.map +7 -0
  1465. package/dist/esm/components/inset.props.d.ts +71 -0
  1466. package/dist/esm/components/inset.props.d.ts.map +1 -0
  1467. package/dist/esm/components/inset.props.js +2 -0
  1468. package/dist/esm/components/inset.props.js.map +7 -0
  1469. package/dist/esm/components/kbd.d.ts +12 -0
  1470. package/dist/esm/components/kbd.d.ts.map +1 -0
  1471. package/dist/esm/components/kbd.js +2 -0
  1472. package/dist/esm/components/kbd.js.map +7 -0
  1473. package/dist/esm/components/kbd.props.d.ts +19 -0
  1474. package/dist/esm/components/kbd.props.d.ts.map +1 -0
  1475. package/dist/esm/components/kbd.props.js +2 -0
  1476. package/dist/esm/components/kbd.props.js.map +7 -0
  1477. package/dist/esm/components/link.d.ts +12 -0
  1478. package/dist/esm/components/link.d.ts.map +1 -0
  1479. package/dist/esm/components/link.js +2 -0
  1480. package/dist/esm/components/link.js.map +7 -0
  1481. package/dist/esm/components/link.props.d.ts +51 -0
  1482. package/dist/esm/components/link.props.d.ts.map +1 -0
  1483. package/dist/esm/components/link.props.js +2 -0
  1484. package/dist/esm/components/link.props.js.map +7 -0
  1485. package/dist/esm/components/navbar.d.ts +24 -0
  1486. package/dist/esm/components/navbar.d.ts.map +1 -0
  1487. package/dist/esm/components/navbar.js +2 -0
  1488. package/dist/esm/components/navbar.js.map +7 -0
  1489. package/dist/esm/components/navbar.props.d.ts +14 -0
  1490. package/dist/esm/components/navbar.props.d.ts.map +1 -0
  1491. package/dist/esm/components/navbar.props.js +2 -0
  1492. package/dist/esm/components/navbar.props.js.map +7 -0
  1493. package/dist/esm/components/popover.d.ts +35 -0
  1494. package/dist/esm/components/popover.d.ts.map +1 -0
  1495. package/dist/esm/components/popover.js +2 -0
  1496. package/dist/esm/components/popover.js.map +7 -0
  1497. package/dist/esm/components/popover.props.d.ts +62 -0
  1498. package/dist/esm/components/popover.props.d.ts.map +1 -0
  1499. package/dist/esm/components/popover.props.js +2 -0
  1500. package/dist/esm/components/popover.props.js.map +7 -0
  1501. package/dist/esm/components/portal.d.ts +5 -0
  1502. package/dist/esm/components/portal.d.ts.map +1 -0
  1503. package/dist/esm/components/portal.js +2 -0
  1504. package/dist/esm/components/portal.js.map +7 -0
  1505. package/dist/esm/components/progress.d.ts +14 -0
  1506. package/dist/esm/components/progress.d.ts.map +1 -0
  1507. package/dist/esm/components/progress.js +2 -0
  1508. package/dist/esm/components/progress.js.map +7 -0
  1509. package/dist/esm/components/progress.props.d.ts +35 -0
  1510. package/dist/esm/components/progress.props.d.ts.map +1 -0
  1511. package/dist/esm/components/progress.props.js +2 -0
  1512. package/dist/esm/components/progress.props.js.map +7 -0
  1513. package/dist/esm/components/quote.d.ts +11 -0
  1514. package/dist/esm/components/quote.d.ts.map +1 -0
  1515. package/dist/esm/components/quote.js +2 -0
  1516. package/dist/esm/components/quote.js.map +7 -0
  1517. package/dist/esm/components/quote.props.d.ts +17 -0
  1518. package/dist/esm/components/quote.props.d.ts.map +1 -0
  1519. package/dist/esm/components/quote.props.js +2 -0
  1520. package/dist/esm/components/quote.props.js.map +7 -0
  1521. package/dist/esm/components/radio-cards.d.ts +16 -0
  1522. package/dist/esm/components/radio-cards.d.ts.map +1 -0
  1523. package/dist/esm/components/radio-cards.js +2 -0
  1524. package/dist/esm/components/radio-cards.js.map +7 -0
  1525. package/dist/esm/components/radio-cards.props.d.ts +52 -0
  1526. package/dist/esm/components/radio-cards.props.d.ts.map +1 -0
  1527. package/dist/esm/components/radio-cards.props.js +2 -0
  1528. package/dist/esm/components/radio-cards.props.js.map +7 -0
  1529. package/dist/esm/components/radio-group.d.ts +22 -0
  1530. package/dist/esm/components/radio-group.d.ts.map +1 -0
  1531. package/dist/esm/components/radio-group.js +2 -0
  1532. package/dist/esm/components/radio-group.js.map +7 -0
  1533. package/dist/esm/components/radio-group.props.d.ts +30 -0
  1534. package/dist/esm/components/radio-group.props.d.ts.map +1 -0
  1535. package/dist/esm/components/radio-group.props.js +2 -0
  1536. package/dist/esm/components/radio-group.props.js.map +7 -0
  1537. package/dist/esm/components/radio.d.ts +17 -0
  1538. package/dist/esm/components/radio.d.ts.map +1 -0
  1539. package/dist/esm/components/radio.js +2 -0
  1540. package/dist/esm/components/radio.js.map +7 -0
  1541. package/dist/esm/components/radio.props.d.ts +2 -0
  1542. package/dist/esm/components/radio.props.d.ts.map +1 -0
  1543. package/dist/esm/components/radio.props.js +2 -0
  1544. package/dist/esm/components/radio.props.js.map +7 -0
  1545. package/dist/esm/components/reset.d.ts +9 -0
  1546. package/dist/esm/components/reset.d.ts.map +1 -0
  1547. package/dist/esm/components/reset.js +2 -0
  1548. package/dist/esm/components/reset.js.map +7 -0
  1549. package/dist/esm/components/schemas/base-button.schema.d.ts +319 -0
  1550. package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -0
  1551. package/dist/esm/components/schemas/base-button.schema.js +2 -0
  1552. package/dist/esm/components/schemas/base-button.schema.js.map +7 -0
  1553. package/dist/esm/components/schemas/button.schema.d.ts +686 -0
  1554. package/dist/esm/components/schemas/button.schema.d.ts.map +1 -0
  1555. package/dist/esm/components/schemas/button.schema.js +2 -0
  1556. package/dist/esm/components/schemas/button.schema.js.map +7 -0
  1557. package/dist/esm/components/schemas/icon-button.schema.d.ts +329 -0
  1558. package/dist/esm/components/schemas/icon-button.schema.d.ts.map +1 -0
  1559. package/dist/esm/components/schemas/icon-button.schema.js +2 -0
  1560. package/dist/esm/components/schemas/icon-button.schema.js.map +7 -0
  1561. package/dist/esm/components/schemas/index.d.ts +54 -0
  1562. package/dist/esm/components/schemas/index.d.ts.map +1 -0
  1563. package/dist/esm/components/schemas/index.js +2 -0
  1564. package/dist/esm/components/schemas/index.js.map +7 -0
  1565. package/dist/esm/components/schemas/shell.schema.d.ts +1025 -0
  1566. package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -0
  1567. package/dist/esm/components/schemas/shell.schema.js +2 -0
  1568. package/dist/esm/components/schemas/shell.schema.js.map +7 -0
  1569. package/dist/esm/components/schemas/toggle-button.schema.d.ts +1172 -0
  1570. package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +1 -0
  1571. package/dist/esm/components/schemas/toggle-button.schema.js +2 -0
  1572. package/dist/esm/components/schemas/toggle-button.schema.js.map +7 -0
  1573. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +563 -0
  1574. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +1 -0
  1575. package/dist/esm/components/schemas/toggle-icon-button.schema.js +2 -0
  1576. package/dist/esm/components/schemas/toggle-icon-button.schema.js.map +7 -0
  1577. package/dist/esm/components/scroll-area.d.ts +13 -0
  1578. package/dist/esm/components/scroll-area.d.ts.map +1 -0
  1579. package/dist/esm/components/scroll-area.js +2 -0
  1580. package/dist/esm/components/scroll-area.js.map +7 -0
  1581. package/dist/esm/components/scroll-area.props.d.ts +24 -0
  1582. package/dist/esm/components/scroll-area.props.d.ts.map +1 -0
  1583. package/dist/esm/components/scroll-area.props.js +2 -0
  1584. package/dist/esm/components/scroll-area.props.js.map +7 -0
  1585. package/dist/esm/components/section.d.ts +11 -0
  1586. package/dist/esm/components/section.d.ts.map +1 -0
  1587. package/dist/esm/components/section.js +2 -0
  1588. package/dist/esm/components/section.js.map +7 -0
  1589. package/dist/esm/components/section.props.d.ts +52 -0
  1590. package/dist/esm/components/section.props.d.ts.map +1 -0
  1591. package/dist/esm/components/section.props.js +2 -0
  1592. package/dist/esm/components/section.props.js.map +7 -0
  1593. package/dist/esm/components/segmented-control.d.ts +24 -0
  1594. package/dist/esm/components/segmented-control.d.ts.map +1 -0
  1595. package/dist/esm/components/segmented-control.js +2 -0
  1596. package/dist/esm/components/segmented-control.js.map +7 -0
  1597. package/dist/esm/components/segmented-control.props.d.ts +39 -0
  1598. package/dist/esm/components/segmented-control.props.d.ts.map +1 -0
  1599. package/dist/esm/components/segmented-control.props.js +2 -0
  1600. package/dist/esm/components/segmented-control.props.js.map +7 -0
  1601. package/dist/esm/components/select.d.ts +35 -0
  1602. package/dist/esm/components/select.d.ts.map +1 -0
  1603. package/dist/esm/components/select.js +2 -0
  1604. package/dist/esm/components/select.js.map +7 -0
  1605. package/dist/esm/components/select.props.d.ts +67 -0
  1606. package/dist/esm/components/select.props.d.ts.map +1 -0
  1607. package/dist/esm/components/select.props.js +2 -0
  1608. package/dist/esm/components/select.props.js.map +7 -0
  1609. package/dist/esm/components/separator.d.ts +12 -0
  1610. package/dist/esm/components/separator.d.ts.map +1 -0
  1611. package/dist/esm/components/separator.js +2 -0
  1612. package/dist/esm/components/separator.js.map +7 -0
  1613. package/dist/esm/components/separator.props.d.ts +32 -0
  1614. package/dist/esm/components/separator.props.d.ts.map +1 -0
  1615. package/dist/esm/components/separator.props.js +2 -0
  1616. package/dist/esm/components/separator.props.js.map +7 -0
  1617. package/dist/esm/components/sheet.d.ts +82 -0
  1618. package/dist/esm/components/sheet.d.ts.map +1 -0
  1619. package/dist/esm/components/sheet.js +2 -0
  1620. package/dist/esm/components/sheet.js.map +7 -0
  1621. package/dist/esm/components/shell.context.d.ts +143 -0
  1622. package/dist/esm/components/shell.context.d.ts.map +1 -0
  1623. package/dist/esm/components/shell.context.js +2 -0
  1624. package/dist/esm/components/shell.context.js.map +7 -0
  1625. package/dist/esm/components/shell.d.ts +107 -0
  1626. package/dist/esm/components/shell.d.ts.map +1 -0
  1627. package/dist/esm/components/shell.hooks.d.ts +26 -0
  1628. package/dist/esm/components/shell.hooks.d.ts.map +1 -0
  1629. package/dist/esm/components/shell.hooks.js +2 -0
  1630. package/dist/esm/components/shell.hooks.js.map +7 -0
  1631. package/dist/esm/components/shell.js +2 -0
  1632. package/dist/esm/components/shell.js.map +7 -0
  1633. package/dist/esm/components/shell.types.d.ts +53 -0
  1634. package/dist/esm/components/shell.types.d.ts.map +1 -0
  1635. package/dist/esm/components/shell.types.js +2 -0
  1636. package/dist/esm/components/shell.types.js.map +7 -0
  1637. package/dist/esm/components/sidebar.d.ts +146 -0
  1638. package/dist/esm/components/sidebar.d.ts.map +1 -0
  1639. package/dist/esm/components/sidebar.js +2 -0
  1640. package/dist/esm/components/sidebar.js.map +7 -0
  1641. package/dist/esm/components/sidebar.props.d.ts +66 -0
  1642. package/dist/esm/components/sidebar.props.d.ts.map +1 -0
  1643. package/dist/esm/components/sidebar.props.js +2 -0
  1644. package/dist/esm/components/sidebar.props.js.map +7 -0
  1645. package/dist/esm/components/skeleton.d.ts +12 -0
  1646. package/dist/esm/components/skeleton.d.ts.map +1 -0
  1647. package/dist/esm/components/skeleton.js +2 -0
  1648. package/dist/esm/components/skeleton.js.map +7 -0
  1649. package/dist/esm/components/skeleton.props.d.ts +44 -0
  1650. package/dist/esm/components/skeleton.props.d.ts.map +1 -0
  1651. package/dist/esm/components/skeleton.props.js +2 -0
  1652. package/dist/esm/components/skeleton.props.js.map +7 -0
  1653. package/dist/esm/components/slider.d.ts +18 -0
  1654. package/dist/esm/components/slider.d.ts.map +1 -0
  1655. package/dist/esm/components/slider.js +2 -0
  1656. package/dist/esm/components/slider.js.map +7 -0
  1657. package/dist/esm/components/slider.props.d.ts +40 -0
  1658. package/dist/esm/components/slider.props.d.ts.map +1 -0
  1659. package/dist/esm/components/slider.props.js +2 -0
  1660. package/dist/esm/components/slider.props.js.map +7 -0
  1661. package/dist/esm/components/slot.d.ts +5 -0
  1662. package/dist/esm/components/slot.d.ts.map +1 -0
  1663. package/dist/esm/components/slot.js +2 -0
  1664. package/dist/esm/components/slot.js.map +7 -0
  1665. package/dist/esm/components/spinner.d.ts +12 -0
  1666. package/dist/esm/components/spinner.d.ts.map +1 -0
  1667. package/dist/esm/components/spinner.js +2 -0
  1668. package/dist/esm/components/spinner.js.map +7 -0
  1669. package/dist/esm/components/spinner.props.d.ts +15 -0
  1670. package/dist/esm/components/spinner.props.d.ts.map +1 -0
  1671. package/dist/esm/components/spinner.props.js +2 -0
  1672. package/dist/esm/components/spinner.props.js.map +7 -0
  1673. package/dist/esm/components/strong.d.ts +11 -0
  1674. package/dist/esm/components/strong.d.ts.map +1 -0
  1675. package/dist/esm/components/strong.js +2 -0
  1676. package/dist/esm/components/strong.js.map +7 -0
  1677. package/dist/esm/components/strong.props.d.ts +17 -0
  1678. package/dist/esm/components/strong.props.d.ts.map +1 -0
  1679. package/dist/esm/components/strong.props.js +2 -0
  1680. package/dist/esm/components/strong.props.js.map +7 -0
  1681. package/dist/esm/components/switch.d.ts +13 -0
  1682. package/dist/esm/components/switch.d.ts.map +1 -0
  1683. package/dist/esm/components/switch.js +2 -0
  1684. package/dist/esm/components/switch.js.map +7 -0
  1685. package/dist/esm/components/switch.props.d.ts +45 -0
  1686. package/dist/esm/components/switch.props.d.ts.map +1 -0
  1687. package/dist/esm/components/switch.props.js +2 -0
  1688. package/dist/esm/components/switch.props.js.map +7 -0
  1689. package/dist/esm/components/tab-nav.d.ts +19 -0
  1690. package/dist/esm/components/tab-nav.d.ts.map +1 -0
  1691. package/dist/esm/components/tab-nav.js +2 -0
  1692. package/dist/esm/components/tab-nav.js.map +7 -0
  1693. package/dist/esm/components/tab-nav.props.d.ts +12 -0
  1694. package/dist/esm/components/tab-nav.props.d.ts.map +1 -0
  1695. package/dist/esm/components/tab-nav.props.js +2 -0
  1696. package/dist/esm/components/tab-nav.props.js.map +7 -0
  1697. package/dist/esm/components/table.d.ts +32 -0
  1698. package/dist/esm/components/table.d.ts.map +1 -0
  1699. package/dist/esm/components/table.js +2 -0
  1700. package/dist/esm/components/table.js.map +7 -0
  1701. package/dist/esm/components/table.props.d.ts +110 -0
  1702. package/dist/esm/components/table.props.d.ts.map +1 -0
  1703. package/dist/esm/components/table.props.js +2 -0
  1704. package/dist/esm/components/table.props.js.map +7 -0
  1705. package/dist/esm/components/tabs.d.ts +25 -0
  1706. package/dist/esm/components/tabs.d.ts.map +1 -0
  1707. package/dist/esm/components/tabs.js +2 -0
  1708. package/dist/esm/components/tabs.js.map +7 -0
  1709. package/dist/esm/components/tabs.props.d.ts +13 -0
  1710. package/dist/esm/components/tabs.props.d.ts.map +1 -0
  1711. package/dist/esm/components/tabs.props.js +2 -0
  1712. package/dist/esm/components/tabs.props.js.map +7 -0
  1713. package/dist/esm/components/text-area.d.ts +15 -0
  1714. package/dist/esm/components/text-area.d.ts.map +1 -0
  1715. package/dist/esm/components/text-area.js +2 -0
  1716. package/dist/esm/components/text-area.js.map +7 -0
  1717. package/dist/esm/components/text-area.props.d.ts +67 -0
  1718. package/dist/esm/components/text-area.props.d.ts.map +1 -0
  1719. package/dist/esm/components/text-area.props.js +2 -0
  1720. package/dist/esm/components/text-area.props.js.map +7 -0
  1721. package/dist/esm/components/text-field.d.ts +22 -0
  1722. package/dist/esm/components/text-field.d.ts.map +1 -0
  1723. package/dist/esm/components/text-field.js +2 -0
  1724. package/dist/esm/components/text-field.js.map +7 -0
  1725. package/dist/esm/components/text-field.props.d.ts +126 -0
  1726. package/dist/esm/components/text-field.props.d.ts.map +1 -0
  1727. package/dist/esm/components/text-field.props.js +2 -0
  1728. package/dist/esm/components/text-field.props.js.map +7 -0
  1729. package/dist/esm/components/text.d.ts +25 -0
  1730. package/dist/esm/components/text.d.ts.map +1 -0
  1731. package/dist/esm/components/text.js +2 -0
  1732. package/dist/esm/components/text.js.map +7 -0
  1733. package/dist/esm/components/text.props.d.ts +61 -0
  1734. package/dist/esm/components/text.props.d.ts.map +1 -0
  1735. package/dist/esm/components/text.props.js +2 -0
  1736. package/dist/esm/components/text.props.js.map +7 -0
  1737. package/dist/esm/components/theme-panel.d.ts +25 -0
  1738. package/dist/esm/components/theme-panel.d.ts.map +1 -0
  1739. package/dist/esm/components/theme-panel.js +2 -0
  1740. package/dist/esm/components/theme-panel.js.map +7 -0
  1741. package/dist/esm/components/theme.d.ts +43 -0
  1742. package/dist/esm/components/theme.d.ts.map +1 -0
  1743. package/dist/esm/components/theme.js +2 -0
  1744. package/dist/esm/components/theme.js.map +7 -0
  1745. package/dist/esm/components/theme.props.d.ts +112 -0
  1746. package/dist/esm/components/theme.props.d.ts.map +1 -0
  1747. package/dist/esm/components/theme.props.js +2 -0
  1748. package/dist/esm/components/theme.props.js.map +7 -0
  1749. package/dist/esm/components/toggle-button.d.ts +63 -0
  1750. package/dist/esm/components/toggle-button.d.ts.map +1 -0
  1751. package/dist/esm/components/toggle-button.js +2 -0
  1752. package/dist/esm/components/toggle-button.js.map +7 -0
  1753. package/dist/esm/components/toggle-icon-button.d.ts +107 -0
  1754. package/dist/esm/components/toggle-icon-button.d.ts.map +1 -0
  1755. package/dist/esm/components/toggle-icon-button.js +2 -0
  1756. package/dist/esm/components/toggle-icon-button.js.map +7 -0
  1757. package/dist/esm/components/toolbar.d.ts +40 -0
  1758. package/dist/esm/components/toolbar.d.ts.map +1 -0
  1759. package/dist/esm/components/toolbar.js +2 -0
  1760. package/dist/esm/components/toolbar.js.map +7 -0
  1761. package/dist/esm/components/tooltip.d.ts +14 -0
  1762. package/dist/esm/components/tooltip.d.ts.map +1 -0
  1763. package/dist/esm/components/tooltip.js +2 -0
  1764. package/dist/esm/components/tooltip.js.map +7 -0
  1765. package/dist/esm/components/tooltip.props.d.ts +31 -0
  1766. package/dist/esm/components/tooltip.props.d.ts.map +1 -0
  1767. package/dist/esm/components/tooltip.props.js +2 -0
  1768. package/dist/esm/components/tooltip.props.js.map +7 -0
  1769. package/dist/esm/components/user-card.d.ts +12 -0
  1770. package/dist/esm/components/user-card.d.ts.map +1 -0
  1771. package/dist/esm/components/user-card.js +2 -0
  1772. package/dist/esm/components/user-card.js.map +7 -0
  1773. package/dist/esm/components/user-card.props.d.ts +63 -0
  1774. package/dist/esm/components/user-card.props.d.ts.map +1 -0
  1775. package/dist/esm/components/user-card.props.js +2 -0
  1776. package/dist/esm/components/user-card.props.js.map +7 -0
  1777. package/dist/esm/components/virtual-menu.d.ts +116 -0
  1778. package/dist/esm/components/virtual-menu.d.ts.map +1 -0
  1779. package/dist/esm/components/virtual-menu.js +2 -0
  1780. package/dist/esm/components/virtual-menu.js.map +7 -0
  1781. package/dist/esm/components/visually-hidden.d.ts +5 -0
  1782. package/dist/esm/components/visually-hidden.d.ts.map +1 -0
  1783. package/dist/esm/components/visually-hidden.js +2 -0
  1784. package/dist/esm/components/visually-hidden.js.map +7 -0
  1785. package/dist/esm/helpers/component-props.d.ts +8 -0
  1786. package/dist/esm/helpers/component-props.d.ts.map +1 -0
  1787. package/dist/esm/helpers/component-props.js +2 -0
  1788. package/dist/esm/helpers/component-props.js.map +7 -0
  1789. package/dist/esm/helpers/extract-margin-props.d.ts +12 -0
  1790. package/dist/esm/helpers/extract-margin-props.d.ts.map +1 -0
  1791. package/dist/esm/helpers/extract-margin-props.js +2 -0
  1792. package/dist/esm/helpers/extract-margin-props.js.map +7 -0
  1793. package/dist/esm/helpers/extract-props.d.ts +23 -0
  1794. package/dist/esm/helpers/extract-props.d.ts.map +1 -0
  1795. package/dist/esm/helpers/extract-props.js +2 -0
  1796. package/dist/esm/helpers/extract-props.js.map +7 -0
  1797. package/dist/esm/helpers/font-config.d.ts +106 -0
  1798. package/dist/esm/helpers/font-config.d.ts.map +1 -0
  1799. package/dist/esm/helpers/font-config.js +2 -0
  1800. package/dist/esm/helpers/font-config.js.map +7 -0
  1801. package/dist/esm/helpers/get-margin-styles.d.ts +3 -0
  1802. package/dist/esm/helpers/get-margin-styles.d.ts.map +1 -0
  1803. package/dist/esm/helpers/get-margin-styles.js +2 -0
  1804. package/dist/esm/helpers/get-margin-styles.js.map +7 -0
  1805. package/dist/esm/helpers/get-matching-gray-color.d.ts +5 -0
  1806. package/dist/esm/helpers/get-matching-gray-color.d.ts.map +1 -0
  1807. package/dist/esm/helpers/get-matching-gray-color.js +2 -0
  1808. package/dist/esm/helpers/get-matching-gray-color.js.map +7 -0
  1809. package/dist/esm/helpers/get-responsive-styles.d.ts +26 -0
  1810. package/dist/esm/helpers/get-responsive-styles.d.ts.map +1 -0
  1811. package/dist/esm/helpers/get-responsive-styles.js +2 -0
  1812. package/dist/esm/helpers/get-responsive-styles.js.map +7 -0
  1813. package/dist/esm/helpers/get-subtree.d.ts +13 -0
  1814. package/dist/esm/helpers/get-subtree.d.ts.map +1 -0
  1815. package/dist/esm/helpers/get-subtree.js +2 -0
  1816. package/dist/esm/helpers/get-subtree.js.map +7 -0
  1817. package/dist/esm/helpers/has-own-property.d.ts +4 -0
  1818. package/dist/esm/helpers/has-own-property.d.ts.map +1 -0
  1819. package/dist/esm/helpers/has-own-property.js +2 -0
  1820. package/dist/esm/helpers/has-own-property.js.map +7 -0
  1821. package/dist/esm/helpers/index.d.ts +16 -0
  1822. package/dist/esm/helpers/index.d.ts.map +1 -0
  1823. package/dist/esm/helpers/index.js +2 -0
  1824. package/dist/esm/helpers/index.js.map +7 -0
  1825. package/dist/esm/helpers/inert.d.ts +3 -0
  1826. package/dist/esm/helpers/inert.d.ts.map +1 -0
  1827. package/dist/esm/helpers/inert.js +2 -0
  1828. package/dist/esm/helpers/inert.js.map +7 -0
  1829. package/dist/esm/helpers/input-attributes.d.ts +7 -0
  1830. package/dist/esm/helpers/input-attributes.d.ts.map +1 -0
  1831. package/dist/esm/helpers/input-attributes.js +2 -0
  1832. package/dist/esm/helpers/input-attributes.js.map +7 -0
  1833. package/dist/esm/helpers/is-responsive-object.d.ts +3 -0
  1834. package/dist/esm/helpers/is-responsive-object.d.ts.map +1 -0
  1835. package/dist/esm/helpers/is-responsive-object.js +2 -0
  1836. package/dist/esm/helpers/is-responsive-object.js.map +7 -0
  1837. package/dist/esm/helpers/map-prop-values.d.ts +10 -0
  1838. package/dist/esm/helpers/map-prop-values.d.ts.map +1 -0
  1839. package/dist/esm/helpers/map-prop-values.js +2 -0
  1840. package/dist/esm/helpers/map-prop-values.js.map +7 -0
  1841. package/dist/esm/helpers/merge-styles.d.ts +4 -0
  1842. package/dist/esm/helpers/merge-styles.d.ts.map +1 -0
  1843. package/dist/esm/helpers/merge-styles.js +2 -0
  1844. package/dist/esm/helpers/merge-styles.js.map +7 -0
  1845. package/dist/esm/helpers/normalize-to-px.d.ts +10 -0
  1846. package/dist/esm/helpers/normalize-to-px.d.ts.map +1 -0
  1847. package/dist/esm/helpers/normalize-to-px.js +2 -0
  1848. package/dist/esm/helpers/normalize-to-px.js.map +7 -0
  1849. package/dist/esm/helpers/require-react-element.d.ts +4 -0
  1850. package/dist/esm/helpers/require-react-element.d.ts.map +1 -0
  1851. package/dist/esm/helpers/require-react-element.js +2 -0
  1852. package/dist/esm/helpers/require-react-element.js.map +7 -0
  1853. package/dist/esm/hooks/index.d.ts +5 -0
  1854. package/dist/esm/hooks/index.d.ts.map +1 -0
  1855. package/dist/esm/hooks/index.js +2 -0
  1856. package/dist/esm/hooks/index.js.map +7 -0
  1857. package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts +9 -0
  1858. package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -0
  1859. package/dist/esm/hooks/use-body-pointer-events-cleanup.js +2 -0
  1860. package/dist/esm/hooks/use-body-pointer-events-cleanup.js.map +7 -0
  1861. package/dist/esm/hooks/use-breakpoint.d.ts +11 -0
  1862. package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -0
  1863. package/dist/esm/hooks/use-breakpoint.js +2 -0
  1864. package/dist/esm/hooks/use-breakpoint.js.map +7 -0
  1865. package/dist/esm/hooks/use-live-announcer.d.ts +6 -0
  1866. package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -0
  1867. package/dist/esm/hooks/use-live-announcer.js +2 -0
  1868. package/dist/esm/hooks/use-live-announcer.js.map +7 -0
  1869. package/dist/esm/hooks/use-toggle-state.d.ts +37 -0
  1870. package/dist/esm/hooks/use-toggle-state.d.ts.map +1 -0
  1871. package/dist/esm/hooks/use-toggle-state.js +2 -0
  1872. package/dist/esm/hooks/use-toggle-state.js.map +7 -0
  1873. package/dist/esm/hooks/use-tooltip-wrapper.d.ts +29 -0
  1874. package/dist/esm/hooks/use-tooltip-wrapper.d.ts.map +1 -0
  1875. package/dist/esm/hooks/use-tooltip-wrapper.js +2 -0
  1876. package/dist/esm/hooks/use-tooltip-wrapper.js.map +7 -0
  1877. package/dist/esm/index.d.ts +3 -0
  1878. package/dist/esm/index.d.ts.map +1 -0
  1879. package/dist/esm/index.js +2 -0
  1880. package/dist/esm/index.js.map +7 -0
  1881. package/dist/esm/package.json +6 -0
  1882. package/dist/esm/props/as-child.prop.d.ts +11 -0
  1883. package/dist/esm/props/as-child.prop.d.ts.map +1 -0
  1884. package/dist/esm/props/as-child.prop.js +2 -0
  1885. package/dist/esm/props/as-child.prop.js.map +7 -0
  1886. package/dist/esm/props/color.prop.d.ts +18 -0
  1887. package/dist/esm/props/color.prop.d.ts.map +1 -0
  1888. package/dist/esm/props/color.prop.js +2 -0
  1889. package/dist/esm/props/color.prop.js.map +7 -0
  1890. package/dist/esm/props/font-family.prop.d.ts +9 -0
  1891. package/dist/esm/props/font-family.prop.d.ts.map +1 -0
  1892. package/dist/esm/props/font-family.prop.js +2 -0
  1893. package/dist/esm/props/font-family.prop.js.map +7 -0
  1894. package/dist/esm/props/gap.props.d.ts +61 -0
  1895. package/dist/esm/props/gap.props.d.ts.map +1 -0
  1896. package/dist/esm/props/gap.props.js +2 -0
  1897. package/dist/esm/props/gap.props.js.map +7 -0
  1898. package/dist/esm/props/height.props.d.ts +58 -0
  1899. package/dist/esm/props/height.props.d.ts.map +1 -0
  1900. package/dist/esm/props/height.props.js +2 -0
  1901. package/dist/esm/props/height.props.js.map +7 -0
  1902. package/dist/esm/props/high-contrast.prop.d.ts +9 -0
  1903. package/dist/esm/props/high-contrast.prop.d.ts.map +1 -0
  1904. package/dist/esm/props/high-contrast.prop.js +2 -0
  1905. package/dist/esm/props/high-contrast.prop.js.map +7 -0
  1906. package/dist/esm/props/index.d.ts +69 -0
  1907. package/dist/esm/props/index.d.ts.map +1 -0
  1908. package/dist/esm/props/index.js +2 -0
  1909. package/dist/esm/props/index.js.map +7 -0
  1910. package/dist/esm/props/layout.props.d.ts +472 -0
  1911. package/dist/esm/props/layout.props.d.ts.map +1 -0
  1912. package/dist/esm/props/layout.props.js +2 -0
  1913. package/dist/esm/props/layout.props.js.map +7 -0
  1914. package/dist/esm/props/leading-trim.prop.d.ts +10 -0
  1915. package/dist/esm/props/leading-trim.prop.d.ts.map +1 -0
  1916. package/dist/esm/props/leading-trim.prop.js +2 -0
  1917. package/dist/esm/props/leading-trim.prop.js.map +7 -0
  1918. package/dist/esm/props/margin.props.d.ts +142 -0
  1919. package/dist/esm/props/margin.props.d.ts.map +1 -0
  1920. package/dist/esm/props/margin.props.js +2 -0
  1921. package/dist/esm/props/margin.props.js.map +7 -0
  1922. package/dist/esm/props/padding.props.d.ts +142 -0
  1923. package/dist/esm/props/padding.props.d.ts.map +1 -0
  1924. package/dist/esm/props/padding.props.js +2 -0
  1925. package/dist/esm/props/padding.props.js.map +7 -0
  1926. package/dist/esm/props/prop-def.d.ts +60 -0
  1927. package/dist/esm/props/prop-def.d.ts.map +1 -0
  1928. package/dist/esm/props/prop-def.js +2 -0
  1929. package/dist/esm/props/prop-def.js.map +7 -0
  1930. package/dist/esm/props/radius.prop.d.ts +10 -0
  1931. package/dist/esm/props/radius.prop.d.ts.map +1 -0
  1932. package/dist/esm/props/radius.prop.js +2 -0
  1933. package/dist/esm/props/radius.prop.js.map +7 -0
  1934. package/dist/esm/props/shadow.props.d.ts +24 -0
  1935. package/dist/esm/props/shadow.props.d.ts.map +1 -0
  1936. package/dist/esm/props/shadow.props.js +2 -0
  1937. package/dist/esm/props/shadow.props.js.map +7 -0
  1938. package/dist/esm/props/text-align.prop.d.ts +10 -0
  1939. package/dist/esm/props/text-align.prop.d.ts.map +1 -0
  1940. package/dist/esm/props/text-align.prop.js +2 -0
  1941. package/dist/esm/props/text-align.prop.js.map +7 -0
  1942. package/dist/esm/props/text-wrap.prop.d.ts +10 -0
  1943. package/dist/esm/props/text-wrap.prop.d.ts.map +1 -0
  1944. package/dist/esm/props/text-wrap.prop.js +2 -0
  1945. package/dist/esm/props/text-wrap.prop.js.map +7 -0
  1946. package/dist/esm/props/truncate.prop.d.ts +8 -0
  1947. package/dist/esm/props/truncate.prop.d.ts.map +1 -0
  1948. package/dist/esm/props/truncate.prop.js +2 -0
  1949. package/dist/esm/props/truncate.prop.js.map +7 -0
  1950. package/dist/esm/props/weight.prop.d.ts +10 -0
  1951. package/dist/esm/props/weight.prop.d.ts.map +1 -0
  1952. package/dist/esm/props/weight.prop.js +2 -0
  1953. package/dist/esm/props/weight.prop.js.map +7 -0
  1954. package/dist/esm/props/width.props.d.ts +58 -0
  1955. package/dist/esm/props/width.props.d.ts.map +1 -0
  1956. package/dist/esm/props/width.props.js +2 -0
  1957. package/dist/esm/props/width.props.js.map +7 -0
  1958. package/layout/components.css +251 -0
  1959. package/layout/tokens.css +29 -0
  1960. package/layout/utilities.css +13158 -0
  1961. package/layout.css +13436 -0
  1962. package/package.json +210 -0
  1963. package/postcss-breakpoints.cjs +110 -0
  1964. package/postcss-whitespace.cjs +27 -0
  1965. package/schemas/base-button.d.ts +2 -0
  1966. package/schemas/base-button.json +284 -0
  1967. package/schemas/button.d.ts +2 -0
  1968. package/schemas/button.json +535 -0
  1969. package/schemas/icon-button.d.ts +2 -0
  1970. package/schemas/icon-button.json +318 -0
  1971. package/schemas/index.d.ts +2 -0
  1972. package/schemas/index.json +2016 -0
  1973. package/schemas/schemas.d.ts +29 -0
  1974. package/schemas/shell-bottom.json +168 -0
  1975. package/schemas/shell-content.json +34 -0
  1976. package/schemas/shell-handle.json +34 -0
  1977. package/schemas/shell-header.json +42 -0
  1978. package/schemas/shell-inspector.json +171 -0
  1979. package/schemas/shell-panel.json +167 -0
  1980. package/schemas/shell-rail.json +132 -0
  1981. package/schemas/shell-root.json +54 -0
  1982. package/schemas/shell-sidebar.json +182 -0
  1983. package/schemas/shell-trigger.json +76 -0
  1984. package/schemas/toggle-button.d.ts +2 -0
  1985. package/schemas/toggle-button.json +543 -0
  1986. package/schemas/toggle-icon-button.d.ts +2 -0
  1987. package/schemas/toggle-icon-button.json +326 -0
  1988. package/schemas-json.d.ts +12 -0
  1989. package/src/components/_internal/base-button.css +694 -0
  1990. package/src/components/_internal/base-button.props.ts +119 -0
  1991. package/src/components/_internal/base-button.tsx +237 -0
  1992. package/src/components/_internal/base-card.css +640 -0
  1993. package/src/components/_internal/base-checkbox.css +436 -0
  1994. package/src/components/_internal/base-checkbox.props.ts +22 -0
  1995. package/src/components/_internal/base-dialog.css +151 -0
  1996. package/src/components/_internal/base-menu.css +504 -0
  1997. package/src/components/_internal/base-menu.props.ts +102 -0
  1998. package/src/components/_internal/base-radio.css +396 -0
  1999. package/src/components/_internal/base-radio.props.ts +22 -0
  2000. package/src/components/_internal/base-sidebar-menu.css +240 -0
  2001. package/src/components/_internal/base-sidebar.css +116 -0
  2002. package/src/components/_internal/base-tab-list.css +240 -0
  2003. package/src/components/_internal/base-tab-list.props.ts +35 -0
  2004. package/src/components/_internal/dropdown-menu-drill-down.tsx +249 -0
  2005. package/src/components/_internal/menu-context.tsx +53 -0
  2006. package/src/components/_internal/shell-bottom.tsx +424 -0
  2007. package/src/components/_internal/shell-handles.tsx +223 -0
  2008. package/src/components/_internal/shell-inspector.tsx +424 -0
  2009. package/src/components/_internal/shell-prop-helpers.ts +54 -0
  2010. package/src/components/_internal/shell-resize.tsx +30 -0
  2011. package/src/components/_internal/shell-sidebar.tsx +505 -0
  2012. package/src/components/accessible-icon.tsx +3 -0
  2013. package/src/components/accordion.css +648 -0
  2014. package/src/components/accordion.props.tsx +90 -0
  2015. package/src/components/accordion.tsx +209 -0
  2016. package/src/components/alert-dialog.css +1 -0
  2017. package/src/components/alert-dialog.props.tsx +22 -0
  2018. package/src/components/alert-dialog.tsx +249 -0
  2019. package/src/components/animations.css +155 -0
  2020. package/src/components/aspect-ratio.tsx +3 -0
  2021. package/src/components/avatar.css +642 -0
  2022. package/src/components/avatar.props.tsx +54 -0
  2023. package/src/components/avatar.tsx +129 -0
  2024. package/src/components/badge.css +246 -0
  2025. package/src/components/badge.props.tsx +32 -0
  2026. package/src/components/badge.tsx +102 -0
  2027. package/src/components/blockquote.css +5 -0
  2028. package/src/components/blockquote.props.tsx +29 -0
  2029. package/src/components/blockquote.tsx +35 -0
  2030. package/src/components/box.css +4 -0
  2031. package/src/components/box.props.tsx +44 -0
  2032. package/src/components/box.tsx +34 -0
  2033. package/src/components/button.css +211 -0
  2034. package/src/components/button.props.tsx +18 -0
  2035. package/src/components/button.tsx +179 -0
  2036. package/src/components/callout.css +196 -0
  2037. package/src/components/callout.props.tsx +30 -0
  2038. package/src/components/callout.tsx +115 -0
  2039. package/src/components/card.css +25 -0
  2040. package/src/components/card.props.tsx +27 -0
  2041. package/src/components/card.tsx +39 -0
  2042. package/src/components/chatbar.css +529 -0
  2043. package/src/components/chatbar.tsx +1274 -0
  2044. package/src/components/checkbox-cards.css +139 -0
  2045. package/src/components/checkbox-cards.props.tsx +29 -0
  2046. package/src/components/checkbox-cards.tsx +143 -0
  2047. package/src/components/checkbox-group.css +35 -0
  2048. package/src/components/checkbox-group.primitive.tsx +208 -0
  2049. package/src/components/checkbox-group.props.tsx +9 -0
  2050. package/src/components/checkbox-group.tsx +164 -0
  2051. package/src/components/checkbox.css +18 -0
  2052. package/src/components/checkbox.props.tsx +1 -0
  2053. package/src/components/checkbox.tsx +67 -0
  2054. package/src/components/code.css +185 -0
  2055. package/src/components/code.props.tsx +32 -0
  2056. package/src/components/code.tsx +40 -0
  2057. package/src/components/combobox.css +202 -0
  2058. package/src/components/combobox.props.tsx +69 -0
  2059. package/src/components/combobox.tsx +631 -0
  2060. package/src/components/container.css +43 -0
  2061. package/src/components/container.props.tsx +84 -0
  2062. package/src/components/container.tsx +59 -0
  2063. package/src/components/context-menu.css +6 -0
  2064. package/src/components/context-menu.props.tsx +6 -0
  2065. package/src/components/context-menu.tsx +445 -0
  2066. package/src/components/data-list.css +249 -0
  2067. package/src/components/data-list.props.tsx +54 -0
  2068. package/src/components/data-list.tsx +100 -0
  2069. package/src/components/dialog.css +13 -0
  2070. package/src/components/dialog.props.tsx +49 -0
  2071. package/src/components/dialog.tsx +234 -0
  2072. package/src/components/dropdown-menu.css +207 -0
  2073. package/src/components/dropdown-menu.props.tsx +8 -0
  2074. package/src/components/dropdown-menu.tsx +701 -0
  2075. package/src/components/em.css +16 -0
  2076. package/src/components/em.props.tsx +11 -0
  2077. package/src/components/em.tsx +22 -0
  2078. package/src/components/flex.css +7 -0
  2079. package/src/components/flex.props.tsx +129 -0
  2080. package/src/components/flex.tsx +34 -0
  2081. package/src/components/grid.css +10 -0
  2082. package/src/components/grid.props.tsx +239 -0
  2083. package/src/components/grid.tsx +34 -0
  2084. package/src/components/heading.css +101 -0
  2085. package/src/components/heading.props.tsx +39 -0
  2086. package/src/components/heading.tsx +68 -0
  2087. package/src/components/hover-card.css +39 -0
  2088. package/src/components/hover-card.props.tsx +37 -0
  2089. package/src/components/hover-card.tsx +72 -0
  2090. package/src/components/icon-button.css +157 -0
  2091. package/src/components/icon-button.props.tsx +1 -0
  2092. package/src/components/icon-button.tsx +153 -0
  2093. package/src/components/icons.tsx +149 -0
  2094. package/src/components/image.css +230 -0
  2095. package/src/components/image.props.ts +163 -0
  2096. package/src/components/image.tsx +316 -0
  2097. package/src/components/index.css +76 -0
  2098. package/src/components/index.tsx +82 -0
  2099. package/src/components/inset.css +111 -0
  2100. package/src/components/inset.props.tsx +90 -0
  2101. package/src/components/inset.tsx +28 -0
  2102. package/src/components/kbd.css +207 -0
  2103. package/src/components/kbd.props.tsx +27 -0
  2104. package/src/components/kbd.tsx +30 -0
  2105. package/src/components/layout.css +5 -0
  2106. package/src/components/link.css +94 -0
  2107. package/src/components/link.props.tsx +34 -0
  2108. package/src/components/link.tsx +37 -0
  2109. package/src/components/navbar.css +70 -0
  2110. package/src/components/navbar.props.tsx +22 -0
  2111. package/src/components/navbar.tsx +169 -0
  2112. package/src/components/popover.css +109 -0
  2113. package/src/components/popover.props.tsx +40 -0
  2114. package/src/components/popover.tsx +282 -0
  2115. package/src/components/portal.tsx +4 -0
  2116. package/src/components/progress.css +232 -0
  2117. package/src/components/progress.props.tsx +23 -0
  2118. package/src/components/progress.tsx +53 -0
  2119. package/src/components/quote.css +16 -0
  2120. package/src/components/quote.props.tsx +11 -0
  2121. package/src/components/quote.tsx +22 -0
  2122. package/src/components/radio-cards.css +123 -0
  2123. package/src/components/radio-cards.props.tsx +29 -0
  2124. package/src/components/radio-cards.tsx +93 -0
  2125. package/src/components/radio-group.css +18 -0
  2126. package/src/components/radio-group.props.tsx +21 -0
  2127. package/src/components/radio-group.tsx +142 -0
  2128. package/src/components/radio.css +1 -0
  2129. package/src/components/radio.props.tsx +1 -0
  2130. package/src/components/radio.tsx +50 -0
  2131. package/src/components/reset.css +246 -0
  2132. package/src/components/reset.tsx +22 -0
  2133. package/src/components/schemas/base-button.schema.ts +339 -0
  2134. package/src/components/schemas/button.schema.ts +198 -0
  2135. package/src/components/schemas/icon-button.schema.ts +142 -0
  2136. package/src/components/schemas/index.ts +114 -0
  2137. package/src/components/schemas/shell.schema.ts +380 -0
  2138. package/src/components/schemas/toggle-button.schema.ts +122 -0
  2139. package/src/components/schemas/toggle-icon-button.schema.ts +195 -0
  2140. package/src/components/scroll-area.css +147 -0
  2141. package/src/components/scroll-area.props.tsx +19 -0
  2142. package/src/components/scroll-area.tsx +106 -0
  2143. package/src/components/section.css +25 -0
  2144. package/src/components/section.props.tsx +63 -0
  2145. package/src/components/section.tsx +36 -0
  2146. package/src/components/segmented-control.css +623 -0
  2147. package/src/components/segmented-control.props.tsx +34 -0
  2148. package/src/components/segmented-control.tsx +108 -0
  2149. package/src/components/select.css +1048 -0
  2150. package/src/components/select.props.tsx +53 -0
  2151. package/src/components/select.tsx +281 -0
  2152. package/src/components/separator.css +50 -0
  2153. package/src/components/separator.props.tsx +28 -0
  2154. package/src/components/separator.tsx +22 -0
  2155. package/src/components/sheet.css +142 -0
  2156. package/src/components/sheet.tsx +309 -0
  2157. package/src/components/shell.context.tsx +154 -0
  2158. package/src/components/shell.css +643 -0
  2159. package/src/components/shell.hooks.ts +178 -0
  2160. package/src/components/shell.tsx +1621 -0
  2161. package/src/components/shell.types.ts +65 -0
  2162. package/src/components/sidebar.css +1394 -0
  2163. package/src/components/sidebar.props.tsx +57 -0
  2164. package/src/components/sidebar.tsx +880 -0
  2165. package/src/components/skeleton.css +55 -0
  2166. package/src/components/skeleton.props.tsx +14 -0
  2167. package/src/components/skeleton.tsx +48 -0
  2168. package/src/components/slider.css +403 -0
  2169. package/src/components/slider.props.tsx +25 -0
  2170. package/src/components/slider.tsx +246 -0
  2171. package/src/components/slot.tsx +4 -0
  2172. package/src/components/spinner.css +100 -0
  2173. package/src/components/spinner.props.tsx +13 -0
  2174. package/src/components/spinner.tsx +64 -0
  2175. package/src/components/strong.css +13 -0
  2176. package/src/components/strong.props.tsx +11 -0
  2177. package/src/components/strong.tsx +24 -0
  2178. package/src/components/switch.css +241 -0
  2179. package/src/components/switch.props.tsx +33 -0
  2180. package/src/components/switch.tsx +48 -0
  2181. package/src/components/tab-nav.css +5 -0
  2182. package/src/components/tab-nav.props.tsx +13 -0
  2183. package/src/components/tab-nav.tsx +81 -0
  2184. package/src/components/table.css +158 -0
  2185. package/src/components/table.props.tsx +83 -0
  2186. package/src/components/table.tsx +137 -0
  2187. package/src/components/tabs.css +12 -0
  2188. package/src/components/tabs.props.tsx +12 -0
  2189. package/src/components/tabs.tsx +108 -0
  2190. package/src/components/text-area.css +655 -0
  2191. package/src/components/text-area.props.tsx +43 -0
  2192. package/src/components/text-area.tsx +93 -0
  2193. package/src/components/text-field.css +901 -0
  2194. package/src/components/text-field.props.tsx +86 -0
  2195. package/src/components/text-field.tsx +416 -0
  2196. package/src/components/text.css +110 -0
  2197. package/src/components/text.props.tsx +38 -0
  2198. package/src/components/text.tsx +65 -0
  2199. package/src/components/theme-panel.css +67 -0
  2200. package/src/components/theme-panel.tsx +770 -0
  2201. package/src/components/theme.props.tsx +96 -0
  2202. package/src/components/theme.tsx +305 -0
  2203. package/src/components/toggle-button.tsx +100 -0
  2204. package/src/components/toggle-icon-button.tsx +167 -0
  2205. package/src/components/toolbar.css +203 -0
  2206. package/src/components/toolbar.tsx +242 -0
  2207. package/src/components/tooltip.css +39 -0
  2208. package/src/components/tooltip.props.tsx +20 -0
  2209. package/src/components/tooltip.tsx +63 -0
  2210. package/src/components/user-card.css +29 -0
  2211. package/src/components/user-card.props.tsx +45 -0
  2212. package/src/components/user-card.tsx +102 -0
  2213. package/src/components/virtual-menu.css +49 -0
  2214. package/src/components/virtual-menu.tsx +482 -0
  2215. package/src/components/visually-hidden.tsx +4 -0
  2216. package/src/helpers/component-props.ts +19 -0
  2217. package/src/helpers/extract-margin-props.ts +6 -0
  2218. package/src/helpers/extract-props.ts +124 -0
  2219. package/src/helpers/font-config.ts +194 -0
  2220. package/src/helpers/get-margin-styles.ts +81 -0
  2221. package/src/helpers/get-matching-gray-color.ts +40 -0
  2222. package/src/helpers/get-responsive-styles.ts +152 -0
  2223. package/src/helpers/get-subtree.ts +22 -0
  2224. package/src/helpers/has-own-property.ts +9 -0
  2225. package/src/helpers/index.ts +15 -0
  2226. package/src/helpers/inert.ts +5 -0
  2227. package/src/helpers/input-attributes.ts +82 -0
  2228. package/src/helpers/is-responsive-object.ts +19 -0
  2229. package/src/helpers/map-prop-values.ts +40 -0
  2230. package/src/helpers/merge-styles.ts +22 -0
  2231. package/src/helpers/normalize-to-px.ts +42 -0
  2232. package/src/helpers/require-react-element.ts +20 -0
  2233. package/src/hooks/index.ts +4 -0
  2234. package/src/hooks/use-body-pointer-events-cleanup.ts +112 -0
  2235. package/src/hooks/use-breakpoint.ts +63 -0
  2236. package/src/hooks/use-live-announcer.ts +79 -0
  2237. package/src/hooks/use-toggle-state.ts +72 -0
  2238. package/src/hooks/use-tooltip-wrapper.ts +28 -0
  2239. package/src/index.ts +2 -0
  2240. package/src/props/as-child.prop.ts +15 -0
  2241. package/src/props/color.prop.ts +36 -0
  2242. package/src/props/font-family.prop.ts +15 -0
  2243. package/src/props/gap.props.ts +69 -0
  2244. package/src/props/height.props.ts +64 -0
  2245. package/src/props/high-contrast.prop.ts +13 -0
  2246. package/src/props/index.ts +73 -0
  2247. package/src/props/layout.props.ts +427 -0
  2248. package/src/props/leading-trim.prop.ts +16 -0
  2249. package/src/props/margin.props.ts +155 -0
  2250. package/src/props/padding.props.ts +154 -0
  2251. package/src/props/prop-def.ts +93 -0
  2252. package/src/props/radius.prop.ts +15 -0
  2253. package/src/props/shadow.props.ts +30 -0
  2254. package/src/props/text-align.prop.ts +16 -0
  2255. package/src/props/text-wrap.prop.ts +16 -0
  2256. package/src/props/truncate.prop.ts +12 -0
  2257. package/src/props/weight.prop.ts +16 -0
  2258. package/src/props/width.props.ts +64 -0
  2259. package/src/styles/breakpoints.css +5 -0
  2260. package/src/styles/fonts.css +35 -0
  2261. package/src/styles/index.css +6 -0
  2262. package/src/styles/layout.css +3 -0
  2263. package/src/styles/scrollbar.css +31 -0
  2264. package/src/styles/tokens/base.css +9 -0
  2265. package/src/styles/tokens/blur.css +35 -0
  2266. package/src/styles/tokens/color.css +1196 -0
  2267. package/src/styles/tokens/colors/amber.css +36 -0
  2268. package/src/styles/tokens/colors/blue.css +33 -0
  2269. package/src/styles/tokens/colors/bronze.css +33 -0
  2270. package/src/styles/tokens/colors/brown.css +33 -0
  2271. package/src/styles/tokens/colors/crimson.css +33 -0
  2272. package/src/styles/tokens/colors/cyan.css +33 -0
  2273. package/src/styles/tokens/colors/gold.css +33 -0
  2274. package/src/styles/tokens/colors/grass.css +33 -0
  2275. package/src/styles/tokens/colors/gray.css +33 -0
  2276. package/src/styles/tokens/colors/green.css +33 -0
  2277. package/src/styles/tokens/colors/indigo.css +33 -0
  2278. package/src/styles/tokens/colors/iris.css +33 -0
  2279. package/src/styles/tokens/colors/jade.css +33 -0
  2280. package/src/styles/tokens/colors/lime.css +36 -0
  2281. package/src/styles/tokens/colors/mauve.css +33 -0
  2282. package/src/styles/tokens/colors/mint.css +36 -0
  2283. package/src/styles/tokens/colors/olive.css +33 -0
  2284. package/src/styles/tokens/colors/orange.css +33 -0
  2285. package/src/styles/tokens/colors/pink.css +33 -0
  2286. package/src/styles/tokens/colors/plum.css +33 -0
  2287. package/src/styles/tokens/colors/purple.css +33 -0
  2288. package/src/styles/tokens/colors/red.css +33 -0
  2289. package/src/styles/tokens/colors/ruby.css +33 -0
  2290. package/src/styles/tokens/colors/sage.css +33 -0
  2291. package/src/styles/tokens/colors/sand.css +33 -0
  2292. package/src/styles/tokens/colors/sky.css +36 -0
  2293. package/src/styles/tokens/colors/slate.css +33 -0
  2294. package/src/styles/tokens/colors/teal.css +33 -0
  2295. package/src/styles/tokens/colors/tomato.css +33 -0
  2296. package/src/styles/tokens/colors/violet.css +33 -0
  2297. package/src/styles/tokens/colors/yellow.css +36 -0
  2298. package/src/styles/tokens/constants.css +195 -0
  2299. package/src/styles/tokens/cursor.css +11 -0
  2300. package/src/styles/tokens/index.css +38 -0
  2301. package/src/styles/tokens/layout.css +2 -0
  2302. package/src/styles/tokens/opacity.css +32 -0
  2303. package/src/styles/tokens/radius.css +45 -0
  2304. package/src/styles/tokens/scaling.css +17 -0
  2305. package/src/styles/tokens/shadow.css +130 -0
  2306. package/src/styles/tokens/space.css +20 -0
  2307. package/src/styles/tokens/transition.css +189 -0
  2308. package/src/styles/tokens/typography.css +351 -0
  2309. package/src/styles/utilities/align-content.css +33 -0
  2310. package/src/styles/utilities/align-items.css +21 -0
  2311. package/src/styles/utilities/align-self.css +21 -0
  2312. package/src/styles/utilities/display.css +37 -0
  2313. package/src/styles/utilities/flex-basis.css +28 -0
  2314. package/src/styles/utilities/flex-direction.css +17 -0
  2315. package/src/styles/utilities/flex-grow.css +40 -0
  2316. package/src/styles/utilities/flex-shrink.css +40 -0
  2317. package/src/styles/utilities/flex-wrap.css +13 -0
  2318. package/src/styles/utilities/font-weight.css +33 -0
  2319. package/src/styles/utilities/gap.css +193 -0
  2320. package/src/styles/utilities/grid-area.css +33 -0
  2321. package/src/styles/utilities/grid-auto-flow.css +21 -0
  2322. package/src/styles/utilities/grid-column-end.css +61 -0
  2323. package/src/styles/utilities/grid-column-start.css +61 -0
  2324. package/src/styles/utilities/grid-column.css +61 -0
  2325. package/src/styles/utilities/grid-row-end.css +61 -0
  2326. package/src/styles/utilities/grid-row-start.css +61 -0
  2327. package/src/styles/utilities/grid-row.css +61 -0
  2328. package/src/styles/utilities/grid-template-areas.css +28 -0
  2329. package/src/styles/utilities/grid-template-columns.css +61 -0
  2330. package/src/styles/utilities/grid-template-rows.css +61 -0
  2331. package/src/styles/utilities/height.css +28 -0
  2332. package/src/styles/utilities/index.css +10 -0
  2333. package/src/styles/utilities/inset.css +354 -0
  2334. package/src/styles/utilities/justify-content.css +17 -0
  2335. package/src/styles/utilities/justify-items.css +21 -0
  2336. package/src/styles/utilities/justify-self.css +21 -0
  2337. package/src/styles/utilities/layout.css +37 -0
  2338. package/src/styles/utilities/leading-trim.css +32 -0
  2339. package/src/styles/utilities/margin.css +1161 -0
  2340. package/src/styles/utilities/max-height.css +28 -0
  2341. package/src/styles/utilities/max-width.css +28 -0
  2342. package/src/styles/utilities/min-height.css +28 -0
  2343. package/src/styles/utilities/min-width.css +28 -0
  2344. package/src/styles/utilities/overflow.css +49 -0
  2345. package/src/styles/utilities/padding.css +623 -0
  2346. package/src/styles/utilities/position.css +21 -0
  2347. package/src/styles/utilities/resize.css +14 -0
  2348. package/src/styles/utilities/table-layout.css +8 -0
  2349. package/src/styles/utilities/text-align.css +13 -0
  2350. package/src/styles/utilities/text-wrap.css +19 -0
  2351. package/src/styles/utilities/truncate.css +5 -0
  2352. package/src/styles/utilities/vertical-align.css +17 -0
  2353. package/src/styles/utilities/width.css +28 -0
  2354. package/styles.css +41954 -0
  2355. package/tokens/base.css +1628 -0
  2356. package/tokens/colors/amber.css +129 -0
  2357. package/tokens/colors/blue.css +123 -0
  2358. package/tokens/colors/bronze.css +123 -0
  2359. package/tokens/colors/brown.css +123 -0
  2360. package/tokens/colors/crimson.css +123 -0
  2361. package/tokens/colors/cyan.css +123 -0
  2362. package/tokens/colors/gold.css +123 -0
  2363. package/tokens/colors/grass.css +123 -0
  2364. package/tokens/colors/gray.css +123 -0
  2365. package/tokens/colors/green.css +123 -0
  2366. package/tokens/colors/indigo.css +123 -0
  2367. package/tokens/colors/iris.css +123 -0
  2368. package/tokens/colors/jade.css +123 -0
  2369. package/tokens/colors/lime.css +129 -0
  2370. package/tokens/colors/mauve.css +123 -0
  2371. package/tokens/colors/mint.css +129 -0
  2372. package/tokens/colors/olive.css +123 -0
  2373. package/tokens/colors/orange.css +123 -0
  2374. package/tokens/colors/pink.css +123 -0
  2375. package/tokens/colors/plum.css +123 -0
  2376. package/tokens/colors/purple.css +123 -0
  2377. package/tokens/colors/red.css +123 -0
  2378. package/tokens/colors/ruby.css +123 -0
  2379. package/tokens/colors/sage.css +123 -0
  2380. package/tokens/colors/sand.css +123 -0
  2381. package/tokens/colors/sky.css +129 -0
  2382. package/tokens/colors/slate.css +123 -0
  2383. package/tokens/colors/teal.css +123 -0
  2384. package/tokens/colors/tomato.css +123 -0
  2385. package/tokens/colors/violet.css +123 -0
  2386. package/tokens/colors/yellow.css +129 -0
  2387. package/tokens.css +5010 -0
  2388. package/utilities.css +13821 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/index.tsx", "../../../src/components/accessible-icon.tsx", "../../../src/components/accordion.tsx", "../../../src/props/as-child.prop.ts", "../../../src/props/color.prop.ts", "../../../src/props/high-contrast.prop.ts", "../../../src/props/radius.prop.ts", "../../../src/components/accordion.props.tsx", "../../../src/helpers/extract-props.ts", "../../../src/props/prop-def.ts", "../../../src/helpers/has-own-property.ts", "../../../src/helpers/is-responsive-object.ts", "../../../src/helpers/get-responsive-styles.ts", "../../../src/helpers/merge-styles.ts", "../../../src/components/alert-dialog.tsx", "../../../src/props/width.props.ts", "../../../src/props/height.props.ts", "../../../src/components/dialog.props.tsx", "../../../src/components/alert-dialog.props.tsx", "../../../src/components/heading.tsx", "../../../src/props/leading-trim.prop.ts", "../../../src/props/text-align.prop.ts", "../../../src/props/text-wrap.prop.ts", "../../../src/props/truncate.prop.ts", "../../../src/props/font-family.prop.ts", "../../../src/props/weight.prop.ts", "../../../src/components/heading.props.tsx", "../../../src/props/margin.props.ts", "../../../src/components/text.tsx", "../../../src/components/text.props.tsx", "../../../src/components/theme.tsx", "../../../src/helpers/get-matching-gray-color.ts", "../../../src/components/theme.props.tsx", "../../../src/helpers/require-react-element.ts", "../../../src/components/aspect-ratio.tsx", "../../../src/components/avatar.tsx", "../../../src/components/avatar.props.tsx", "../../../src/helpers/get-subtree.ts", "../../../src/components/badge.tsx", "../../../src/components/badge.props.tsx", "../../../src/components/tooltip.tsx", "../../../src/components/tooltip.props.tsx", "../../../src/components/blockquote.tsx", "../../../src/components/box.tsx", "../../../src/components/slot.tsx", "../../../src/components/box.props.tsx", "../../../src/props/padding.props.ts", "../../../src/props/layout.props.ts", "../../../src/components/button.tsx", "../../../src/components/_internal/base-button.tsx", "../../../src/components/_internal/base-button.props.ts", "../../../src/components/flex.tsx", "../../../src/props/gap.props.ts", "../../../src/components/flex.props.tsx", "../../../src/components/spinner.tsx", "../../../src/components/spinner.props.tsx", "../../../src/components/visually-hidden.tsx", "../../../src/helpers/map-prop-values.ts", "../../../src/hooks/use-tooltip-wrapper.ts", "../../../src/components/callout.tsx", "../../../src/components/callout.props.tsx", "../../../src/components/card.tsx", "../../../src/components/card.props.tsx", "../../../src/components/checkbox-cards.tsx", "../../../src/components/checkbox-group.primitive.tsx", "../../../src/components/grid.props.tsx", "../../../src/components/checkbox-cards.props.tsx", "../../../src/components/_internal/base-checkbox.props.ts", "../../../src/components/grid.tsx", "../../../src/components/icons.tsx", "../../../src/components/checkbox-group.tsx", "../../../src/components/checkbox-group.props.tsx", "../../../src/components/checkbox.tsx", "../../../src/components/code.tsx", "../../../src/components/code.props.tsx", "../../../src/components/container.tsx", "../../../src/components/container.props.tsx", "../../../src/components/context-menu.tsx", "../../../src/components/scroll-area.tsx", "../../../src/components/scroll-area.props.tsx", "../../../src/helpers/extract-margin-props.ts", "../../../src/helpers/get-margin-styles.ts", "../../../src/components/_internal/base-menu.props.ts", "../../../src/components/kbd.tsx", "../../../src/components/kbd.props.tsx", "../../../src/components/data-list.tsx", "../../../src/components/data-list.props.tsx", "../../../src/components/dialog.tsx", "../../../src/hooks/use-body-pointer-events-cleanup.ts", "../../../src/components/dropdown-menu.tsx", "../../../src/components/_internal/dropdown-menu-drill-down.tsx", "../../../src/hooks/use-breakpoint.ts", "../../../src/components/shell.types.ts", "../../../src/components/_internal/menu-context.tsx", "../../../src/components/combobox.tsx", "../../../src/components/combobox.props.tsx", "../../../src/components/popover.tsx", "../../../src/components/popover.props.tsx", "../../../src/components/text-field.props.tsx", "../../../src/components/em.tsx", "../../../src/components/em.props.tsx", "../../../src/components/hover-card.tsx", "../../../src/components/hover-card.props.tsx", "../../../src/components/icon-button.tsx", "../../../src/components/image.tsx", "../../../src/components/image.props.ts", "../../../src/components/skeleton.tsx", "../../../src/helpers/inert.ts", "../../../src/components/skeleton.props.tsx", "../../../src/components/inset.tsx", "../../../src/components/inset.props.tsx", "../../../src/components/link.tsx", "../../../src/components/link.props.tsx", "../../../src/components/navbar.tsx", "../../../src/components/navbar.props.tsx", "../../../src/components/portal.tsx", "../../../src/components/progress.tsx", "../../../src/components/progress.props.tsx", "../../../src/components/quote.tsx", "../../../src/components/quote.props.tsx", "../../../src/components/radio-cards.tsx", "../../../src/components/radio-cards.props.tsx", "../../../src/components/radio-group.tsx", "../../../src/components/radio-group.props.tsx", "../../../src/components/radio.tsx", "../../../src/components/_internal/base-radio.props.ts", "../../../src/components/reset.tsx", "../../../src/components/segmented-control.tsx", "../../../src/components/segmented-control.props.tsx", "../../../src/components/section.tsx", "../../../src/components/section.props.tsx", "../../../src/components/select.tsx", "../../../src/components/select.props.tsx", "../../../src/components/separator.tsx", "../../../src/components/separator.props.tsx", "../../../src/components/slider.tsx", "../../../src/components/slider.props.tsx", "../../../src/components/strong.tsx", "../../../src/components/strong.props.tsx", "../../../src/components/switch.tsx", "../../../src/components/switch.props.tsx", "../../../src/components/tab-nav.tsx", "../../../src/components/_internal/base-tab-list.props.ts", "../../../src/components/tab-nav.props.tsx", "../../../src/components/table.tsx", "../../../src/components/table.props.tsx", "../../../src/components/tabs.tsx", "../../../src/components/tabs.props.tsx", "../../../src/components/text-area.tsx", "../../../src/components/text-area.props.tsx", "../../../src/components/text-field.tsx", "../../../src/components/theme-panel.tsx", "../../../src/components/toggle-button.tsx", "../../../src/hooks/use-toggle-state.ts", "../../../src/hooks/use-live-announcer.ts", "../../../src/components/toggle-icon-button.tsx", "../../../src/components/toolbar.tsx", "../../../src/components/user-card.tsx", "../../../src/components/user-card.props.tsx", "../../../src/components/virtual-menu.tsx", "../../../src/components/sidebar.tsx", "../../../src/components/sidebar.props.tsx", "../../../src/components/shell.tsx", "../../../src/components/sheet.tsx", "../../../src/components/shell.hooks.ts", "../../../src/components/shell.context.tsx", "../../../src/components/_internal/shell-resize.tsx", "../../../src/components/_internal/shell-handles.tsx", "../../../src/components/_internal/shell-prop-helpers.ts", "../../../src/components/_internal/shell-sidebar.tsx", "../../../src/helpers/normalize-to-px.ts", "../../../src/components/_internal/shell-bottom.tsx", "../../../src/components/_internal/shell-inspector.tsx", "../../../src/components/chatbar.tsx"],
4
+ "sourcesContent": ["export { AccessibleIcon, type AccessibleIconProps } from './accessible-icon.js';\nexport * as Accordion from './accordion.js';\nexport * as AlertDialog from './alert-dialog.js';\nexport { AspectRatio, type AspectRatioProps } from './aspect-ratio.js';\nexport { Avatar, type AvatarProps } from './avatar.js';\nexport { Badge, type BadgeProps } from './badge.js';\nexport { Blockquote, type BlockquoteProps } from './blockquote.js';\nexport { Box, type BoxProps } from './box.js';\nexport { Button, type ButtonProps } from './button.js';\nexport * as Callout from './callout.js';\nexport { Card, type CardProps } from './card.js';\nexport * as CheckboxCards from './checkbox-cards.js';\nexport * as CheckboxGroup from './checkbox-group.js';\nexport { Checkbox, type CheckboxProps } from './checkbox.js';\nexport { Code, type CodeProps } from './code.js';\nexport { Container, type ContainerProps } from './container.js';\nexport * as ContextMenu from './context-menu.js';\nexport * as DataList from './data-list.js';\nexport * as Dialog from './dialog.js';\nexport * as DropdownMenu from './dropdown-menu.js';\nexport * as Combobox from './combobox.js';\nexport { Em, type EmProps } from './em.js';\nexport { Flex, type FlexProps } from './flex.js';\nexport { Grid, type GridProps } from './grid.js';\nexport { Heading, type HeadingProps } from './heading.js';\nexport * as HoverCard from './hover-card.js';\nexport { IconButton, type IconButtonProps } from './icon-button.js';\nexport {\n type IconProps,\n ChevronDownIcon,\n ThickCheckIcon,\n ThickChevronRightIcon,\n ThickDividerHorizontalIcon,\n} from './icons.js';\nexport { Image, type ImageProps } from './image.js';\nexport { Inset, type InsetProps } from './inset.js';\nexport { Kbd, type KbdProps } from './kbd.js';\nexport { Link, type LinkProps } from './link.js';\nexport * as Navbar from './navbar.js';\nexport * as Popover from './popover.js';\nexport { Portal, type PortalProps } from './portal.js';\nexport { Progress, type ProgressProps } from './progress.js';\nexport { Quote, type QuoteProps } from './quote.js';\nexport * as RadioCards from './radio-cards.js';\nexport * as RadioGroup from './radio-group.js';\nexport { Radio, type RadioProps } from './radio.js';\nexport { Reset, type ResetProps } from './reset.js';\nexport { ScrollArea, type ScrollAreaProps } from './scroll-area.js';\nexport * as SegmentedControl from './segmented-control.js';\nexport { Section, type SectionProps } from './section.js';\nexport * as Select from './select.js';\nexport { Separator, type SeparatorProps } from './separator.js';\nexport { Skeleton, type SkeletonProps } from './skeleton.js';\nexport { Slider, type SliderProps } from './slider.js';\nexport { Slot, Slottable } from './slot.js';\nexport { Spinner, type SpinnerProps } from './spinner.js';\nexport { Strong, type StrongProps } from './strong.js';\nexport { Switch, type SwitchProps } from './switch.js';\nexport * as TabNav from './tab-nav.js';\nexport * as Table from './table.js';\nexport * as Tabs from './tabs.js';\nexport { TextArea, type TextAreaProps } from './text-area.js';\nexport * as TextField from './text-field.js';\nexport { Text, type TextProps } from './text.js';\nexport {\n ThemePanel,\n ThemePanelContent,\n type ThemePanelProps,\n type ThemePanelContentProps,\n} from './theme-panel.js';\nexport { Theme, ThemeContext, type ThemeContextValue, type ThemeProps, useThemeContext } from './theme.js';\nexport { ToggleButton, type ToggleButtonProps } from './toggle-button.js';\nexport { ToggleIconButton, type ToggleIconButtonProps } from './toggle-icon-button.js';\nexport { Toolbar } from './toolbar.js';\nexport { Tooltip, type TooltipProps } from './tooltip.js';\nexport { UserCard, type UserCardProps } from './user-card.js';\nexport { VirtualMenu, type VirtualMenuProps, type VirtualMenuItemProps, type VirtualMenuRenderItemProps } from './virtual-menu.js';\nexport { VisuallyHidden, type VisuallyHiddenProps } from './visually-hidden.js';\nexport * as Sidebar from './sidebar.js';\nexport * as Shell from './shell.js';\nexport * as Sheet from './sheet.js';\nexport * as Chatbar from './chatbar.js';\n", "import { AccessibleIcon as AccessibleIconPrimitive } from 'radix-ui';\nexport const AccessibleIcon = AccessibleIconPrimitive.Root;\nexport type AccessibleIconProps = AccessibleIconPrimitive.AccessibleIconProps;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\n\nimport {\n accordionRootPropDefs,\n accordionItemPropDefs,\n accordionHeaderPropDefs,\n accordionTriggerPropDefs,\n accordionContentPropDefs,\n} from './accordion.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type {\n AccordionRootOwnProps,\n AccordionItemOwnProps,\n AccordionHeaderOwnProps,\n AccordionTriggerOwnProps,\n AccordionContentOwnProps,\n} from './accordion.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n// Root component\ntype AccordionRootElement = React.ElementRef<typeof AccordionPrimitive.Root>;\ninterface AccordionRootProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Root, RemovedProps>,\n AccordionRootOwnProps {}\n\nconst AccordionRoot = React.forwardRef<AccordionRootElement, AccordionRootProps>(\n (props, forwardedRef) => {\n const { className, panelBackground, material, flush, radius, color, ...extractedRadixProps } =\n extractProps(props, accordionRootPropDefs);\n\n const radixProps = extractedRadixProps as React.ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n >;\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial = material ?? panelBackground;\n\n // Ensure single accordions can collapse by default unless explicitly set\n if (radixProps.type === 'single' && radixProps.collapsible === undefined) {\n radixProps.collapsible = true;\n }\n\n // Handle Home/End key navigation for multi-item accordions\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (radixProps.type === 'multiple') {\n const items = event.currentTarget.querySelectorAll('[data-radix-accordion-item]');\n\n if (event.key === 'Home') {\n event.preventDefault();\n const firstTrigger = items[0]?.querySelector(\n '[data-radix-accordion-trigger]',\n ) as HTMLElement;\n firstTrigger?.focus();\n } else if (event.key === 'End') {\n event.preventDefault();\n const lastTrigger = items[items.length - 1]?.querySelector(\n '[data-radix-accordion-trigger]',\n ) as HTMLElement;\n lastTrigger?.focus();\n }\n }\n },\n [radixProps.type],\n );\n\n return (\n <AccordionPrimitive.Root\n {...radixProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionRoot', className)}\n data-accent-color={color}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n data-flush={flush || undefined}\n data-radius={radius}\n onKeyDown={handleKeyDown}\n />\n );\n },\n);\nAccordionRoot.displayName = 'Accordion.Root';\n\n// Item component\ntype AccordionItemElement = React.ElementRef<typeof AccordionPrimitive.Item>;\ninterface AccordionItemProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Item, RemovedProps>,\n AccordionItemOwnProps {}\n\nconst AccordionItem = React.forwardRef<AccordionItemElement, AccordionItemProps>(\n (props, forwardedRef) => {\n const { className, ...itemProps } = extractProps(props, accordionItemPropDefs);\n\n return (\n <AccordionPrimitive.Item\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionItem', className)}\n />\n );\n },\n);\nAccordionItem.displayName = 'Accordion.Item';\n\n// Header component\ntype AccordionHeaderElement = React.ElementRef<typeof AccordionPrimitive.Header>;\ninterface AccordionHeaderProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Header, RemovedProps>,\n AccordionHeaderOwnProps {}\n\nconst AccordionHeader = React.forwardRef<AccordionHeaderElement, AccordionHeaderProps>(\n (props, forwardedRef) => {\n const { className, ...headerProps } = extractProps(props, accordionHeaderPropDefs);\n\n return (\n <AccordionPrimitive.Header\n {...headerProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionHeader', className)}\n />\n );\n },\n);\nAccordionHeader.displayName = 'Accordion.Header';\n\n// Trigger component\ntype AccordionTriggerElement = React.ElementRef<typeof AccordionPrimitive.Trigger>;\ninterface AccordionTriggerProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Trigger, RemovedProps>,\n AccordionTriggerOwnProps {}\n\nconst AccordionTrigger = React.forwardRef<AccordionTriggerElement, AccordionTriggerProps>(\n ({ children, ...props }, forwardedRef) => {\n const { className, ...triggerProps } = extractProps(props, accordionTriggerPropDefs);\n\n // Radix UI handles focus management automatically\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n return (\n <AccordionPrimitive.Trigger\n {...triggerProps}\n ref={(node) => {\n triggerRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n }}\n className={classNames('rt-AccordionTrigger', className)}\n >\n {children}\n </AccordionPrimitive.Trigger>\n );\n },\n);\nAccordionTrigger.displayName = 'Accordion.Trigger';\n\n// Content component\ntype AccordionContentElement = React.ElementRef<typeof AccordionPrimitive.Content>;\ninterface AccordionContentProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Content, RemovedProps>,\n AccordionContentOwnProps {}\n\nconst AccordionContent = React.forwardRef<AccordionContentElement, AccordionContentProps>(\n (props, forwardedRef) => {\n const { className, children, ...contentProps } = extractProps(props, accordionContentPropDefs);\n\n return (\n <AccordionPrimitive.Content\n {...contentProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionContent', className)}\n aria-live=\"polite\"\n >\n <div className=\"rt-AccordionContentInner\">{children}</div>\n </AccordionPrimitive.Content>\n );\n },\n);\nAccordionContent.displayName = 'Accordion.Content';\n\nexport {\n AccordionRoot as Root,\n AccordionItem as Item,\n AccordionHeader as Header,\n AccordionTrigger as Trigger,\n AccordionContent as Content,\n};\n\nexport type {\n AccordionRootProps as RootProps,\n AccordionItemProps as ItemProps,\n AccordionHeaderProps as HeaderProps,\n AccordionTriggerProps as TriggerProps,\n AccordionContentProps as ContentProps,\n};\n", "import type { PropDef } from './prop-def.js';\n\nconst asChildPropDef = {\n /**\n * Composes the component into its immediate child instead of rendering its own HTML element.\n * You\u2019ll have to provide a single React Element child.\n */\n asChild: {\n type: 'boolean',\n },\n} satisfies {\n asChild: PropDef<boolean>;\n};\n\nexport { asChildPropDef };\n", "import type { PropDef } from './prop-def.js';\n\n// prettier-ignore\nconst accentColors = ['gray', 'gold', 'bronze', 'brown', 'yellow', 'amber', 'orange', 'tomato', 'red', 'ruby', 'crimson', 'pink', 'plum', 'purple', 'violet', 'iris', 'indigo', 'blue', 'cyan', 'teal', 'jade', 'green', 'grass', 'lime', 'mint', 'sky'] as const;\n\nconst grayColors = ['auto', 'gray', 'mauve', 'slate', 'sage', 'olive', 'sand'] as const;\n\nconst colorPropDef = {\n color: {\n type: 'enum',\n values: accentColors,\n default: undefined as (typeof accentColors)[number] | undefined,\n },\n} satisfies {\n color: PropDef<(typeof accentColors)[number]>;\n};\n\n// 1. When used on components that compose Text, sets the color of the text to the current accent.\n// 2. Defines accent color for descendant text components\u00A0with `highContrast={true}`.\nconst accentColorPropDef = {\n color: {\n type: 'enum',\n values: accentColors,\n default: '' as (typeof accentColors)[number],\n },\n} satisfies {\n color: PropDef<(typeof accentColors)[number]>;\n};\n\nexport {\n accentColorPropDef,\n colorPropDef,\n //\n accentColors,\n grayColors,\n};\n", "import type { PropDef } from './prop-def.js';\n\nconst highContrastPropDef = {\n highContrast: {\n type: 'boolean',\n className: 'rt-high-contrast',\n default: undefined,\n },\n} satisfies {\n highContrast: PropDef<boolean>;\n};\n\nexport { highContrastPropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst radii = ['none', 'small', 'medium', 'large', 'full'] as const;\n\nconst radiusPropDef = {\n radius: {\n type: 'enum',\n values: radii,\n default: undefined,\n },\n} satisfies {\n radius: PropDef<(typeof radii)[number]>;\n};\n\nexport { radiusPropDef, radii };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['classic', 'soft', 'surface', 'outline', 'ghost'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst accordionRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n ...colorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n material: { type: 'enum', values: panelBackgrounds, default: undefined },\n /**\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n flush: { type: 'boolean', default: false },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n flush: PropDef<boolean>;\n};\n\nconst accordionItemPropDefs = {\n ...asChildPropDef,\n} satisfies {\n asChild: PropDef<boolean>;\n};\n\nconst accordionHeaderPropDefs = {\n ...asChildPropDef,\n} satisfies {\n asChild: PropDef<boolean>;\n};\n\nconst accordionTriggerPropDefs = {\n ...asChildPropDef,\n} satisfies {\n asChild: PropDef<boolean>;\n};\n\nconst accordionContentPropDefs = {\n ...asChildPropDef,\n} satisfies {\n asChild: PropDef<boolean>;\n};\n\nexport {\n accordionRootPropDefs,\n accordionItemPropDefs,\n accordionHeaderPropDefs,\n accordionTriggerPropDefs,\n accordionContentPropDefs,\n};\n\nexport type AccordionRootOwnProps = {\n size?: (typeof sizes)[number];\n variant?: (typeof variants)[number];\n color?: string;\n highContrast?: boolean;\n radius?: string;\n material?: (typeof panelBackgrounds)[number];\n panelBackground?: (typeof panelBackgrounds)[number];\n flush?: boolean;\n};\n\nexport type AccordionItemOwnProps = {\n asChild?: boolean;\n};\n\nexport type AccordionHeaderOwnProps = {\n asChild?: boolean;\n};\n\nexport type AccordionTriggerOwnProps = {\n asChild?: boolean;\n};\n\nexport type AccordionContentOwnProps = {\n asChild?: boolean;\n};\n", "import classNames from 'classnames';\n\nimport { getResponsiveClassNames, getResponsiveStyles } from './get-responsive-styles.js';\nimport { isResponsiveObject } from './is-responsive-object.js';\nimport { mergeStyles } from './merge-styles.js';\n\nimport type * as React from 'react';\nimport type { PropDef } from '../props/prop-def.js';\n\ntype PropDefsWithClassName<T> = T extends Record<string, PropDef>\n ? { [K in keyof T]: T[K] extends { className: string } ? K : never }[keyof T]\n : never;\n\nfunction mergePropDefs<T extends Record<string, PropDef>[]>(...args: T): Record<string, PropDef> {\n return Object.assign({}, ...args);\n}\n\n/**\n * Takes props, checks them against prop defs that have a `className` on them,\n * adds necessary CSS classes and inline styles, and returns the props without\n * the corresponding prop defs that were used to formulate the new `className`\n * and `style` values. Also applies prop def defaults to every prop.\n */\nfunction extractProps<\n P extends { className?: string; style?: React.CSSProperties; [key: string]: any },\n T extends Record<string, PropDef>[]\n>(\n props: P,\n ...propDefs: T\n): Omit<P & { className?: string; style?: React.CSSProperties }, PropDefsWithClassName<T[number]>> {\n let className: string | undefined;\n let style: ReturnType<typeof mergeStyles>;\n const extractedProps = { ...props };\n const allPropDefs = mergePropDefs(...propDefs);\n\n for (const key in allPropDefs) {\n let value = extractedProps[key];\n const propDef = allPropDefs[key];\n\n // Apply prop def defaults\n if (propDef.default !== undefined && value === undefined) {\n value = propDef.default;\n }\n\n // Apply the default value if the value is not a valid enum value\n if (propDef.type === 'enum') {\n const values = [propDef.default, ...propDef.values];\n\n if (!values.includes(value) && !isResponsiveObject(value)) {\n value = propDef.default;\n }\n }\n\n // Apply the value with defaults\n (extractedProps as Record<string, any>)[key] = value;\n\n if ('className' in propDef && propDef.className) {\n delete extractedProps[key];\n\n const isResponsivePropDef = 'responsive' in propDef;\n // Make sure we are not threading through responsive values for non-responsive prop defs\n if (!value || (isResponsiveObject(value) && !isResponsivePropDef)) {\n continue;\n }\n\n if (isResponsiveObject(value)) {\n // Apply prop def defaults to the `initial` breakpoint\n if (propDef.default !== undefined && value.initial === undefined) {\n value.initial = propDef.default;\n }\n\n // Apply the default value to the `initial` breakpoint when it is not a valid enum value\n if (propDef.type === 'enum') {\n const values = [propDef.default, ...propDef.values];\n\n if (!values.includes(value.initial)) {\n value.initial = propDef.default;\n }\n }\n }\n\n if (propDef.type === 'enum') {\n const propClassName = getResponsiveClassNames({\n allowArbitraryValues: false,\n value,\n className: propDef.className,\n propValues: propDef.values,\n parseValue: propDef.parseValue,\n });\n\n className = classNames(className, propClassName);\n continue;\n }\n\n if (propDef.type === 'string' || propDef.type === 'enum | string') {\n const propDefValues = propDef.type === 'string' ? [] : propDef.values;\n\n const [propClassNames, propCustomProperties] = getResponsiveStyles({\n className: propDef.className,\n customProperties: propDef.customProperties,\n propValues: propDefValues,\n parseValue: propDef.parseValue,\n value,\n });\n\n style = mergeStyles(style, propCustomProperties);\n className = classNames(className, propClassNames);\n continue;\n }\n\n if (propDef.type === 'boolean' && value) {\n // TODO handle responsive boolean props\n className = classNames(className, propDef.className);\n continue;\n }\n }\n }\n\n extractedProps.className = classNames(className, props.className);\n extractedProps.style = mergeStyles(style, props.style);\n return extractedProps;\n}\n\nexport { extractProps };\n", "import type React from 'react';\n\n// Creates a union type of string literals with strings, but retains intellisense for the literals.\n// Union<string, 'foo' | 'bar'> => string | Omit<string, 'foo' | 'bar'>\ntype Union<S = string, T extends string | number = string> = T | Omit<S, T>;\n\nconst breakpoints = ['initial', 'xs', 'sm', 'md', 'lg', 'xl'] as const;\nconst breakpointSet: Set<string> = new Set(breakpoints);\ntype Breakpoint = (typeof breakpoints)[number];\ntype Responsive<T> = T | Partial<Record<Breakpoint, T>>;\n\ntype BooleanPropDef = {\n type: 'boolean';\n default?: boolean;\n required?: boolean;\n className?: string;\n};\ntype StringPropDef = {\n type: 'string';\n default?: string;\n required?: boolean;\n};\ntype ReactNodePropDef = {\n type: 'ReactNode';\n default?: React.ReactNode;\n required?: boolean;\n};\ntype EnumPropDef<T> = {\n type: 'enum';\n values: readonly T[];\n default?: T;\n required?: boolean;\n};\ntype EnumOrStringPropDef<T> = {\n type: 'enum | string';\n values: readonly T[];\n default?: T | string;\n required?: boolean;\n};\n\ntype NonStylingPropDef = {\n className?: never;\n customProperties?: never;\n parseValue?: never;\n};\n\ntype StylingPropDef = {\n className: string;\n parseValue?: (value: string) => string | undefined;\n};\n\ntype ArbitraryStylingPropDef = {\n className: string;\n customProperties: `--${string}`[];\n parseValue?: (value: string) => string | undefined;\n};\n\ntype RegularPropDef<T> =\n | ReactNodePropDef\n | BooleanPropDef\n | (StringPropDef & ArbitraryStylingPropDef)\n | (StringPropDef & NonStylingPropDef)\n | (EnumPropDef<T> & StylingPropDef)\n | (EnumPropDef<T> & NonStylingPropDef)\n | (EnumOrStringPropDef<T> & ArbitraryStylingPropDef)\n | (EnumOrStringPropDef<T> & NonStylingPropDef);\ntype ResponsivePropDef<T = any> = RegularPropDef<T> & { responsive: true };\ntype PropDef<T = any> = RegularPropDef<T> | ResponsivePropDef<T>;\n\n// prettier-ignore\ntype GetPropDefType<Def> =\n Def extends BooleanPropDef ? (Def extends ResponsivePropDef ? Responsive<boolean> : boolean)\n : Def extends StringPropDef ? (Def extends ResponsivePropDef ? Responsive<string> : string)\n : Def extends ReactNodePropDef ? (Def extends ResponsivePropDef ? Responsive<React.ReactNode> : React.ReactNode)\n : Def extends EnumOrStringPropDef<infer Type> ?\n Def extends ResponsivePropDef<infer Type extends string> ? Responsive<Union<string, Type>> : Type\n : Def extends EnumPropDef<infer Type> ? (Def extends ResponsivePropDef<infer Type> ? Responsive<Type> : Type)\n : never;\n\ntype GetPropDefTypes<P> = {\n [K in keyof P]?: GetPropDefType<P[K]>;\n};\n\nexport { breakpoints, breakpointSet };\nexport type {\n PropDef,\n GetPropDefTypes,\n ResponsivePropDef,\n //\n Breakpoint,\n Responsive,\n Union,\n};\n", "/** A util to check whether the object has a key, while inferring the correct key type */\nfunction hasOwnProperty<K extends string | number | symbol>(\n obj: Record<K, unknown>,\n key: string | number | symbol\n): key is K {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport { hasOwnProperty };\n", "import type { Responsive, Breakpoint } from '../props/prop-def.js';\n\n// Use a Set for O(1) lookup instead of array.includes() which is O(n)\nconst breakpointSet = new Set<string>(['initial', 'xs', 'sm', 'md', 'lg', 'xl']);\n\nexport function isResponsiveObject<Value extends string>(\n obj: Responsive<Value | Omit<string, Value>> | undefined\n): obj is Record<Breakpoint, string> {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // Use for...in to avoid Object.keys() array allocation\n for (const key in obj) {\n if (breakpointSet.has(key)) {\n return true;\n }\n }\n return false;\n}\n", "import { breakpointSet } from '../props/prop-def.js';\nimport { hasOwnProperty } from './has-own-property.js';\nimport { isResponsiveObject } from './is-responsive-object.js';\n\nimport type { Responsive, Union } from '../props/prop-def.js';\n\ninterface GetResponsiveStylesOptions {\n className: string;\n customProperties: `--${string}`[];\n value: Responsive<Union> | Responsive<string> | undefined;\n propValues: string[] | readonly string[];\n parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveStyles({ className, customProperties, ...args }: GetResponsiveStylesOptions) {\n const responsiveClassNames = getResponsiveClassNames({\n allowArbitraryValues: true,\n className,\n ...args,\n });\n\n const responsiveCustomProperties = getResponsiveCustomProperties({ customProperties, ...args });\n return [responsiveClassNames, responsiveCustomProperties] as const;\n}\n\ninterface GetResponsiveClassNamesOptions {\n allowArbitraryValues?: boolean;\n className: string;\n value: Responsive<Union> | Responsive<string> | undefined;\n propValues: string[] | readonly string[];\n parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveClassNames({\n allowArbitraryValues,\n value,\n className,\n propValues,\n parseValue = (value) => value,\n}: GetResponsiveClassNamesOptions): string | undefined {\n const classNames: string[] = [];\n\n if (!value) {\n return undefined;\n }\n\n if (typeof value === 'string' && propValues.includes(value)) {\n return getBaseClassName(className, value, parseValue);\n }\n\n if (isResponsiveObject(value)) {\n const object = value;\n\n for (const bp in object) {\n // Make sure we are not iterating over keys that aren't breakpoints\n if (!hasOwnProperty(object, bp) || !breakpointSet.has(bp)) {\n continue;\n }\n\n const value = object[bp];\n\n if (value !== undefined) {\n if (propValues.includes(value)) {\n const baseClassName = getBaseClassName(className, value, parseValue);\n const bpClassName = bp === 'initial' ? baseClassName : `${bp}:${baseClassName}`;\n classNames.push(bpClassName);\n } else if (allowArbitraryValues) {\n const bpClassName = bp === 'initial' ? className : `${bp}:${className}`;\n classNames.push(bpClassName);\n }\n }\n }\n\n return classNames.join(' ');\n }\n\n if (allowArbitraryValues) {\n return className;\n }\n}\n\nfunction getBaseClassName(\n className: string,\n value: string,\n parseValue: (value: string) => string | undefined\n): string {\n const delimiter = className ? '-' : '';\n const matchedValue = parseValue(value);\n const isNegative = matchedValue?.startsWith('-');\n const minus = isNegative ? '-' : '';\n const absoluteValue = isNegative ? matchedValue?.substring(1) : matchedValue;\n return `${minus}${className}${delimiter}${absoluteValue}`;\n}\n\ninterface GetResponsiveCustomPropertiesOptions {\n customProperties: `--${string}`[];\n value: Responsive<Union> | Responsive<string> | undefined;\n propValues: string[] | readonly string[];\n parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveCustomProperties({\n customProperties,\n value,\n propValues,\n parseValue = (value) => value,\n}: GetResponsiveCustomPropertiesOptions) {\n let styles: Record<string, string | undefined> = {};\n\n // Don't generate custom properties if the value is not arbitrary\n if (!value || (typeof value === 'string' && propValues.includes(value))) {\n return undefined;\n }\n\n if (typeof value === 'string') {\n styles = Object.fromEntries(customProperties.map((prop) => [prop, value]));\n }\n\n if (isResponsiveObject(value)) {\n const object = value;\n\n for (const bp in object) {\n // Make sure we are not iterating over keys that aren't breakpoints\n if (!hasOwnProperty(object, bp) || !breakpointSet.has(bp)) {\n continue;\n }\n\n const value = object[bp];\n\n // Don't generate a custom property if the value is not arbitrary\n if (propValues.includes(value)) {\n continue;\n }\n\n for (const customProperty of customProperties) {\n const bpProperty = bp === 'initial' ? customProperty : `${customProperty}-${bp}`;\n styles[bpProperty] = value;\n }\n }\n }\n\n for (const key in styles) {\n const value = styles[key];\n if (value !== undefined) {\n styles[key] = parseValue(value);\n }\n }\n\n return styles;\n}\n\nexport { getResponsiveStyles, getResponsiveCustomProperties, getResponsiveClassNames };\n", "type InlineStyle =\n | React.CSSProperties\n | Record<string, string | number | null | undefined>\n | undefined;\n\n// Merges CSS styles like `classNames` merges CSS classes\n// Optimized to avoid object spread in loop - uses Object.assign for in-place mutation\nexport function mergeStyles(...styles: Array<InlineStyle>): InlineStyle {\n let result: Record<string, string | number | null | undefined> | undefined;\n\n for (const style of styles) {\n if (style) {\n if (result === undefined) {\n // First non-empty style - create result object\n result = {};\n }\n Object.assign(result, style);\n }\n }\n\n return result;\n}\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\n\nimport { alertDialogContentPropDefs } from './alert-dialog.props.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { AlertDialogContentOwnProps } from './alert-dialog.props.js';\nimport type {\n ComponentPropsWithout,\n RemovedProps,\n ComponentPropsAs,\n} from '../helpers/component-props.js';\n\ninterface AlertDialogRootProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root> {}\nconst AlertDialogRoot: React.FC<AlertDialogRootProps> = (props) => (\n <AlertDialogPrimitive.Root {...props} />\n);\nAlertDialogRoot.displayName = 'AlertDialog.Root';\n\ntype AlertDialogTriggerElement = React.ElementRef<typeof AlertDialogPrimitive.Trigger>;\ninterface AlertDialogTriggerProps\n extends ComponentPropsWithout<typeof AlertDialogPrimitive.Trigger, RemovedProps> {}\nconst AlertDialogTrigger = React.forwardRef<AlertDialogTriggerElement, AlertDialogTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <AlertDialogPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </AlertDialogPrimitive.Trigger>\n ),\n);\nAlertDialogTrigger.displayName = 'AlertDialog.Trigger';\n\ntype AlertDialogContentElement = React.ElementRef<typeof AlertDialogPrimitive.Content>;\ninterface AlertDialogContentProps\n extends ComponentPropsWithout<typeof AlertDialogPrimitive.Content, RemovedProps>,\n AlertDialogContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Portal>['container'];\n}\nconst AlertDialogContent = React.forwardRef<AlertDialogContentElement, AlertDialogContentProps>(\n ({ align, ...props }, forwardedRef) => {\n const {\n align: alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = alertDialogContentPropDefs;\n\n const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });\n\n // Extract panelBackground and material from props\n const { panelBackground: extractedPanelBackground } = extractProps(\n { panelBackground: props.panelBackground },\n { panelBackground: panelBackgroundPropDef },\n );\n\n const { material: extractedMaterial } = extractProps(\n { material: props.material },\n { material: materialPropDef },\n );\n\n // Handle material prop with panelBackground fallback\n const materialValue = React.useMemo(() => {\n if (extractedMaterial !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n return extractedMaterial ?? extractedPanelBackground;\n }, [extractedMaterial, extractedPanelBackground]);\n\n const {\n className,\n forceMount,\n container,\n panelBackground: _,\n material: __,\n ...contentProps\n } = extractProps(props, propDefs);\n\n // Focus management\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useMemo(\n () => (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n\n // Focus trap effect\n React.useEffect(() => {\n // SSR safety - only run on client\n if (typeof window === 'undefined') return;\n\n const content = contentRef.current;\n if (!content) return;\n\n const focusableElements = content.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n };\n\n content.addEventListener('keydown', handleKeyDown);\n\n // Focus first element when dialog opens\n firstElement.focus();\n\n return () => {\n content.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return (\n <AlertDialogPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <AlertDialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-AlertDialogOverlay\">\n <div className=\"rt-BaseDialogScroll rt-AlertDialogScroll\">\n <div\n className={`rt-BaseDialogScrollPadding rt-AlertDialogScrollPadding ${alignClassName}`}\n >\n <AlertDialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames('rt-BaseDialogContent', 'rt-AlertDialogContent', className)}\n data-material={materialValue}\n data-panel-background={materialValue}\n tabIndex={-1}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-describedby=\"alert-dialog-description\"\n onCloseAutoFocus={(event) => {\n // Prevent default focus behavior\n event.preventDefault();\n // Restore pointer-events to body (Radix UI fix for issue #1241)\n document.body.style.pointerEvents = '';\n }}\n />\n {/* ARIA live region for screen reader announcements */}\n <div\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n className=\"rt-sr-only\"\n id=\"alert-dialog-announcement\"\n />\n </div>\n </div>\n </AlertDialogPrimitive.Overlay>\n </Theme>\n </AlertDialogPrimitive.Portal>\n );\n },\n);\nAlertDialogContent.displayName = 'AlertDialog.Content';\n\ntype AlertDialogTitleElement = React.ElementRef<typeof Heading>;\ntype AlertDialogTitleProps = ComponentPropsWithout<typeof Heading, 'asChild'>;\nconst AlertDialogTitle = React.forwardRef<AlertDialogTitleElement, AlertDialogTitleProps>(\n (props, forwardedRef) => (\n <AlertDialogPrimitive.Title asChild>\n <Heading size=\"5\" mb=\"3\" trim=\"start\" {...props} asChild={false} ref={forwardedRef} />\n </AlertDialogPrimitive.Title>\n ),\n);\nAlertDialogTitle.displayName = 'AlertDialog.Title';\n\ntype AlertDialogDescriptionElement = HTMLParagraphElement;\ntype AlertDialogDescriptionProps = ComponentPropsAs<typeof Text, 'p'>;\nconst AlertDialogDescription = React.forwardRef<\n AlertDialogDescriptionElement,\n AlertDialogDescriptionProps\n>((props, forwardedRef) => (\n <AlertDialogPrimitive.Description asChild>\n <Text as=\"p\" size=\"3\" {...props} asChild={false} ref={forwardedRef} />\n </AlertDialogPrimitive.Description>\n));\nAlertDialogDescription.displayName = 'AlertDialog.Description';\n\ntype AlertDialogActionElement = React.ElementRef<typeof AlertDialogPrimitive.Action>;\ninterface AlertDialogActionProps\n extends ComponentPropsWithout<typeof AlertDialogPrimitive.Action, RemovedProps> {}\nconst AlertDialogAction = React.forwardRef<AlertDialogActionElement, AlertDialogActionProps>(\n ({ children, ...props }, forwardedRef) => (\n <AlertDialogPrimitive.Action {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </AlertDialogPrimitive.Action>\n ),\n);\nAlertDialogAction.displayName = 'AlertDialog.Action';\n\ntype AlertDialogCancelElement = React.ElementRef<typeof AlertDialogPrimitive.Cancel>;\ninterface AlertDialogCancelProps\n extends ComponentPropsWithout<typeof AlertDialogPrimitive.Cancel, RemovedProps> {}\nconst AlertDialogCancel = React.forwardRef<AlertDialogCancelElement, AlertDialogCancelProps>(\n ({ children, ...props }, forwardedRef) => (\n <AlertDialogPrimitive.Cancel {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </AlertDialogPrimitive.Cancel>\n ),\n);\nAlertDialogCancel.displayName = 'AlertDialog.Cancel';\n\nexport {\n AlertDialogRoot as Root,\n AlertDialogTrigger as Trigger,\n AlertDialogContent as Content,\n AlertDialogTitle as Title,\n AlertDialogDescription as Description,\n AlertDialogAction as Action,\n AlertDialogCancel as Cancel,\n};\n\nexport type {\n AlertDialogRootProps as RootProps,\n AlertDialogTriggerProps as TriggerProps,\n AlertDialogContentProps as ContentProps,\n AlertDialogTitleProps as TitleProps,\n AlertDialogDescriptionProps as DescriptionProps,\n AlertDialogActionProps as ActionProps,\n AlertDialogCancelProps as CancelProps,\n};\n", "import type { GetPropDefTypes, PropDef } from './prop-def.js';\n\nconst widthPropDefs = {\n /**\n * Sets the CSS **width** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * width=\"100px\"\n * width={{ md: '100vw', xl: '1400px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/width\n */\n width: {\n type: 'string',\n className: 'rt-r-w',\n customProperties: ['--width'],\n responsive: true,\n },\n /**\n * Sets the CSS **min-width** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * minWidth=\"100px\"\n * minWidth={{ md: '100vw', xl: '1400px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/min-width\n */\n minWidth: {\n type: 'string',\n className: 'rt-r-min-w',\n customProperties: ['--min-width'],\n responsive: true,\n },\n /**\n * Sets the CSS **max-width** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * maxWidth=\"100px\"\n * maxWidth={{ md: '100vw', xl: '1400px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/max-width\n */\n maxWidth: {\n type: 'string',\n className: 'rt-r-max-w',\n customProperties: ['--max-width'],\n responsive: true,\n },\n} satisfies {\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n};\n\ntype WidthProps = GetPropDefTypes<typeof widthPropDefs>;\n\nexport { widthPropDefs };\nexport type { WidthProps };\n", "import type { PropDef, GetPropDefTypes } from './prop-def.js';\n\nconst heightPropDefs = {\n /**\n * Sets the CSS **height** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * height=\"100px\"\n * height={{ md: '100vh', xl: '600px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/height\n */\n height: {\n type: 'string',\n className: 'rt-r-h',\n customProperties: ['--height'],\n responsive: true,\n },\n /**\n * Sets the CSS **min-height** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * minHeight=\"100px\"\n * minHeight={{ md: '100vh', xl: '600px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/min-height\n */\n minHeight: {\n type: 'string',\n className: 'rt-r-min-h',\n customProperties: ['--min-height'],\n responsive: true,\n },\n /**\n * Sets the CSS **max-height** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * maxHeight=\"100px\"\n * maxHeight={{ md: '100vh', xl: '600px' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/max-height\n */\n maxHeight: {\n type: 'string',\n className: 'rt-r-max-h',\n customProperties: ['--max-height'],\n responsive: true,\n },\n} satisfies {\n height: PropDef<string>;\n minHeight: PropDef<string>;\n maxHeight: PropDef<string>;\n};\n\ntype HeightProps = GetPropDefTypes<typeof heightPropDefs>;\n\nexport { heightPropDefs };\nexport type { HeightProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { widthPropDefs } from '../props/width.props.js';\nimport { heightPropDefs } from '../props/height.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst alignValues = ['start', 'center'] as const;\nconst contentSizes = ['1', '2', '3', '4'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst dialogContentPropDefs = {\n ...asChildPropDef,\n align: {\n type: 'enum',\n className: 'rt-r-align',\n values: ['start', 'center'],\n default: 'center',\n },\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: contentSizes,\n default: '3',\n responsive: true,\n },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n material: { type: 'enum', values: materials, default: undefined },\n width: widthPropDefs.width,\n minWidth: widthPropDefs.minWidth,\n maxWidth: { ...widthPropDefs.maxWidth, default: '600px' },\n ...heightPropDefs,\n} satisfies {\n align: PropDef<(typeof alignValues)[number]>;\n size: PropDef<(typeof contentSizes)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n material: PropDef<(typeof materials)[number] | undefined>;\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n};\n\ntype DialogContentOwnProps = GetPropDefTypes<\n typeof dialogContentPropDefs & typeof asChildPropDef & typeof widthPropDefs\n>;\n\nexport { dialogContentPropDefs };\nexport type { DialogContentOwnProps };\n", "import { dialogContentPropDefs } from './dialog.props.js';\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst materials = ['solid', 'translucent'] as const;\n\nconst alertDialogContentPropDefs = {\n ...dialogContentPropDefs,\n material: { type: 'enum', values: materials, default: undefined },\n} satisfies {\n align: PropDef<'start' | 'center'>;\n size: PropDef<'1' | '2' | '3' | '4'>;\n panelBackground: PropDef<'solid' | 'translucent' | undefined>;\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n material: PropDef<'solid' | 'translucent' | undefined>;\n};\n\ntype AlertDialogContentOwnProps = GetPropDefTypes<typeof alertDialogContentPropDefs>;\n\nexport { alertDialogContentPropDefs };\nexport type { AlertDialogContentOwnProps };\n", "import * as React from 'react';\nimport { Slot } from 'radix-ui';\n\nimport { headingPropDefs } from './heading.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype HeadingElement = React.ElementRef<'h1'>;\ntype HeadingOwnProps = GetPropDefTypes<typeof headingPropDefs>;\ninterface CommonHeadingProps extends MarginProps, HeadingOwnProps {}\ntype HeadingH1Props = { as?: 'h1' } & ComponentPropsWithout<'h1', RemovedProps>;\ntype HeadingH2Props = { as: 'h2' } & ComponentPropsWithout<'h2', RemovedProps>;\ntype HeadingH3Props = { as: 'h3' } & ComponentPropsWithout<'h3', RemovedProps>;\ntype HeadingH4Props = { as: 'h4' } & ComponentPropsWithout<'h4', RemovedProps>;\ntype HeadingH5Props = { as: 'h5' } & ComponentPropsWithout<'h5', RemovedProps>;\ntype HeadingH6Props = { as: 'h6' } & ComponentPropsWithout<'h6', RemovedProps>;\ntype HeadingProps = CommonHeadingProps &\n (HeadingH1Props | HeadingH2Props | HeadingH3Props | HeadingH4Props | HeadingH5Props | HeadingH6Props);\n\n// Pre-merge prop definitions at module level to avoid per-render allocation\nconst mergedPropDefs = { ...headingPropDefs, ...marginPropDefs };\n\nconst Heading = React.memo(\n React.forwardRef<HeadingElement, HeadingProps>((props, forwardedRef) => {\n const {\n children,\n className,\n asChild,\n as: Tag = 'h1',\n color,\n ...headingProps\n } = extractProps(props, mergedPropDefs);\n\n const combinedClassName = className ? `rt-Heading ${className}` : 'rt-Heading';\n\n if (asChild) {\n return (\n <Slot.Root\n data-accent-color={color}\n {...headingProps}\n ref={forwardedRef}\n className={combinedClassName}\n >\n {children}\n </Slot.Root>\n );\n }\n\n return (\n <Tag\n data-accent-color={color}\n {...(headingProps as React.HTMLAttributes<HTMLHeadingElement>)}\n ref={forwardedRef as any}\n className={combinedClassName}\n >\n {children}\n </Tag>\n );\n })\n);\nHeading.displayName = 'Heading';\n\nexport { Heading };\nexport type { HeadingProps };\n", "import type { PropDef } from './prop-def.js';\n\nconst leadingTrimValues = ['normal', 'start', 'end', 'both'] as const;\n\nconst leadingTrimPropDef = {\n trim: {\n type: 'enum',\n className: 'rt-r-lt',\n values: leadingTrimValues,\n responsive: true,\n },\n} satisfies {\n trim: PropDef<(typeof leadingTrimValues)[number]>;\n};\n\nexport { leadingTrimPropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst textAlignValues = ['left', 'center', 'right'] as const;\n\nconst textAlignPropDef = {\n align: {\n type: 'enum',\n className: 'rt-r-ta',\n values: textAlignValues,\n responsive: true,\n },\n} satisfies {\n align: PropDef<(typeof textAlignValues)[number]>;\n};\n\nexport { textAlignPropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst textWrapValues = ['wrap', 'nowrap', 'pretty', 'balance'] as const;\n\nconst textWrapPropDef = {\n wrap: {\n type: 'enum',\n className: 'rt-r-tw',\n values: textWrapValues,\n responsive: true,\n },\n} satisfies {\n wrap: PropDef<(typeof textWrapValues)[number]>;\n};\n\nexport { textWrapPropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst truncatePropDef = {\n truncate: {\n type: 'boolean',\n className: 'rt-truncate',\n },\n} satisfies {\n truncate: PropDef<boolean>;\n};\n\nexport { truncatePropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst fontFamilies = ['sans', 'mono', 'serif'] as const;\n\nconst fontFamilyPropDef = {\n font: {\n type: 'enum',\n className: 'rt-r-ff',\n values: fontFamilies,\n },\n} satisfies {\n font: PropDef<(typeof fontFamilies)[number]>;\n};\n\nexport { fontFamilyPropDef };\n", "import type { PropDef } from './prop-def.js';\n\nconst weights = ['thin', 'extralight', 'light', 'regular', 'medium', 'semibold', 'bold', 'extrabold'] as const;\n\nconst weightPropDef = {\n weight: {\n type: 'enum',\n className: 'rt-r-weight',\n values: weights,\n responsive: true,\n },\n} satisfies {\n weight: PropDef<(typeof weights)[number]>;\n};\n\nexport { weightPropDef };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textAlignPropDef } from '../props/text-align.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { fontFamilyPropDef } from '../props/font-family.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst as = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nconst sizes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\n\nconst headingPropDefs = {\n as: { type: 'enum', values: as, default: 'h1' },\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n default: '6',\n responsive: true,\n },\n ...fontFamilyPropDef,\n ...weightPropDef,\n ...textAlignPropDef,\n ...leadingTrimPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n as: PropDef<(typeof as)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { headingPropDefs };\n", "import type { PropDef, GetPropDefTypes } from './prop-def.js';\n\n// prettier-ignore\nconst marginValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '-1', '-2', '-3', '-4', '-5', '-6', '-7', '-8', '-9', '-10', '-11', '-12'] as const;\n\nconst marginPropDefs = {\n /**\n * Sets the CSS **margin** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * m=\"4\"\n * m=\"100px\"\n * m={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin\n */\n m: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-m',\n customProperties: ['--m'],\n },\n /**\n * Sets the CSS **margin-left** and **margin-right** properties.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * mx=\"4\"\n * mx=\"100px\"\n * mx={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right\n */\n mx: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-mx',\n customProperties: ['--ml', '--mr'],\n },\n /**\n * Sets the CSS **margin-top** and **margin-bottom** properties.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * my=\"4\"\n * my=\"100px\"\n * my={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom\n */\n my: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-my',\n customProperties: ['--mt', '--mb'],\n },\n /**\n * Sets the CSS **margin-top** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * mt=\"4\"\n * mt=\"100px\"\n * mt={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top\n */\n mt: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-mt',\n customProperties: ['--mt'],\n },\n /**\n * Sets the CSS **margin-right** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * mr=\"4\"\n * mr=\"100px\"\n * mr={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right\n */\n mr: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-mr',\n customProperties: ['--mr'],\n },\n /**\n * Sets the CSS **margin-bottom** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * mb=\"4\"\n * mb=\"100px\"\n * mb={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom\n */\n mb: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-mb',\n customProperties: ['--mb'],\n },\n /**\n * Sets the CSS **margin-left** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * ml=\"4\"\n * ml=\"100px\"\n * ml={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left\n */\n ml: {\n type: 'enum | string',\n values: marginValues,\n responsive: true,\n className: 'rt-r-ml',\n customProperties: ['--ml'],\n },\n} satisfies {\n m: PropDef<(typeof marginValues)[number]>;\n mx: PropDef<(typeof marginValues)[number]>;\n my: PropDef<(typeof marginValues)[number]>;\n mt: PropDef<(typeof marginValues)[number]>;\n mr: PropDef<(typeof marginValues)[number]>;\n mb: PropDef<(typeof marginValues)[number]>;\n ml: PropDef<(typeof marginValues)[number]>;\n};\n\ntype MarginProps = GetPropDefTypes<typeof marginPropDefs>;\n\nexport { marginPropDefs };\nexport type { MarginProps };\n", "import * as React from 'react';\nimport { Slot } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { textPropDefs } from './text.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype TextElement = React.ElementRef<'span'>;\ntype TextOwnProps = GetPropDefTypes<typeof textPropDefs>;\ninterface CommonTextProps extends MarginProps, TextOwnProps {}\ntype TextSpanProps = { as?: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype TextDivProps = { as: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype TextLabelProps = { as: 'label' } & ComponentPropsWithout<'label', RemovedProps>;\ntype TextPProps = { as: 'p' } & ComponentPropsWithout<'p', RemovedProps>;\ntype TextProps = CommonTextProps & (TextSpanProps | TextDivProps | TextLabelProps | TextPProps);\n\n// Pre-merge prop definitions at module level to avoid per-render allocation\nconst mergedPropDefs = { ...textPropDefs, ...marginPropDefs };\n\nconst Text = React.memo(\n React.forwardRef<TextElement, TextProps>((props, forwardedRef) => {\n const {\n children,\n className,\n asChild,\n as: Tag = 'span',\n color,\n ...textProps\n } = extractProps(props, mergedPropDefs);\n\n const combinedClassName = className ? `rt-Text ${className}` : 'rt-Text';\n\n if (asChild) {\n return (\n <Slot.Root\n data-accent-color={color}\n {...textProps}\n ref={forwardedRef}\n className={combinedClassName}\n >\n {children}\n </Slot.Root>\n );\n }\n\n return (\n <Tag\n data-accent-color={color}\n {...(textProps as React.HTMLAttributes<HTMLElement>)}\n ref={forwardedRef as any}\n className={combinedClassName}\n >\n {children}\n </Tag>\n );\n })\n);\nText.displayName = 'Text';\n\nexport { Text };\nexport type { TextProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textAlignPropDef } from '../props/text-align.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { fontFamilyPropDef } from '../props/font-family.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst as = ['span', 'div', 'label', 'p'] as const;\nconst sizes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\n\nconst textPropDefs = {\n as: { type: 'enum', values: as, default: 'span' },\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n responsive: true,\n },\n ...fontFamilyPropDef,\n ...weightPropDef,\n ...textAlignPropDef,\n ...leadingTrimPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n as: PropDef<(typeof as)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { textPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Direction, Slot, Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { getMatchingGrayColor } from '../helpers/get-matching-gray-color.js';\nimport { themePropDefs } from './theme.props.js';\n\nimport type { ThemeOwnProps } from './theme.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\nconst noop = () => {};\n\ntype ThemeAppearance = (typeof themePropDefs.appearance.values)[number];\ntype ThemeAccentColor = (typeof themePropDefs.accentColor.values)[number];\ntype ThemeGrayColor = (typeof themePropDefs.grayColor.values)[number];\ntype ThemeMaterial = (typeof themePropDefs.material.values)[number];\ntype ThemePanelBackground = (typeof themePropDefs.panelBackground.values)[number];\ntype ThemeRadius = (typeof themePropDefs.radius.values)[number];\ntype ThemeScaling = (typeof themePropDefs.scaling.values)[number];\ntype ThemeFontFamily = (typeof themePropDefs.fontFamily.values)[number];\n\ninterface ThemeChangeHandlers {\n onAppearanceChange: (appearance: ThemeAppearance) => void;\n onAccentColorChange: (accentColor: ThemeAccentColor) => void;\n onGrayColorChange: (grayColor: ThemeGrayColor) => void;\n onMaterialChange: (material: ThemeMaterial) => void;\n onPanelBackgroundChange: (panelBackground: ThemePanelBackground) => void;\n onRadiusChange: (radius: ThemeRadius) => void;\n onScalingChange: (scaling: ThemeScaling) => void;\n onFontFamilyChange: (fontFamily: ThemeFontFamily) => void;\n}\n\ninterface ThemeContextValue extends ThemeChangeHandlers {\n appearance: ThemeAppearance;\n accentColor: ThemeAccentColor;\n grayColor: ThemeGrayColor;\n resolvedGrayColor: ThemeGrayColor;\n material: ThemeMaterial;\n panelBackground: ThemePanelBackground;\n radius: ThemeRadius;\n scaling: ThemeScaling;\n fontFamily: ThemeFontFamily;\n}\n// Default theme values used when components render outside a Theme provider\nconst defaultThemeContext: ThemeContextValue = {\n appearance: themePropDefs.appearance.default,\n accentColor: themePropDefs.accentColor.default,\n grayColor: themePropDefs.grayColor.default,\n resolvedGrayColor: themePropDefs.grayColor.default,\n material: themePropDefs.material.default,\n panelBackground: themePropDefs.panelBackground.default,\n radius: themePropDefs.radius.default,\n scaling: themePropDefs.scaling.default,\n fontFamily: themePropDefs.fontFamily.default,\n onAppearanceChange: noop,\n onAccentColorChange: noop,\n onGrayColorChange: noop,\n onMaterialChange: noop,\n onPanelBackgroundChange: noop,\n onRadiusChange: noop,\n onScalingChange: noop,\n onFontFamilyChange: noop,\n};\n\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(undefined);\n\nfunction useThemeContext() {\n const context = React.useContext(ThemeContext);\n // Return default context if used outside Theme provider (e.g., during SSR)\n return context ?? defaultThemeContext;\n}\n\ninterface ThemeProps extends ThemeImplPublicProps {}\nconst Theme = React.forwardRef<ThemeImplElement, ThemeProps>((props, forwardedRef) => {\n const context = React.useContext(ThemeContext);\n const isRoot = context === undefined;\n if (isRoot) {\n return (\n <TooltipPrimitive.Provider delayDuration={200}>\n <Direction.Provider dir=\"ltr\">\n <ThemeRoot {...props} ref={forwardedRef} />\n </Direction.Provider>\n </TooltipPrimitive.Provider>\n );\n }\n return <ThemeImpl {...props} ref={forwardedRef} />;\n});\nTheme.displayName = 'Theme';\n\nconst ThemeRoot = React.forwardRef<ThemeImplElement, ThemeImplPublicProps>(\n (props, forwardedRef) => {\n const {\n appearance: appearanceProp = themePropDefs.appearance.default,\n accentColor: accentColorProp = themePropDefs.accentColor.default,\n grayColor: grayColorProp = themePropDefs.grayColor.default,\n material: materialProp = themePropDefs.material.default,\n panelBackground: panelBackgroundProp = themePropDefs.panelBackground.default,\n radius: radiusProp = themePropDefs.radius.default,\n scaling: scalingProp = themePropDefs.scaling.default,\n fontFamily: fontFamilyProp = themePropDefs.fontFamily.default,\n hasBackground = themePropDefs.hasBackground.default,\n ...rootProps\n } = props;\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n const [appearance, setAppearance] = React.useState(appearanceProp);\n React.useEffect(() => setAppearance(appearanceProp), [appearanceProp]);\n\n const [accentColor, setAccentColor] = React.useState(accentColorProp);\n React.useEffect(() => setAccentColor(accentColorProp), [accentColorProp]);\n\n const [grayColor, setGrayColor] = React.useState(grayColorProp);\n React.useEffect(() => setGrayColor(grayColorProp), [grayColorProp]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial =\n materialProp !== themePropDefs.material.default ? materialProp : panelBackgroundProp;\n const [material, setMaterial] = React.useState(effectiveMaterial);\n React.useEffect(() => setMaterial(effectiveMaterial), [effectiveMaterial]);\n\n // Keep panelBackground in sync with material for backward compatibility\n const [panelBackground, setPanelBackground] = React.useState(panelBackgroundProp);\n React.useEffect(() => setPanelBackground(material), [material]);\n\n const [radius, setRadius] = React.useState(radiusProp);\n React.useEffect(() => setRadius(radiusProp), [radiusProp]);\n\n const [scaling, setScaling] = React.useState(scalingProp);\n React.useEffect(() => setScaling(scalingProp), [scalingProp]);\n\n const [fontFamily, setFontFamily] = React.useState(fontFamilyProp);\n React.useEffect(() => setFontFamily(fontFamilyProp), [fontFamilyProp]);\n\n return (\n <ThemeImpl\n {...rootProps}\n ref={forwardedRef}\n isRoot\n hasBackground={hasBackground}\n //\n appearance={appearance}\n accentColor={accentColor}\n grayColor={grayColor}\n material={material}\n panelBackground={panelBackground}\n radius={radius}\n scaling={scaling}\n fontFamily={fontFamily}\n //\n onAppearanceChange={setAppearance}\n onAccentColorChange={setAccentColor}\n onGrayColorChange={setGrayColor}\n onMaterialChange={setMaterial}\n onPanelBackgroundChange={setPanelBackground}\n onRadiusChange={setRadius}\n onScalingChange={setScaling}\n onFontFamilyChange={setFontFamily}\n />\n );\n },\n);\nThemeRoot.displayName = 'ThemeRoot';\n\ntype ThemeImplElement = React.ElementRef<'div'>;\ninterface ThemeImplProps extends ThemeImplPublicProps, ThemeImplPrivateProps {}\ninterface ThemeImplPublicProps\n extends ComponentPropsWithout<'div', RemovedProps | 'dir'>,\n ThemeOwnProps {}\ninterface ThemeImplPrivateProps extends Partial<ThemeChangeHandlers> {\n isRoot?: boolean;\n}\nfunction getClientOS(): 'windows' | 'macos' | 'linux' | undefined {\n if (typeof navigator === 'undefined') return undefined;\n const ua = navigator.userAgent;\n if (ua.includes('Win')) return 'windows';\n if (ua.includes('Mac')) return 'macos';\n if (ua.includes('Linux')) return 'linux';\n return undefined;\n}\n\nconst ThemeImpl = React.forwardRef<ThemeImplElement, ThemeImplProps>((props, forwardedRef) => {\n const context = React.useContext(ThemeContext);\n const {\n asChild,\n isRoot,\n hasBackground: hasBackgroundProp,\n //\n appearance = props.appearance ?? context?.appearance ?? themePropDefs.appearance.default,\n accentColor = props.accentColor ?? context?.accentColor ?? themePropDefs.accentColor.default,\n grayColor = props.grayColor ?? context?.resolvedGrayColor ?? themePropDefs.grayColor.default,\n material = props.material ?? context?.material ?? themePropDefs.material.default,\n panelBackground = props.panelBackground ??\n context?.panelBackground ??\n themePropDefs.panelBackground.default,\n radius = props.radius ?? context?.radius ?? themePropDefs.radius.default,\n scaling = props.scaling ?? context?.scaling ?? themePropDefs.scaling.default,\n fontFamily = props.fontFamily ?? context?.fontFamily ?? themePropDefs.fontFamily.default,\n //\n onAppearanceChange = noop,\n onAccentColorChange = noop,\n onGrayColorChange = noop,\n onMaterialChange = noop,\n onPanelBackgroundChange = noop,\n onRadiusChange = noop,\n onScalingChange = noop,\n onFontFamilyChange = noop,\n //\n ...themeProps\n } = props;\n const Comp = asChild ? Slot.Root : 'div';\n const resolvedGrayColor = grayColor === 'auto' ? getMatchingGrayColor(accentColor) : grayColor;\n const isExplicitAppearance = props.appearance === 'light' || props.appearance === 'dark';\n const hasBackground =\n hasBackgroundProp === undefined ? isRoot || isExplicitAppearance : hasBackgroundProp;\n\n const [clientOS, setClientOS] = React.useState<ReturnType<typeof getClientOS>>(undefined);\n React.useEffect(() => {\n if (isRoot) setClientOS(getClientOS());\n }, [isRoot]);\n\n return (\n <ThemeContext.Provider\n value={React.useMemo(\n () => ({\n appearance,\n accentColor,\n grayColor,\n resolvedGrayColor,\n material,\n panelBackground,\n radius,\n scaling,\n fontFamily,\n //\n onAppearanceChange,\n onAccentColorChange,\n onGrayColorChange,\n onMaterialChange,\n onPanelBackgroundChange,\n onRadiusChange,\n onScalingChange,\n onFontFamilyChange,\n }),\n [\n appearance,\n accentColor,\n grayColor,\n resolvedGrayColor,\n material,\n panelBackground,\n radius,\n scaling,\n fontFamily,\n //\n onAppearanceChange,\n onAccentColorChange,\n onGrayColorChange,\n onMaterialChange,\n onPanelBackgroundChange,\n onRadiusChange,\n onScalingChange,\n onFontFamilyChange,\n ],\n )}\n >\n <Comp\n data-is-root-theme={isRoot ? 'true' : 'false'}\n data-accent-color={accentColor}\n data-gray-color={resolvedGrayColor}\n // for nested `Theme` background\n data-has-background={hasBackground ? 'true' : 'false'}\n data-material={material}\n data-panel-background={panelBackground}\n data-radius={radius}\n data-scaling={scaling}\n data-font-family={fontFamily}\n data-os={isRoot ? clientOS : undefined}\n ref={forwardedRef}\n {...themeProps}\n className={classNames(\n 'radix-themes',\n {\n light: appearance === 'light',\n dark: appearance === 'dark',\n },\n themeProps.className,\n )}\n />\n </ThemeContext.Provider>\n );\n});\nThemeImpl.displayName = 'ThemeImpl';\n\nexport { Theme, ThemeContext, useThemeContext };\nexport type { ThemeProps, ThemeContextValue };\n", "import type { accentColors } from '../props/color.prop.js';\n\ntype ThemeAccentColor = (typeof accentColors)[number];\n\nexport function getMatchingGrayColor(accentColor: ThemeAccentColor) {\n switch (accentColor) {\n case 'tomato':\n case 'red':\n case 'ruby':\n case 'crimson':\n case 'pink':\n case 'plum':\n case 'purple':\n case 'violet':\n return 'mauve';\n case 'iris':\n case 'indigo':\n case 'blue':\n case 'sky':\n case 'cyan':\n return 'slate';\n case 'teal':\n case 'jade':\n case 'mint':\n case 'green':\n return 'sage';\n case 'grass':\n case 'lime':\n return 'olive';\n case 'yellow':\n case 'amber':\n case 'orange':\n case 'brown':\n case 'gold':\n case 'bronze':\n return 'sand';\n case 'gray':\n return 'gray';\n }\n}\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColors, grayColors } from '../props/color.prop.js';\nimport { radii } from '../props/radius.prop.js';\n\nimport type { GetPropDefTypes, PropDef } from '../props/prop-def.js';\n\nconst appearances = ['inherit', 'light', 'dark'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\nconst scalings = ['90%', '95%', '100%', '105%', '110%'] as const;\nconst fontFamilies = ['sans', 'mono', 'serif'] as const;\n\nconst themePropDefs = {\n ...asChildPropDef,\n /**\n * Whether to apply background color to the Theme element.\n *\n * Defaults to true for the root Theme and for Theme elements that\n * have an explicit light or dark appearance prop.\n */\n hasBackground: { type: 'boolean', default: true },\n /**\n * Sets the color scheme of the theme, typcially referred to as light and dark mode.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/dark-mode\n */\n appearance: { type: 'enum', values: appearances, default: 'inherit' },\n /**\n * Selects one of the accent color options to use in the Theme.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/color\n */\n accentColor: { type: 'enum', values: accentColors, default: 'blue' },\n /**\n * Selects one of the gray color options to use in the Theme.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/color\n */\n grayColor: { type: 'enum', values: grayColors, default: 'slate' },\n /**\n * Controls whether to use a solid or translucent background color on panelled\n * elements such as Card or Table is solid or translucent.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n material: { type: 'enum', values: materials, default: 'translucent' },\n /**\n * Controls whether to use a solid or translucent background color on panelled\n * elements such as Card or Table is solid or translucent.\n *\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: 'translucent' },\n /**\n * Sets the default radius of the components.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n radius: { type: 'enum', values: radii, default: 'medium' },\n /**\n * Sets a scaling multiplier for values like spacing, font sizes, line heights, etc. are scaled.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/layout\n */\n scaling: { type: 'enum', values: scalings, default: '100%' },\n /**\n * Sets the font family for the theme.\n *\n * @default 'sans'\n */\n fontFamily: { type: 'enum', values: fontFamilies, default: 'sans' },\n} satisfies {\n hasBackground: PropDef<boolean>;\n appearance: PropDef<(typeof appearances)[number]>;\n accentColor: PropDef<(typeof accentColors)[number]>;\n grayColor: PropDef<(typeof grayColors)[number]>;\n material: PropDef<(typeof materials)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number]>;\n radius: PropDef<(typeof radii)[number]>;\n scaling: PropDef<(typeof scalings)[number]>;\n fontFamily: PropDef<(typeof fontFamilies)[number]>;\n};\n\ntype ThemeOwnProps = GetPropDefTypes<typeof themePropDefs & typeof asChildPropDef>;\n\nexport { themePropDefs };\nexport type { ThemeOwnProps };\n", "import * as React from 'react';\n\n/** A function that throws an error when a value isn't a valid React Element, otherwise returns the value */\nexport const requireReactElement = <T extends React.ReactNode>(children: T): T => {\n const isReactElement = React.isValidElement(children);\n\n if (!isReactElement) {\n throw Error(\n `Expected a single React Element child, but got: ${React.Children.toArray(children)\n .map((child) =>\n typeof child === 'object' && 'type' in child && typeof child.type === 'string'\n ? child.type\n : typeof child\n )\n .join(', ')}`\n );\n }\n\n return children;\n};\n", "import { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\nexport const AspectRatio = AspectRatioPrimitive.Root;\nexport type AspectRatioProps = AspectRatioPrimitive.AspectRatioProps;\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\n\nimport { avatarPropDefs } from './avatar.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface AvatarProps extends MarginProps, AvatarImplProps {}\nconst Avatar = React.forwardRef<AvatarImplElement, AvatarProps>((props, forwardedRef) => {\n const {\n asChild,\n children,\n className,\n style,\n color,\n radius,\n material,\n panelBackground,\n status,\n badge,\n ...imageProps\n } = extractProps(props, avatarPropDefs, marginPropDefs);\n\n if (process.env.NODE_ENV !== 'production') {\n if (status !== undefined && badge !== undefined) {\n console.warn(\n 'Avatar: Cannot use both `status` and `badge` props together. ' +\n 'The `badge` prop will be used and `status` will be ignored.'\n );\n }\n }\n\n // Cheap boolean checks \u2014 no memoization needed\n const isDisabled =\n asChild &&\n children != null &&\n React.isValidElement(children) &&\n ((children.props as any).disabled === true ||\n (children.props as any)['data-disabled'] === true);\n\n const hasIndicator = badge !== undefined || status !== undefined;\n\n return (\n // TODO as a rule, should we rather spread the props on root?\n <AvatarPrimitive.Root\n data-accent-color={color}\n data-radius={radius}\n data-material={material}\n data-panel-background={panelBackground}\n data-disabled={isDisabled || undefined}\n data-has-indicator={hasIndicator || undefined}\n className={classNames('rt-reset', 'rt-AvatarRoot', className)}\n style={style}\n asChild={asChild}\n >\n {getSubtree({ asChild, children }, <AvatarImpl ref={forwardedRef} {...imageProps} />)}\n {badge !== undefined ? (\n <span className=\"rt-AvatarBadge\">{badge}</span>\n ) : status !== undefined ? (\n <span className=\"rt-AvatarStatus\" data-accent-color={status} />\n ) : null}\n </AvatarPrimitive.Root>\n );\n});\nAvatar.displayName = 'Avatar';\n\ntype AvatarImplElement = React.ElementRef<typeof AvatarPrimitive.Image>;\ntype AvatarOwnProps = GetPropDefTypes<typeof avatarPropDefs>;\n\ninterface AvatarImplProps\n extends ComponentPropsWithout<typeof AvatarPrimitive.Image, RemovedProps>,\n AvatarOwnProps {\n // TODO: See if we can automate making prop defs with `required: true` non nullable\n fallback: NonNullable<AvatarOwnProps['fallback']>;\n}\n\nconst AvatarImpl = React.memo(\n React.forwardRef<AvatarImplElement, AvatarImplProps>(\n ({ fallback, onLoadingStatusChange, ...imageProps }, forwardedRef) => {\n const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');\n\n const handleLoadingStatusChange = React.useCallback(\n (newStatus: 'idle' | 'loading' | 'loaded' | 'error') => {\n onLoadingStatusChange?.(newStatus);\n setStatus(newStatus);\n },\n [onLoadingStatusChange],\n );\n\n return (\n <>\n {status === 'idle' || status === 'loading' ? <span className=\"rt-AvatarFallback\" /> : null}\n\n {status === 'error' ? (\n <AvatarPrimitive.Fallback\n className={classNames('rt-AvatarFallback', {\n 'rt-one-letter': typeof fallback === 'string' && fallback.length === 1,\n 'rt-two-letters': typeof fallback === 'string' && fallback.length === 2,\n })}\n delayMs={0}\n >\n {fallback}\n </AvatarPrimitive.Fallback>\n ) : null}\n\n <AvatarPrimitive.Image\n ref={forwardedRef}\n className=\"rt-AvatarImage\"\n {...imageProps}\n onLoadingStatusChange={handleLoadingStatusChange}\n />\n </>\n );\n },\n ),\n);\n\nAvatarImpl.displayName = 'AvatarImpl';\n\nexport { Avatar };\nexport type { AvatarProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef, accentColors } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\nconst variants = ['classic', 'solid', 'soft', 'surface', 'outline'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\nconst objectFitValues = ['cover', 'contain', 'fill', 'scale-down', 'none'] as const;\n\nconst avatarPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '3', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n ...accentColorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n fallback: { type: 'ReactNode', required: true },\n material: { type: 'enum', values: materials, default: undefined },\n /**\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n /**\n * Status indicator color. Renders a small colored dot at the bottom-right corner.\n * Cannot be used together with `badge`.\n */\n status: { type: 'enum', values: accentColors, default: undefined },\n /**\n * Custom badge content. Renders at the bottom-right corner.\n * Cannot be used together with `status`.\n */\n badge: { type: 'ReactNode', default: undefined },\n /**\n * Controls how the avatar image should be resized to fit its container.\n * Defaults to 'cover' which crops the image to fill the avatar.\n * Use 'contain' to show the full image without cropping.\n */\n fit: { type: 'enum', className: 'rt-r-fit', values: objectFitValues, default: 'cover', responsive: true },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n fallback: PropDef<React.ReactNode>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n status: PropDef<(typeof accentColors)[number] | undefined>;\n badge: PropDef<React.ReactNode>;\n fit: PropDef<(typeof objectFitValues)[number]>;\n};\n\nexport { avatarPropDefs };\n", "import * as React from 'react';\n\n/**\n * This is a helper function that is used when a component supports `asChild`\n * using the `Slot` component but its implementation contains nested DOM elements.\n *\n * Using it ensures if a consumer uses the `asChild` prop, the elements are in\n * correct order in the DOM, adopting the intended consumer `children`.\n */\nexport function getSubtree(\n options: { asChild: boolean | undefined; children: React.ReactNode },\n content: React.ReactNode | ((children: React.ReactNode) => React.ReactNode)\n) {\n const { asChild, children } = options;\n if (!asChild) return typeof content === 'function' ? content(children) : content;\n\n const firstChild = React.Children.only(children) as React.ReactElement;\n return React.cloneElement(firstChild, {\n // @ts-expect-error\n children: typeof content === 'function' ? content(firstChild.props.children) : content,\n });\n}\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { badgePropDefs } from './badge.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { Tooltip } from './tooltip.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype BadgeElement = React.ElementRef<'span'>;\ntype BadgeOwnProps = GetPropDefTypes<typeof badgePropDefs>;\n\n// Tooltip props that can be passed to Badge\ninterface BadgeTooltipProps {\n tooltip?: React.ReactNode;\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n tooltipAlign?: 'start' | 'center' | 'end';\n tooltipDelayDuration?: number;\n tooltipDisableHoverableContent?: boolean;\n}\n\ninterface BadgeProps\n extends ComponentPropsWithout<'span', RemovedProps>,\n MarginProps,\n BadgeOwnProps,\n BadgeTooltipProps {}\n\nconst Badge = React.forwardRef<BadgeElement, BadgeProps>((props, forwardedRef) => {\n const {\n asChild,\n className,\n children,\n color,\n radius,\n material,\n panelBackground,\n tooltip,\n tooltipSide = 'top',\n tooltipAlign = 'center',\n tooltipDelayDuration,\n tooltipDisableHoverableContent,\n ...badgeProps\n } = extractProps(props, badgePropDefs, marginPropDefs);\n\n // Memoize material calculation for performance\n const effectiveMaterial = React.useMemo(\n () => material ?? panelBackground,\n [material, panelBackground],\n );\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [panelBackground]);\n\n // Memoize component variable to prevent unnecessary re-renders\n const Comp = React.useMemo(() => (asChild ? Slot.Root : 'span'), [asChild]);\n\n const badge = (\n <Comp\n data-accent-color={color}\n data-radius={radius}\n data-material={effectiveMaterial}\n data-panel-background={effectiveMaterial}\n {...badgeProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-Badge', className)}\n >\n {children}\n </Comp>\n );\n\n // If no tooltip is provided, return the badge as-is\n if (!tooltip) {\n return badge;\n }\n\n // Wrap with Tooltip when tooltip content is provided\n return (\n <Tooltip\n content={tooltip}\n side={tooltipSide}\n align={tooltipAlign}\n delayDuration={tooltipDelayDuration}\n disableHoverableContent={tooltipDisableHoverableContent}\n >\n {badge}\n </Tooltip>\n );\n});\nBadge.displayName = 'Badge';\n\nexport { Badge };\nexport type { BadgeProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['solid', 'soft', 'surface', 'outline', 'ghost', 'classic'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst badgePropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n ...accentColorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n material: { type: 'enum', values: materials, default: undefined },\n /**\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\nexport { badgePropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { tooltipPropDefs } from './tooltip.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TooltipElement = React.ElementRef<typeof TooltipPrimitive.Content>;\ntype TooltipOwnProps = GetPropDefTypes<typeof tooltipPropDefs>;\ninterface TooltipProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>,\n ComponentPropsWithout<typeof TooltipPrimitive.Content, RemovedProps | 'content'>,\n TooltipOwnProps {\n content: React.ReactNode;\n container?: React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Portal>['container'];\n}\nconst Tooltip = React.forwardRef<TooltipElement, TooltipProps>((props, forwardedRef) => {\n const {\n children,\n className,\n open,\n defaultOpen,\n onOpenChange,\n delayDuration,\n disableHoverableContent,\n content,\n container,\n forceMount,\n ...tooltipContentProps\n } = extractProps(props, tooltipPropDefs);\n const rootProps = { open, defaultOpen, onOpenChange, delayDuration, disableHoverableContent };\n return (\n <TooltipPrimitive.Root {...rootProps}>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <TooltipPrimitive.Content\n sideOffset={4}\n collisionPadding={10}\n {...tooltipContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-TooltipContent', className)}\n >\n <Text as=\"p\" className=\"rt-TooltipText\" size=\"1\">\n {content}\n </Text>\n <TooltipPrimitive.Arrow className=\"rt-TooltipArrow\" />\n </TooltipPrimitive.Content>\n </Theme>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n});\nTooltip.displayName = 'Tooltip';\n\nexport { Tooltip };\nexport type { TooltipProps };\n", "import { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst tooltipPropDefs = {\n content: { type: 'ReactNode', required: true },\n width: widthPropDefs.width,\n minWidth: widthPropDefs.minWidth,\n maxWidth: { ...widthPropDefs.maxWidth, default: '360px' },\n} satisfies {\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n content: PropDef<React.ReactNode>;\n};\n\ntype TooltipOwnProps = GetPropDefTypes<typeof tooltipPropDefs & typeof widthPropDefs>;\n\nexport { tooltipPropDefs };\nexport type { TooltipOwnProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { Text } from './text.js';\n\nimport type { blockquotePropDefs } from './blockquote.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype BlockquoteElement = React.ElementRef<'blockquote'>;\ntype BlockQuoteOwnProps = GetPropDefTypes<typeof blockquotePropDefs>;\ninterface BlockquoteProps\n extends ComponentPropsWithout<'blockquote', RemovedProps>,\n MarginProps,\n BlockQuoteOwnProps {}\nconst Blockquote = React.forwardRef<BlockquoteElement, BlockquoteProps>((props, forwardedRef) => {\n const { asChild, children, className, ...blockquoteProps } = props;\n const Comp = asChild ? Slot.Root : 'blockquote';\n return (\n <Text\n asChild\n {...blockquoteProps}\n ref={forwardedRef}\n className={classNames('rt-Blockquote', className)}\n >\n <Comp>{children}</Comp>\n </Text>\n );\n});\nBlockquote.displayName = 'Blockquote';\n\nexport { Blockquote };\nexport type { BlockquoteProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Slot } from './slot.js';\nimport { boxPropDefs } from './box.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { BoxOwnProps } from './box.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype BoxElement = React.ElementRef<'div'>;\ninterface CommonBoxProps extends MarginProps, LayoutProps, BoxOwnProps {}\ntype BoxDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype BoxSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype BoxProps = CommonBoxProps & (BoxSpanProps | BoxDivProps);\n\nconst Box = React.forwardRef<BoxElement, BoxProps>((props, forwardedRef) => {\n const {\n className,\n asChild,\n as: Tag = 'div',\n ...boxProps\n } = extractProps(props, boxPropDefs, layoutPropDefs, marginPropDefs);\n const Comp = asChild ? Slot : Tag;\n return <Comp {...boxProps} ref={forwardedRef} className={classNames('rt-Box', className)} />;\n});\nBox.displayName = 'Box';\n\nexport { Box };\nexport type { BoxProps };\n", "import { Slot as SlotPrimitive } from 'radix-ui';\nexport const Root = SlotPrimitive.Root;\nexport const Slot = SlotPrimitive.Root;\nexport const Slottable: typeof SlotPrimitive.Slottable = SlotPrimitive.Slottable;\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline', 'inline-block', 'block', 'contents'] as const;\n\nconst boxPropDefs = {\n /**\n * Controls whether to render **div** or **span**\n *\n * @example\n * as=\"div\"\n * as=\"span\"\n */\n as: { type: 'enum', values: as, default: 'div' },\n ...asChildPropDef,\n /**\n * Sets the CSS **display** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * display=\"inline-block\"\n * display={{ sm: 'none', lg: 'block' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n */\n display: {\n type: 'enum',\n className: 'rt-r-display',\n values: displayValues,\n responsive: true,\n },\n} satisfies {\n as: PropDef<(typeof as)[number]>;\n display: PropDef<(typeof displayValues)[number]>;\n};\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype BoxOwnProps = GetPropDefTypes<typeof boxPropDefs & typeof asChildPropDef>;\n\nexport { boxPropDefs };\nexport type { BoxOwnProps };\n", "import type { GetPropDefTypes, PropDef } from './prop-def.js';\n\nconst paddingValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\n\nconst paddingPropDefs = {\n /**\n * Sets the CSS **padding** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * p=\"4\"\n * p=\"100px\"\n * p={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding\n */\n p: {\n type: 'enum | string',\n className: 'rt-r-p',\n customProperties: ['--p'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-left** and **padding-right** properties.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * px=\"4\"\n * px=\"100px\"\n * px={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right\n */\n px: {\n type: 'enum | string',\n className: 'rt-r-px',\n customProperties: ['--pl', '--pr'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-top** and **padding-bottom** properties.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * py=\"4\"\n * py=\"100px\"\n * py={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom\n */\n py: {\n type: 'enum | string',\n className: 'rt-r-py',\n customProperties: ['--pt', '--pb'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-top** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * pt=\"4\"\n * pt=\"100px\"\n * pt={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top\n */\n pt: {\n type: 'enum | string',\n className: 'rt-r-pt',\n customProperties: ['--pt'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-right** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * pr=\"4\"\n * pr=\"100px\"\n * pr={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right\n */\n pr: {\n type: 'enum | string',\n className: 'rt-r-pr',\n customProperties: ['--pr'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-bottom** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * pb=\"4\"\n * pb=\"100px\"\n * pb={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom\n */\n pb: {\n type: 'enum | string',\n className: 'rt-r-pb',\n customProperties: ['--pb'],\n values: paddingValues,\n responsive: true,\n },\n /**\n * Sets the CSS **padding-left** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * pl=\"4\"\n * pl=\"100px\"\n * pl={{ sm: '6', lg: '9' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left\n */\n pl: {\n type: 'enum | string',\n className: 'rt-r-pl',\n customProperties: ['--pl'],\n values: paddingValues,\n responsive: true,\n },\n} satisfies {\n p: PropDef<(typeof paddingValues)[number]>;\n px: PropDef<(typeof paddingValues)[number]>;\n py: PropDef<(typeof paddingValues)[number]>;\n pt: PropDef<(typeof paddingValues)[number]>;\n pr: PropDef<(typeof paddingValues)[number]>;\n pb: PropDef<(typeof paddingValues)[number]>;\n pl: PropDef<(typeof paddingValues)[number]>;\n};\n\ntype PaddingProps = GetPropDefTypes<typeof paddingPropDefs>;\n\nexport { paddingPropDefs };\nexport type { PaddingProps };\n", "import { paddingPropDefs } from './padding.props.js';\nimport { heightPropDefs } from './height.props.js';\nimport { widthPropDefs } from './width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from './prop-def.js';\n\nconst overflowValues = ['visible', 'hidden', 'clip', 'scroll', 'auto'] as const;\nconst positionValues = ['static', 'relative', 'absolute', 'fixed', 'sticky'] as const;\n// prettier-ignore\nconst positionEdgeValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-1', '-2', '-3', '-4', '-5', '-6', '-7', '-8', '-9'] as const;\nconst flexShrinkValues = ['0', '1'] as const;\nconst flexGrowValues = ['0', '1'] as const;\nconst alignSelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifySelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\n\nconst layoutPropDefs = {\n ...paddingPropDefs,\n ...widthPropDefs,\n ...heightPropDefs,\n /**\n * Sets the CSS **position** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * position=\"absolute\"\n * position={{ sm: 'absolute', lg: 'sticky' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/position\n */\n position: {\n type: 'enum',\n className: 'rt-r-position',\n values: positionValues,\n responsive: true,\n },\n /**\n * Sets the CSS **inset** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * inset=\"4\"\n * inset=\"100px\"\n * inset={{ sm: '0', lg: '50%' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/inset\n */\n inset: {\n type: 'enum | string',\n className: 'rt-r-inset',\n customProperties: ['--inset'],\n values: positionEdgeValues,\n responsive: true,\n },\n /**\n * Sets the CSS **top** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * top=\"4\"\n * top=\"100px\"\n * top={{ sm: '0', lg: '50%' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/top\n */\n top: {\n type: 'enum | string',\n className: 'rt-r-top',\n customProperties: ['--top'],\n values: positionEdgeValues,\n responsive: true,\n },\n /**\n * Sets the CSS **right** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * right=\"4\"\n * right=\"100px\"\n * right={{ sm: '0', lg: '50%' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/right\n */\n right: {\n type: 'enum | string',\n className: 'rt-r-right',\n customProperties: ['--right'],\n values: positionEdgeValues,\n responsive: true,\n },\n /**\n * Sets the CSS **bottom** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * bottom=\"4\"\n * bottom=\"100px\"\n * bottom={{ sm: '0', lg: '50%' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/bottom\n */\n bottom: {\n type: 'enum | string',\n className: 'rt-r-bottom',\n customProperties: ['--bottom'],\n values: positionEdgeValues,\n responsive: true,\n },\n /**\n * Sets the CSS **left** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * left=\"4\"\n * left=\"100px\"\n * left={{ sm: '0', lg: '50%' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/left\n */\n left: {\n type: 'enum | string',\n className: 'rt-r-left',\n customProperties: ['--left'],\n values: positionEdgeValues,\n responsive: true,\n },\n /**\n * Sets the CSS **overflow** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * overflow=\"hidden\"\n * overflow={{ sm: 'hidden', lg: 'visible' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n */\n overflow: {\n type: 'enum',\n className: 'rt-r-overflow',\n values: overflowValues,\n responsive: true,\n },\n /**\n * Sets the CSS **overflow-x** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * overflowX=\"hidden\"\n * overflowX={{ sm: 'hidden', md: 'visible' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n */\n overflowX: {\n type: 'enum',\n className: 'rt-r-ox',\n values: overflowValues,\n responsive: true,\n },\n /**\n * Sets the CSS **overflow-y** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * overflowY=\"hidden\"\n * overflowY={{ sm: 'hidden', md: 'visible' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n */\n overflowY: {\n type: 'enum',\n className: 'rt-r-oy',\n values: overflowValues,\n responsive: true,\n },\n /**\n * Sets the CSS **flex-basis** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * flexBasis=\"0\"\n * flexBasis=\"100%\"\n * flexBasis={{ sm: '200px', lg: 'auto' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis\n */\n flexBasis: {\n type: 'string',\n className: 'rt-r-fb',\n customProperties: ['--flex-basis'],\n responsive: true,\n },\n /**\n * Sets the CSS **flex-shrink** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * flexShrink=\"0\"\n * flexShrink=\"1\"\n * flexShrink={{ sm: '0', lg: '1' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink\n */\n flexShrink: {\n type: 'enum | string',\n className: 'rt-r-fs',\n customProperties: ['--flex-shrink'],\n values: flexShrinkValues,\n responsive: true,\n },\n /**\n * Sets the CSS **flex-grow** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * flexGrow=\"0\"\n * flexGrow=\"1\"\n * flexGrow={{ sm: '0', lg: '1' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow\n */\n flexGrow: {\n type: 'enum | string',\n className: 'rt-r-fg',\n customProperties: ['--flex-grow'],\n values: flexGrowValues,\n responsive: true,\n },\n /**\n * Sets the CSS **grid-area** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridArea=\"header\"\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\n */\n gridArea: {\n type: 'string',\n className: 'rt-r-ga',\n customProperties: ['--grid-area'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-column** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridColumn=\"1\"\n * gridColumn=\"1 / -1\"\n * gridColumn={{ sm: '1 / 3', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column\n */\n gridColumn: {\n type: 'string',\n className: 'rt-r-gc',\n customProperties: ['--grid-column'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-column-start** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridColumnStart=\"1\"\n * gridColumnStart=\"auto\"\n * gridColumnStart={{ sm: '2', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start\n */\n gridColumnStart: {\n type: 'string',\n className: 'rt-r-gcs',\n customProperties: ['--grid-column-start'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-column-end** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridColumnEnd=\"1\"\n * gridColumnEnd=\"auto\"\n * gridColumnEnd={{ sm: '2', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-end\n */\n gridColumnEnd: {\n type: 'string',\n className: 'rt-r-gce',\n customProperties: ['--grid-column-end'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-row** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridRow=\"1\"\n * gridRow=\"auto\"\n * gridRow={{ sm: '2', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row\n */\n gridRow: {\n type: 'string',\n className: 'rt-r-gr',\n customProperties: ['--grid-row'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-row-start** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridRowStart=\"1\"\n * gridRowStart=\"auto\"\n * gridRowStart={{ sm: '2', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-start\n */\n gridRowStart: {\n type: 'string',\n className: 'rt-r-grs',\n customProperties: ['--grid-row-start'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-row-end** property.\n * Supports CSS strings and responsive objects.\n *\n * @example\n * gridRowEnd=\"1\"\n * gridRowEnd=\"auto\"\n * gridRowEnd={{ sm: '2', lg: 'span 3' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-end\n */\n gridRowEnd: {\n type: 'string',\n className: 'rt-r-gre',\n customProperties: ['--grid-row-end'],\n responsive: true,\n },\n /**\n * Sets the CSS **align-self** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * alignSelf=\"center\"\n * alignSelf={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/align-self\n */\n alignSelf: {\n type: 'enum',\n className: 'rt-r-as',\n values: alignSelfValues,\n responsive: true,\n },\n /**\n * Sets the CSS **justify-self** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * justifySelf=\"center\"\n * justifySelf={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self\n */\n justifySelf: {\n type: 'enum',\n className: 'rt-r-js',\n values: justifySelfValues,\n responsive: true,\n },\n} satisfies {\n position: PropDef<(typeof positionValues)[number]>;\n inset: PropDef<(typeof positionEdgeValues)[number]>;\n top: PropDef<(typeof positionEdgeValues)[number]>;\n right: PropDef<(typeof positionEdgeValues)[number]>;\n bottom: PropDef<(typeof positionEdgeValues)[number]>;\n left: PropDef<(typeof positionEdgeValues)[number]>;\n overflow: PropDef<(typeof overflowValues)[number]>;\n overflowX: PropDef<(typeof overflowValues)[number]>;\n overflowY: PropDef<(typeof overflowValues)[number]>;\n flexBasis: PropDef<string>;\n flexShrink: PropDef<(typeof flexShrinkValues)[number]>;\n flexGrow: PropDef<(typeof flexGrowValues)[number]>;\n gridColumn: PropDef<string>;\n gridColumnStart: PropDef<string>;\n gridColumnEnd: PropDef<string>;\n gridRow: PropDef<string>;\n gridRowStart: PropDef<string>;\n gridRowEnd: PropDef<string>;\n gridArea: PropDef<string>;\n alignSelf: PropDef<(typeof alignSelfValues)[number]>;\n justifySelf: PropDef<(typeof justifySelfValues)[number]>;\n};\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype LayoutProps = GetPropDefTypes<\n typeof paddingPropDefs & typeof widthPropDefs & typeof heightPropDefs & typeof layoutPropDefs\n>;\n\nexport { layoutPropDefs };\nexport type { LayoutProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\nimport { Tooltip } from './tooltip.js';\nimport { useTooltipWrapper } from '../hooks/use-tooltip-wrapper.js';\nimport type { BaseButtonProps } from './_internal/base-button.js';\n\n/**\n * Styles that can be overridden for a particular interaction state\n */\ninterface ButtonOverrideStateStyles {\n color?: string;\n background?: string;\n backgroundColor?: string;\n boxShadow?: string;\n filter?: string;\n outline?: string;\n outlineOffset?: string;\n opacity?: string | number;\n}\n\n/**\n * Full set of override styles keyed by interaction state\n */\ninterface ButtonOverrideStyles {\n /** Default/idle state styles */\n normal?: ButtonOverrideStateStyles;\n /** Hover state styles */\n hover?: ButtonOverrideStateStyles;\n /** Active (mouse down) state styles */\n active?: ButtonOverrideStateStyles;\n /** Toggle pressed state styles (data-state=\"on\") */\n pressed?: ButtonOverrideStateStyles;\n /** Open state styles (e.g., when used as a trigger) */\n open?: ButtonOverrideStateStyles;\n /** Disabled state styles */\n disabled?: ButtonOverrideStateStyles;\n /** Focus-visible outline styles */\n focus?: Pick<ButtonOverrideStateStyles, 'outline' | 'outlineOffset'>;\n}\n\ntype ButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Tooltip configuration props that can be passed to Button\n * These props are forwarded to the underlying Tooltip component\n */\ninterface ButtonTooltipProps {\n /** Content to display in the tooltip on hover/focus */\n tooltip?: React.ReactNode;\n /** Side of the button where the tooltip should appear */\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the tooltip relative to the button */\n tooltipAlign?: 'start' | 'center' | 'end';\n /** Delay before showing the tooltip (in milliseconds) */\n tooltipDelayDuration?: number;\n /** Whether to disable hoverable content behavior */\n tooltipDisableHoverableContent?: boolean;\n}\n\n/**\n * Core Button props excluding the 'as' prop for polymorphic behavior\n * Combines BaseButton props with tooltip functionality\n */\ntype ButtonOwnProps = Omit<BaseButtonProps, 'as'> &\n ButtonTooltipProps & {\n /**\n * When using variant=\"override\", provide token-based styles per state.\n * We propagate these into CSS variables consumed by the override variant.\n */\n overrideStyles?: ButtonOverrideStyles;\n };\n\n/**\n * Polymorphic Button props that support rendering as different HTML elements\n * @template C - The element type to render as (defaults to 'button')\n */\ntype ButtonProps<C extends React.ElementType = 'button'> = ButtonOwnProps & {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & Omit<React.ComponentPropsWithoutRef<C>, keyof ButtonOwnProps>;\n\n/**\n * Button component type that supports polymorphic rendering\n * @template C - The element type to render as\n */\ntype ButtonComponent = <C extends React.ElementType = 'button'>(props: ButtonProps<C> & { ref?: React.ForwardedRef<ButtonElement> }) => React.ReactElement | null;\n\n/**\n * Button component for triggering actions throughout your interface\n *\n * The Button component is the primary interactive element in the Kookie User Interface.\n * It provides six visual variants, four sizes, comprehensive color options, and built-in\n * tooltip support. The component automatically handles icon sizing, supports responsive\n * layouts, and provides accessibility compliance out of the box.\n *\n * @example\n * ```tsx\n * // Basic button\n * <Button>Click me</Button>\n *\n * // Button with variant and size\n * <Button variant=\"solid\" size=\"3\">Primary Action</Button>\n *\n * // Button with tooltip\n * <Button tooltip=\"Save your progress\">Save</Button>\n *\n * // Polymorphic button as link\n * <Button as=\"a\" href=\"/dashboard\">Go to Dashboard</Button>\n * ```\n */\nconst Button = React.forwardRef(\n (\n { className, style, tooltip, tooltipSide = 'top', tooltipAlign = 'center', tooltipDelayDuration, tooltipDisableHoverableContent, overrideStyles, ...props }: ButtonProps,\n forwardedRef: React.ForwardedRef<ButtonElement>,\n ) => {\n // Use shared tooltip wrapper hook for accessibility props\n const { tooltipId, hasTooltip, accessibilityProps: tooltipAccessibilityProps } = useTooltipWrapper(tooltip);\n\n // Create the base button element with tooltip accessibility props\n // Map overrideStyles to CSS variables consumed by the override variant rules\n const overrideVars = React.useMemo(() => {\n if (!overrideStyles) return undefined;\n const vars: Record<string, string | number> = {};\n const setVar = (key: string, value: string | number | undefined) => {\n if (value !== undefined) vars[key] = value;\n };\n const apply = (prefix: string, s?: ButtonOverrideStateStyles) => {\n if (!s) return;\n setVar(`--button-override-${prefix}color`, s.color);\n setVar(`--button-override-${prefix}background`, s.background);\n setVar(`--button-override-${prefix}background-color`, s.backgroundColor);\n setVar(`--button-override-${prefix}box-shadow`, s.boxShadow);\n setVar(`--button-override-${prefix}filter`, s.filter);\n setVar(`--button-override-${prefix}outline`, s.outline);\n setVar(`--button-override-${prefix}outline-offset`, s.outlineOffset);\n setVar(`--button-override-${prefix}opacity`, s.opacity);\n };\n\n apply('', overrideStyles.normal);\n apply('hover-', overrideStyles.hover);\n apply('active-', overrideStyles.active);\n apply('pressed-', overrideStyles.pressed);\n apply('open-', overrideStyles.open);\n apply('disabled-', overrideStyles.disabled);\n\n if (overrideStyles.focus) {\n setVar('--button-override-focus-outline', overrideStyles.focus.outline);\n setVar('--button-override-focus-outline-offset', overrideStyles.focus.outlineOffset);\n }\n\n return vars as React.CSSProperties;\n }, [overrideStyles]);\n\n // Combine override styles with user-provided styles\n const combinedStyle = React.useMemo(() => (overrideVars ? { ...overrideVars, ...style } : style), [overrideVars, style]);\n\n const button = <BaseButton {...props} {...tooltipAccessibilityProps} ref={forwardedRef} className={classNames('rt-Button', className)} style={combinedStyle} />;\n\n // If no tooltip is provided, return the button as-is for better performance\n if (!hasTooltip) {\n return button;\n }\n\n // Wrap with Tooltip when tooltip content is provided\n // This creates a compound component that handles both button and tooltip functionality\n return (\n <Tooltip content={tooltip} side={tooltipSide} align={tooltipAlign} delayDuration={tooltipDelayDuration} disableHoverableContent={tooltipDisableHoverableContent} id={tooltipId}>\n {button}\n </Tooltip>\n );\n },\n) as ButtonComponent & { displayName?: string };\n\nButton.displayName = 'Button';\n\nexport { Button };\nexport type { ButtonProps, ButtonOverrideStyles, ButtonOverrideStateStyles };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\nimport { composeRefs } from 'radix-ui/internal';\n\nimport { baseButtonPropDefs } from './base-button.props.js';\nimport { Flex } from '../flex.js';\nimport { Spinner } from '../spinner.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { extractProps } from '../../helpers/extract-props.js';\nimport { mapResponsiveProp, mapButtonSizeToSpinnerSize } from '../../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../../props/margin.props.js';\n\nimport type { MarginProps } from '../../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../../props/prop-def.js';\n\ntype BaseButtonElement = React.ElementRef<'button'>;\ntype BaseButtonOwnProps = GetPropDefTypes<typeof baseButtonPropDefs>;\n\n/**\n * Polymorphic BaseButton props that support rendering as different HTML elements\n * Uses the proper ComponentPropsWithout pattern for type safety\n * @template C - The element type to render as (defaults to 'button')\n */\ntype PolymorphicBaseButtonProps<C extends React.ElementType = 'button'> = {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & BaseButtonOwnProps &\n MarginProps &\n ComponentPropsWithout<C, RemovedProps | keyof BaseButtonOwnProps | keyof MarginProps | 'as'>;\n\n/**\n * BaseButton props interface that combines all available props\n */\ninterface BaseButtonProps extends PolymorphicBaseButtonProps {}\n\n/**\n * BaseButton component that provides the core button functionality\n *\n * This is the foundational button component that handles all the complex logic\n * including loading states, accessibility, performance optimizations, and\n * polymorphic rendering. It's used by Button, IconButton, and other button\n * variants to ensure consistent behavior across the design system.\n *\n * Key features:\n * - Loading state with spinner and accessibility announcements\n * - Performance optimizations for backdrop-filter effects\n * - Comprehensive accessibility support\n * - Polymorphic rendering support\n * - Material/panel background handling\n *\n * @example\n * ```tsx\n * // Basic usage\n * <BaseButton>Click me</BaseButton>\n *\n * // With loading state\n * <BaseButton loading>Processing...</BaseButton>\n *\n * // Polymorphic rendering\n * <BaseButton as=\"a\" href=\"/link\">Link Button</BaseButton>\n * ```\n */\nconst BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props, forwardedRef) => {\n const { size = baseButtonPropDefs.size.default } = props;\n\n // Extract button-specific props from the combined props object\n const {\n className,\n children,\n asChild,\n as,\n color,\n radius,\n material,\n panelBackground,\n flush,\n disabled = props.loading, // Loading state automatically disables the button\n ...baseButtonProps\n } = extractProps(props, baseButtonPropDefs, marginPropDefs);\n\n // Show deprecation warning for panelBackground when used\n // This helps developers migrate to the new material prop\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn('Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.');\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground for backward compatibility\n const effectiveMaterial = material ?? panelBackground;\n\n // Will-change cleanup for backdrop-filter performance optimization\n // This prevents layout thrashing when using translucent materials\n const buttonRef = React.useRef<HTMLElement>(null);\n\n // Use a ref to track current material value to avoid stale closures in setTimeout\n const materialRef = React.useRef(effectiveMaterial);\n materialRef.current = effectiveMaterial;\n\n React.useEffect(() => {\n const button = buttonRef.current;\n if (!button) return;\n\n const hasTranslucentMaterial = effectiveMaterial === 'translucent';\n\n if (hasTranslucentMaterial) {\n // Add will-change when material is translucent to optimize rendering\n button.style.setProperty('will-change', 'backdrop-filter');\n\n // Track timeout for cleanup\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n // Clean up will-change after transition completes to prevent memory leaks\n const cleanup = () => {\n const transitionDuration = getComputedStyle(button).getPropertyValue('--duration-2') || '75ms';\n const duration = parseInt(transitionDuration) || 75;\n\n timeoutId = setTimeout(() => {\n // Use ref to get current value, not stale closure value\n if (button && materialRef.current !== 'translucent') {\n button.style.setProperty('will-change', 'auto');\n }\n }, duration);\n };\n\n // Listen for material changes to clean up will-change property\n const observer = new MutationObserver(cleanup);\n observer.observe(button, { attributes: true, attributeFilter: ['data-material'] });\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n observer.disconnect();\n button.style.setProperty('will-change', 'auto');\n };\n } else {\n // Remove will-change when material is not translucent\n button.style.setProperty('will-change', 'auto');\n }\n }, [effectiveMaterial]);\n\n // asChild takes precedence over as prop for Radix Slot integration\n // When asChild is true, we use Slot.Root to merge props onto the child element\n // When asChild is false, we render as the specified element (or button by default)\n const Comp = asChild ? Slot.Root : (as || 'button');\n\n // Only pass disabled for elements that support it\n // This prevents invalid HTML attributes on unsupported elements\n const shouldPassDisabled = asChild || !as || ['button', 'input', 'textarea', 'select'].includes(as);\n\n // Determine if we are rendering a real <button> element so we can set a safe\n // default type. Native <button> defaults to type=\"submit\" which can cause\n // accidental form submissions. We default to type=\"button\" unless the user\n // explicitly provided a type or we're using asChild (unknown underlying node).\n const isNativeButtonElement = !asChild && (!as || as === 'button');\n const hasExplicitTypeAttribute = 'type' in (baseButtonProps as Record<string, unknown>);\n\n // Generate unique ID for loading announcements\n const loadingId = React.useId();\n const describedById = props.loading ? `${loadingId}-loading` : undefined;\n\n // Extract button text for accessibility announcements\n const buttonText = React.useMemo(() => {\n if (typeof children === 'string') return children;\n if (React.isValidElement(children) && typeof (children.props as any)?.children === 'string') {\n return (children.props as any).children;\n }\n return 'button';\n }, [children]);\n\n // Enhanced accessibility props for loading state\n // These ensure screen readers announce the loading state properly\n const accessibilityProps = React.useMemo(() => {\n if (props.loading) {\n return {\n 'aria-busy': true,\n 'aria-disabled': true,\n 'aria-describedby': describedById,\n 'aria-label': `${buttonText} (loading)`,\n };\n }\n return {};\n }, [props.loading, describedById, buttonText]);\n\n return (\n <Comp\n // The `data-disabled` attribute enables correct styles when doing `<Button asChild disabled>`\n data-disabled={disabled || undefined}\n data-accent-color={color}\n data-radius={radius}\n data-material={effectiveMaterial}\n data-panel-background={effectiveMaterial}\n data-flush={flush ? 'true' : undefined}\n {...baseButtonProps}\n {...accessibilityProps}\n ref={composeRefs(buttonRef, forwardedRef)}\n className={classNames('rt-reset', 'rt-BaseButton', className)}\n {...(shouldPassDisabled && { disabled })}\n {...(isNativeButtonElement && !hasExplicitTypeAttribute ? { type: 'button' } : {})}\n >\n {props.loading ? (\n <>\n {/**\n * We need a wrapper to set `visibility: hidden` to hide the button content whilst we show the `Spinner`.\n * The button is a flex container with a `gap`, so we use `display: contents` to ensure the correct flex layout.\n *\n * However, `display: contents` removes the content from the accessibility tree in some browsers,\n * so we force remove it with `aria-hidden` and re-add it in the tree with `VisuallyHidden`\n */}\n <span style={{ display: 'contents', visibility: 'hidden' }} aria-hidden>\n {children}\n </span>\n\n {/* Enhanced accessibility for loading state */}\n <VisuallyHidden>\n <span id={describedById}>{buttonText} is loading, please wait...</span>\n {children}\n </VisuallyHidden>\n\n {/* Centered spinner overlay during loading state */}\n <Flex asChild align=\"center\" justify=\"center\" position=\"absolute\" inset=\"0\">\n <span>\n <Spinner size={mapResponsiveProp(size, mapButtonSizeToSpinnerSize)} aria-hidden=\"true\" />\n </span>\n </Flex>\n </>\n ) : (\n children\n )}\n </Comp>\n );\n});\nBaseButton.displayName = 'BaseButton';\n\nexport { BaseButton };\nexport type { BaseButtonProps };\n", "import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { accentColorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../../props/radius.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\n/**\n * Available button sizes for responsive design\n * Size 1: 24px - Compact for toolbars and dense interfaces\n * Size 2: 32px - Standard for most interface contexts\n * Size 3: 40px - Large for important actions and mobile touch targets\n * Size 4: 48px - Extra large for hero sections and maximum impact\n */\nconst sizes = ['1', '2', '3', '4'] as const;\n\n/**\n * Available button variants for different visual contexts\n * - classic: Premium, sophisticated appearance\n * - solid: Primary actions that should be noticed first\n * - soft: Content-heavy interfaces, natural integration\n * - surface: Elevated appearance with subtle depth\n * - outline: Secondary actions that support primary actions\n * - ghost: Utility functions that don't compete for attention\n */\nconst variants = ['classic', 'solid', 'soft', 'surface', 'outline', 'ghost', 'override'] as const;\n\n/**\n * Available panel background options (deprecated)\n * @deprecated Use `materials` instead\n */\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\n/**\n * Available material options for visual rendering\n * - solid: Opaque backgrounds and borders\n * - translucent: Elevated effects with depth and visual separation\n */\nconst materials = ['solid', 'translucent'] as const;\n\n/**\n * Base button prop definitions that define the component's API\n * \n * These props are used by all button variants (Button, IconButton, etc.)\n * to ensure consistent behavior and styling across the design system.\n * \n * Key features:\n * - Responsive sizing with mobile-first approach\n * - Six visual variants for different interface contexts\n * - Comprehensive color system with semantic meanings\n * - Loading states with automatic accessibility\n * - Material system for visual depth and elevation\n * - Polymorphic rendering support via asChild\n * \n * @example\n * ```tsx\n * // Basic button with default props\n * <BaseButton>Click me</BaseButton>\n * \n * // Button with custom size and variant\n * <BaseButton size=\"3\" variant=\"solid\">Primary Action</BaseButton>\n * \n * // Button with loading state\n * <BaseButton loading>Processing...</BaseButton>\n * \n * // Button with material and high contrast\n * <BaseButton material=\"translucent\" highContrast>Elevated Button</BaseButton>\n * ```\n */\nconst baseButtonPropDefs = {\n ...asChildPropDef,\n /**\n * Button size for responsive design and interface density\n * Supports responsive objects: { initial: '1', sm: '2', md: '3', lg: '4' }\n */\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n /**\n * Visual variant that determines the button's appearance and context\n */\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n ...accentColorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n /**\n * Loading state that shows a spinner and disables interaction\n * Automatically sets disabled=true and provides accessibility announcements\n */\n loading: { type: 'boolean', className: 'rt-loading', default: false },\n /**\n * Full width mode that expands the button to fill its container\n * Useful for mobile layouts and form submissions\n */\n fullWidth: { type: 'boolean', className: 'rt-full-width', default: false },\n /**\n * Material type for visual rendering and depth effects\n * Controls how the button renders its visual elements\n */\n material: { type: 'enum', values: materials, default: undefined },\n /**\n * Panel background type (deprecated)\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n /**\n * Flush mode that removes visual padding for seamless text integration\n * Only effective with ghost variant\n */\n flush: { type: 'boolean', default: false },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n loading: PropDef<boolean>;\n fullWidth: PropDef<boolean>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n flush: PropDef<boolean>;\n};\n\nexport { baseButtonPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { Slot } from './slot.js';\nimport { flexPropDefs } from './flex.props.js';\n\nimport type { FlexOwnProps } from './flex.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\n\ntype FlexElement = React.ElementRef<'div'>;\ninterface CommonFlexProps extends MarginProps, LayoutProps, FlexOwnProps {}\ntype FlexDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype FlexSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype FlexProps = CommonFlexProps & (FlexSpanProps | FlexDivProps);\n\nconst Flex = React.forwardRef<FlexElement, FlexProps>((props, forwardedRef) => {\n const {\n className,\n asChild,\n as: Tag = 'div',\n ...flexProps\n } = extractProps(props, flexPropDefs, layoutPropDefs, marginPropDefs);\n const Comp = asChild ? Slot : Tag;\n return <Comp {...flexProps} ref={forwardedRef} className={classNames('rt-Flex', className)} />;\n});\nFlex.displayName = 'Flex';\n\nexport { Flex };\nexport type { FlexProps };\n", "import type { PropDef } from './prop-def.js';\n\nconst gapValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\n\nconst gapPropDefs = {\n /**\n * Sets the CSS **gap** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * gap=\"4\"\n * gap=\"20px\"\n * gap={{ sm: '2', lg: '3em' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/gap\n */\n gap: {\n type: 'enum | string',\n className: 'rt-r-gap',\n customProperties: ['--gap'],\n values: gapValues,\n responsive: true,\n },\n /**\n * Sets the CSS **row-gap** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * gapX=\"4\"\n * gapX=\"20px\"\n * gapX={{ sm: '2', lg: '3em' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap\n */\n gapX: {\n type: 'enum | string',\n className: 'rt-r-cg',\n customProperties: ['--column-gap'],\n values: gapValues,\n responsive: true,\n },\n /**\n * Sets the CSS **column-gap** property.\n * Supports space scale values, CSS strings, and responsive objects.\n *\n * @example\n * gapY=\"4\"\n * gapY=\"20px\"\n * gapY={{ sm: '2', lg: '3em' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap\n */\n gapY: {\n type: 'enum | string',\n className: 'rt-r-rg',\n customProperties: ['--row-gap'],\n values: gapValues,\n responsive: true,\n },\n} satisfies {\n gap: PropDef<(typeof gapValues)[number]>;\n gapX: PropDef<(typeof gapValues)[number]>;\n gapY: PropDef<(typeof gapValues)[number]>;\n};\n\nexport { gapPropDefs };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { gapPropDefs } from '../props/gap.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline-flex', 'flex'] as const;\nconst directionValues = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifyValues = ['start', 'center', 'end', 'between'] as const;\nconst wrapValues = ['nowrap', 'wrap', 'wrap-reverse'] as const;\n\nconst flexPropDefs = {\n /**\n * Controls whether to render **div** or **span**\n *\n * @example\n * as=\"div\"\n * as=\"span\"\n */\n as: { type: 'enum', values: as, default: 'div' },\n ...asChildPropDef,\n /**\n * Sets the CSS **display** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * display=\"inline-flex\"\n * display={{ sm: 'none', lg: 'flex' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n */\n display: {\n type: 'enum',\n className: 'rt-r-display',\n values: displayValues,\n responsive: true,\n },\n /**\n * Sets the CSS **flex-direction** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * direction=\"column\"\n * direction={{ sm: 'column', lg: 'row' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction\n */\n direction: {\n type: 'enum',\n className: 'rt-r-fd',\n values: directionValues,\n responsive: true,\n },\n /**\n * Sets the CSS **align-items** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * align=\"center\"\n * align={{ sm: 'baseline', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n */\n align: {\n type: 'enum',\n className: 'rt-r-ai',\n values: alignValues,\n responsive: true,\n },\n /**\n * Sets the CSS **justify-content** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * justify=\"between\"\n * justify={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n */\n justify: {\n type: 'enum',\n className: 'rt-r-jc',\n values: justifyValues,\n parseValue: parseJustifyValue,\n responsive: true,\n },\n /**\n * Sets the CSS **flex-wrap** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * wrap=\"wrap\"\n * wrap={{ sm: 'wrap', lg: 'nowrap' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap\n */\n wrap: {\n type: 'enum',\n className: 'rt-r-fw',\n values: wrapValues,\n responsive: true,\n },\n ...gapPropDefs,\n} satisfies {\n as: PropDef<(typeof as)[number]>;\n display: PropDef<(typeof displayValues)[number]>;\n direction: PropDef<(typeof directionValues)[number]>;\n align: PropDef<(typeof alignValues)[number]>;\n justify: PropDef<(typeof justifyValues)[number]>;\n wrap: PropDef<(typeof wrapValues)[number]>;\n};\n\nfunction parseJustifyValue(value: string) {\n return value === 'between' ? 'space-between' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype FlexOwnProps = GetPropDefTypes<\n typeof flexPropDefs & typeof gapPropDefs & typeof asChildPropDef\n>;\n\nexport { flexPropDefs };\nexport type { FlexOwnProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Flex } from './flex.js';\nimport { spinnerPropDefs } from './spinner.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SpinnerElement = React.ElementRef<'span'>;\ntype SpinnerOwnProps = GetPropDefTypes<typeof spinnerPropDefs>;\ninterface SpinnerProps\n extends ComponentPropsWithout<'span', RemovedProps>,\n MarginProps,\n SpinnerOwnProps {}\nconst Spinner = React.forwardRef<SpinnerElement, SpinnerProps>((props, forwardedRef) => {\n const { className, children, loading, ...spinnerProps } = extractProps(\n props,\n spinnerPropDefs,\n marginPropDefs\n );\n\n if (!loading) return children;\n\n const spinner = (\n <span {...spinnerProps} ref={forwardedRef} className={classNames('rt-Spinner', className)}>\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n <span className=\"rt-SpinnerLeaf\" />\n </span>\n );\n\n if (children === undefined) return spinner;\n\n return (\n <Flex asChild position=\"relative\" align=\"center\" justify=\"center\">\n <span>\n {/**\n * `display: contents` removes the content from the accessibility tree in some browsers,\n * so we force remove it with `aria-hidden`\n */}\n <span aria-hidden style={{ display: 'contents', visibility: 'hidden' }} inert={undefined}>\n {children}\n </span>\n\n <Flex asChild align=\"center\" justify=\"center\" position=\"absolute\" inset=\"0\">\n <span>{spinner}</span>\n </Flex>\n </span>\n </Flex>\n );\n});\nSpinner.displayName = 'Spinner';\n\nexport { Spinner };\nexport type { SpinnerProps };\n", "import type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\n\nconst spinnerPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n loading: { type: 'boolean', default: true },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n loading: PropDef<boolean>;\n};\n\nexport { spinnerPropDefs };\n", "import { VisuallyHidden as VisuallyHiddenPrimitive } from 'radix-ui';\nexport const VisuallyHidden = VisuallyHiddenPrimitive.Root;\nexport const Root = VisuallyHiddenPrimitive.Root;\nexport type VisuallyHiddenProps = VisuallyHiddenPrimitive.VisuallyHiddenProps;\n", "import type { baseButtonPropDefs } from '../components/_internal/base-button.props.js';\nimport type { calloutRootPropDefs } from '../components/callout.props.js';\nimport type { spinnerPropDefs } from '../components/spinner.props.js';\nimport type { textPropDefs } from '../components/text.props.js';\nimport type { Responsive } from '../props/prop-def.js';\n\nfunction mapResponsiveProp<Input extends string, Output>(\n propValue: Responsive<Input> | undefined,\n mapValue: (value: Input) => Output\n): Responsive<Output> | undefined {\n if (propValue === undefined) return undefined;\n if (typeof propValue === 'string') {\n return mapValue(propValue);\n }\n return Object.fromEntries(\n Object.entries(propValue).map(([key, value]) => [key, mapValue(value)])\n );\n}\n\nfunction mapCalloutSizeToTextSize(\n size: (typeof calloutRootPropDefs.size.values)[number]\n): (typeof textPropDefs.size.values)[number] {\n return size === '3' ? '3' : size === '1' ? '1' : '2';\n}\n\nfunction mapButtonSizeToSpinnerSize(\n size: (typeof baseButtonPropDefs.size.values)[number]\n): (typeof spinnerPropDefs.size.values)[number] {\n switch (size) {\n case '1':\n return '1';\n case '2':\n case '3':\n return '2';\n case '4':\n return '3';\n }\n}\n\nexport { mapResponsiveProp, mapCalloutSizeToTextSize, mapButtonSizeToSpinnerSize };\n", "import * as React from 'react';\n\n/**\n * Hook for managing tooltip accessibility props and conditional rendering.\n * Encapsulates tooltip ID generation and aria-describedby binding.\n *\n * @param tooltip - The tooltip content (if any)\n * @returns Object containing tooltipId, hasTooltip flag, and accessibility props\n *\n * @example\n * ```tsx\n * const { tooltipId, hasTooltip, accessibilityProps } = useTooltipWrapper(tooltip);\n *\n * const button = <button {...accessibilityProps}>Click me</button>;\n *\n * if (!hasTooltip) return button;\n *\n * return <Tooltip id={tooltipId} content={tooltip}>{button}</Tooltip>;\n * ```\n */\nexport function useTooltipWrapper(tooltip: React.ReactNode) {\n const tooltipId = React.useId();\n const hasTooltip = Boolean(tooltip);\n\n const accessibilityProps = React.useMemo(() => (hasTooltip ? { 'aria-describedby': tooltipId } : {}), [hasTooltip, tooltipId]);\n\n return { tooltipId, hasTooltip, accessibilityProps };\n}\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { Text } from './text.js';\nimport { calloutRootPropDefs } from './callout.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { mapResponsiveProp, mapCalloutSizeToTextSize } from '../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type {\n ComponentPropsWithout,\n RemovedProps,\n ComponentPropsAs,\n} from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CalloutRootOwnProps = GetPropDefTypes<typeof calloutRootPropDefs>;\n\ntype CalloutContextValue = {\n size?: CalloutRootOwnProps['size'];\n variant?: CalloutRootOwnProps['variant'];\n color?: CalloutRootOwnProps['color'];\n};\nconst CalloutContext = React.createContext<CalloutContextValue>({});\n\ntype CalloutRootElement = React.ElementRef<'div'>;\ninterface CalloutRootProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n CalloutRootOwnProps {\n /** Controls the ARIA live region behavior for screen readers */\n live?: 'off' | 'polite' | 'assertive';\n /** Semantic role for the callout */\n role?: 'alert' | 'status' | 'note';\n}\nconst CalloutRoot = React.forwardRef<CalloutRootElement, CalloutRootProps>(\n (props, forwardedRef) => {\n const {\n size = calloutRootPropDefs.size.default,\n live = 'polite',\n role = 'status',\n variant,\n } = props;\n const { asChild, children, className, color, panelBackground, material, ...rootProps } =\n extractProps(props, calloutRootPropDefs, marginPropDefs);\n const Comp = asChild ? Slot.Root : 'div';\n\n // Determine appropriate ARIA attributes based on role and live\n const ariaProps = {\n role,\n 'aria-live': live,\n 'aria-atomic': true,\n };\n\n return (\n <Comp\n data-accent-color={color}\n data-panel-background={panelBackground}\n data-material={material}\n {...rootProps}\n {...ariaProps}\n className={classNames('rt-CalloutRoot', className)}\n ref={forwardedRef}\n >\n <CalloutContext.Provider\n value={React.useMemo(() => ({ size, variant, color }), [size, variant, color])}\n >\n {children}\n </CalloutContext.Provider>\n </Comp>\n );\n },\n);\nCalloutRoot.displayName = 'Callout.Root';\n\ntype CalloutIconElement = React.ElementRef<'div'>;\ninterface CalloutIconProps extends ComponentPropsWithout<'div', RemovedProps> {}\nconst CalloutIcon = React.forwardRef<CalloutIconElement, CalloutIconProps>(\n ({ className, ...props }, forwardedRef) => {\n return (\n <div {...props} className={classNames('rt-CalloutIcon', className)} ref={forwardedRef} />\n );\n },\n);\nCalloutIcon.displayName = 'Callout.Icon';\n\ntype CalloutTextElement = React.ElementRef<'p'>;\ntype CalloutTextProps = ComponentPropsAs<typeof Text, 'p'>;\nconst CalloutText = React.forwardRef<CalloutTextElement, CalloutTextProps>(\n ({ className, ...props }, forwardedRef) => {\n const { size } = React.useContext(CalloutContext);\n return (\n <Text\n as=\"p\"\n size={mapResponsiveProp(size, mapCalloutSizeToTextSize)}\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-CalloutText', className)}\n />\n );\n },\n);\nCalloutText.displayName = 'Callout.Text';\n\nexport { CalloutRoot as Root, CalloutIcon as Icon, CalloutText as Text };\nexport type {\n CalloutRootProps as RootProps,\n CalloutIconProps as IconProps,\n CalloutTextProps as TextProps,\n};\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['soft', 'surface', 'outline', 'classic'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst calloutRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n ...accentColorPropDef,\n ...highContrastPropDef,\n material: { type: 'enum', values: materials, default: undefined },\n /**\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\nexport { calloutRootPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { cardPropDefs } from './card.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CardElement = React.ElementRef<'div'>;\ntype CardOwnProps = GetPropDefTypes<typeof cardPropDefs>;\ninterface CardProps extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, CardOwnProps {}\nconst Card = React.forwardRef<CardElement, CardProps>((props, forwardedRef) => {\n const { asChild, className, panelBackground, material, flush, inset, ...cardProps } = extractProps(\n props,\n cardPropDefs,\n marginPropDefs,\n );\n const effectiveMaterial = material || panelBackground;\n const Comp = asChild ? Slot.Root : 'div';\n return (\n <Comp\n ref={forwardedRef}\n {...cardProps}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n data-flush={flush ? 'true' : undefined}\n data-inset={inset ? 'true' : undefined}\n className={classNames('rt-reset', 'rt-BaseCard', 'rt-Card', className)}\n />\n );\n});\nCard.displayName = 'Card';\n\nexport { Card };\nexport type { CardProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5'] as const;\nconst variants = ['surface', 'outline', 'classic', 'ghost', 'soft'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst cardPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'outline' },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n material: { type: 'enum', values: materials, default: undefined },\n flush: { type: 'boolean', default: false },\n inset: { type: 'boolean', default: false },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n material: PropDef<(typeof materials)[number] | undefined>;\n flush: PropDef<boolean>;\n inset: PropDef<boolean>;\n};\n\nexport { cardPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\n\nimport * as CheckboxGroupPrimitive from './checkbox-group.primitive.js';\nimport { createCheckboxGroupScope } from './checkbox-group.primitive.js';\nimport { checkboxCardsRootPropDefs } from './checkbox-cards.props.js';\nimport { baseCheckboxPropDefs } from './_internal/base-checkbox.props.js';\nimport { Grid } from './grid.js';\nimport { ThickCheckIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { useThemeContext } from './theme.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { Responsive, GetPropDefTypes } from '../props/prop-def.js';\n\nconst CHECKBOX_CARD_GROUP_NAME = 'CheckboxCards';\n\ntype ScopedProps<P> = P & { __scopeCheckboxCards?: Context.Scope };\nconst [createCheckboxCardsContext] = Context.createContextScope(CHECKBOX_CARD_GROUP_NAME, [\n createCheckboxGroupScope,\n]);\nconst useCheckboxGroupScope = createCheckboxGroupScope();\n\ntype CheckboxCardsContextValue = {\n size?: Responsive<(typeof checkboxCardsRootPropDefs.size.values)[number]>;\n variant?: (typeof checkboxCardsRootPropDefs.variant.values)[number];\n highContrast?: boolean;\n};\n\nconst [CheckboxCardsProvider, useCheckboxCardsContext] =\n createCheckboxCardsContext<CheckboxCardsContextValue>(CHECKBOX_CARD_GROUP_NAME);\n\ntype CheckboxCardsRootElement = React.ElementRef<typeof CheckboxGroupPrimitive.Root>;\ntype CheckboxCardsRootOwnProps = GetPropDefTypes<typeof checkboxCardsRootPropDefs>;\ninterface CheckboxCardsRootProps\n extends ComponentPropsWithout<\n typeof CheckboxGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n MarginProps,\n CheckboxCardsRootOwnProps {}\nconst CheckboxCardsRoot = React.forwardRef<CheckboxCardsRootElement, CheckboxCardsRootProps>(\n (props: ScopedProps<CheckboxCardsRootProps>, forwardedRef) => {\n const themeContext = useThemeContext();\n const panelBackground = props.panelBackground ?? themeContext.panelBackground;\n const {\n __scopeCheckboxCards,\n className,\n color,\n panelBackground: _,\n ...rootProps\n } = extractProps(props, checkboxCardsRootPropDefs, marginPropDefs);\n const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxCards);\n return (\n <CheckboxCardsProvider\n scope={__scopeCheckboxCards}\n size={props.size}\n variant={props.variant}\n highContrast={props.highContrast}\n >\n <Grid asChild>\n <CheckboxGroupPrimitive.Root\n {...checkboxGroupScope}\n data-accent-color={color}\n data-panel-background={panelBackground}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-CheckboxCardsRoot', className)}\n />\n </Grid>\n </CheckboxCardsProvider>\n );\n },\n);\nCheckboxCardsRoot.displayName = 'CheckboxCards.Root';\n\ntype CheckboxCardsItemElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxCardsItemProps\n extends ComponentPropsWithout<typeof CheckboxGroupPrimitive.Item, RemovedProps>,\n MarginProps {}\nconst CheckboxCardsItem = React.forwardRef<\n CheckboxCardsItemElement,\n ScopedProps<CheckboxCardsItemProps>\n>(({ __scopeCheckboxCards, children, className, style, ...props }, forwardedRef) => {\n const context = useCheckboxCardsContext('CheckboxCardsItem', __scopeCheckboxCards);\n const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxCards);\n\n const { className: checkboxClassName } = extractProps(\n // Pass size / highContrast values from the context and variant to generate styles\n {\n size: context?.size,\n variant: context?.variant || 'solid',\n highContrast: context?.highContrast,\n },\n // Pass size & variant prop defs to allow it to be extracted\n baseCheckboxPropDefs,\n );\n const variantClass = context?.variant ? `rt-variant-${context.variant}` : undefined;\n const sizeClass = context?.size ? `rt-r-size-${context.size}` : undefined;\n\n return (\n <label\n className={classNames(\n 'rt-BaseCard',\n 'rt-CheckboxCardsItem',\n variantClass,\n sizeClass,\n className,\n )}\n style={style}\n >\n {children}\n <CheckboxGroupPrimitive.Item\n {...checkboxGroupScope}\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-reset',\n 'rt-BaseCheckboxRoot',\n 'rt-CheckboxCardCheckbox',\n checkboxClassName,\n )}\n >\n <CheckboxGroupPrimitive.Indicator\n {...checkboxGroupScope}\n asChild\n className=\"rt-BaseCheckboxIndicator\"\n >\n <ThickCheckIcon />\n </CheckboxGroupPrimitive.Indicator>\n </CheckboxGroupPrimitive.Item>\n </label>\n );\n});\nCheckboxCardsItem.displayName = 'CheckboxCards.Item';\n\nexport { CheckboxCardsRoot as Root, CheckboxCardsItem as Item };\nexport type { CheckboxCardsRootProps as RootProps, CheckboxCardsItemProps as ItemProps };\n", "'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CheckboxPrimitive, Direction } from 'radix-ui';\nimport {\n Context,\n Primitive,\n useComposedRefs,\n RovingFocus,\n useControllableState,\n} from 'radix-ui/internal';\n\nconst { useDirection } = Direction;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroup\n * -----------------------------------------------------------------------------------------------*/\nconst CHECKBOX_GROUP_NAME = 'CheckboxGroup';\n\ntype ScopedProps<P> = P & { __scopeCheckboxGroup?: Context.Scope };\nconst [createCheckboxGroupContext, createCheckboxGroupScope] = Context.createContextScope(\n CHECKBOX_GROUP_NAME,\n [RovingFocus.createRovingFocusGroupScope, CheckboxPrimitive.createCheckboxScope],\n);\nconst useRovingFocusGroupScope = RovingFocus.createRovingFocusGroupScope();\nconst useCheckboxScope = CheckboxPrimitive.createCheckboxScope();\n\ntype CheckboxGroupContextValue = {\n name?: string;\n required: boolean;\n disabled: boolean;\n value?: string[];\n onItemCheck(value: string): void;\n onItemUncheck(value: string): void;\n};\n\nconst [CheckboxGroupProvider, useCheckboxGroupContext] =\n createCheckboxGroupContext<CheckboxGroupContextValue>(CHECKBOX_GROUP_NAME);\n\ntype CheckboxGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocus.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CheckboxGroupProps extends PrimitiveDivProps {\n name?: CheckboxGroupContextValue['name'];\n required?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['required'];\n disabled?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['disabled'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string[];\n value?: CheckboxGroupContextValue['value'];\n onValueChange?: (value: string[]) => void;\n}\n\nconst CheckboxGroup = React.forwardRef<CheckboxGroupElement, CheckboxGroupProps>(\n (props: ScopedProps<CheckboxGroupProps>, forwardedRef) => {\n const {\n __scopeCheckboxGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);\n const direction = useDirection(dir);\n const [value = [], setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n const handleItemCheck = React.useCallback(\n (itemValue: string) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue],\n );\n\n const handleItemUncheck = React.useCallback(\n (itemValue: string) =>\n setValue((prevValue = []) => prevValue.filter((value) => value !== itemValue)),\n [setValue],\n );\n\n return (\n <CheckboxGroupProvider\n scope={__scopeCheckboxGroup}\n name={name}\n required={required}\n disabled={disabled}\n value={value}\n onItemCheck={handleItemCheck}\n onItemUncheck={handleItemUncheck}\n >\n <RovingFocus.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"group\"\n data-disabled={disabled ? '' : undefined}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocus.Root>\n </CheckboxGroupProvider>\n );\n },\n);\n\nCheckboxGroup.displayName = CHECKBOX_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'CheckboxGroupItem';\n\ntype CheckboxGroupItemElement = React.ElementRef<typeof CheckboxPrimitive.Root>;\ntype CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\ninterface CheckboxGroupItemProps\n extends Omit<CheckboxProps, 'checked' | 'defaultChecked' | 'onCheckedChange' | 'name'> {\n value: string;\n}\n\nconst CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGroupItemProps>(\n (props: ScopedProps<CheckboxGroupItemProps>, forwardedRef) => {\n const { __scopeCheckboxGroup, disabled, ...itemProps } = props;\n const context = useCheckboxGroupContext(ITEM_NAME, __scopeCheckboxGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);\n const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);\n const ref = React.useRef<React.ElementRef<typeof CheckboxPrimitive.Root>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value?.includes(itemProps.value);\n\n return (\n <RovingFocus.Item asChild {...rovingFocusGroupScope} focusable={!isDisabled} active={checked}>\n <CheckboxPrimitive.Root\n name={context.name}\n disabled={isDisabled}\n required={context.required}\n checked={checked}\n {...checkboxScope}\n {...itemProps}\n ref={composedRefs}\n onCheckedChange={(checked) => {\n if (checked) {\n context.onItemCheck(props.value);\n } else {\n context.onItemUncheck(props.value);\n }\n }}\n />\n </RovingFocus.Item>\n );\n },\n);\n\nCheckboxGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxGroupIndicator';\n\ntype CheckboxGroupIndicatorElement = React.ElementRef<typeof CheckboxPrimitive.Indicator>;\ntype CheckboxIndicatorProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Indicator>;\ninterface CheckboxGroupIndicatorProps extends CheckboxIndicatorProps {}\n\nconst CheckboxGroupIndicator = React.forwardRef<\n CheckboxGroupIndicatorElement,\n CheckboxGroupIndicatorProps\n>((props: ScopedProps<CheckboxGroupIndicatorProps>, forwardedRef) => {\n const { __scopeCheckboxGroup, ...indicatorProps } = props;\n const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);\n return <CheckboxPrimitive.Indicator {...checkboxScope} {...indicatorProps} ref={forwardedRef} />;\n});\n\nCheckboxGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = CheckboxGroup;\nconst Item = CheckboxGroupItem;\nconst Indicator = CheckboxGroupIndicator;\n\nexport {\n createCheckboxGroupScope,\n //\n CheckboxGroup,\n CheckboxGroupItem,\n CheckboxGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { CheckboxGroupProps, CheckboxGroupItemProps, CheckboxGroupIndicatorProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { gapPropDefs } from '../props/gap.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline-grid', 'grid'] as const;\nconst columnsValues = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst rowsValues = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst flowValues = ['row', 'column', 'dense', 'row-dense', 'column-dense'] as const;\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifyValues = ['start', 'center', 'end', 'between'] as const;\nconst alignContentValues = [\n 'start',\n 'center',\n 'end',\n 'baseline',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n] as const;\nconst justifyItemsValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\n\nconst gridPropDefs = {\n /**\n * Controls whether to render **div** or **span**\n *\n * @example\n * as=\"div\"\n * as=\"span\"\n */\n as: { type: 'enum', values: as, default: 'div' },\n ...asChildPropDef,\n /**\n * Sets the CSS **display** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * display=\"inline-grid\"\n * display={{ sm: 'none', lg: 'grid' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n */\n display: {\n type: 'enum',\n className: 'rt-r-display',\n values: displayValues,\n responsive: true,\n },\n /**\n * Sets the CSS **grid-template** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * template='\"header header\" \"sidebar content\"'\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas\n */\n areas: {\n type: 'string',\n className: 'rt-r-gta',\n customProperties: ['--grid-template-areas'],\n responsive: true,\n },\n /**\n * Sets the CSS **grid-template-columns** property.\n * Supports numeric string values, CSS strings and responsive objects.\n *\n * Use numeric string values to create grid columns of even size.\n *\n * @example\n * columns=\"3\"\n * columns=\"100px 1fr\"\n * columns={{ xs: '1', md: 'auto 1fr' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns\n */\n columns: {\n type: 'enum | string',\n className: 'rt-r-gtc',\n customProperties: ['--grid-template-columns'],\n values: columnsValues,\n parseValue: parseGridValue,\n responsive: true,\n },\n /**\n * Sets the CSS **grid-template-rows** property.\n * Supports numeric string values, CSS strings and responsive objects.\n *\n * Use numeric string values to create grid rows of even size.\n *\n * @example\n * rows=\"3\"\n * rows=\"100px 1fr\"\n * rows={{ xs: '1', md: 'auto 1fr' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows\n */\n rows: {\n type: 'enum | string',\n className: 'rt-r-gtr',\n customProperties: ['--grid-template-rows'],\n values: rowsValues,\n parseValue: parseGridValue,\n responsive: true,\n },\n /**\n * Sets the CSS **grid-auto-flow** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * flow=\"column\"\n * flow={{ sm: 'column', lg: 'row' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow\n */\n flow: {\n type: 'enum',\n className: 'rt-r-gaf',\n values: flowValues,\n responsive: true,\n },\n /**\n * Sets the CSS **align-items** property.\n * Supports the corresponding CSS values and responsive objects.\n *\n * @example\n * align=\"center\"\n * align={{ sm: 'baseline', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n */\n align: {\n type: 'enum',\n className: 'rt-r-ai',\n values: alignValues,\n responsive: true,\n },\n /**\n * Sets the CSS **justify-content** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * justify=\"between\"\n * justify={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n */\n justify: {\n type: 'enum',\n className: 'rt-r-jc',\n values: justifyValues,\n parseValue: parseJustifyValue,\n responsive: true,\n },\n /**\n * Sets the CSS **align-content** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * alignContent=\"between\"\n * alignContent={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/align-content\n */\n alignContent: {\n type: 'enum',\n className: 'rt-r-ac',\n values: alignContentValues,\n parseValue: parseAlignContentValue,\n responsive: true,\n },\n /**\n * Sets the CSS **justify-items** property.\n * Supports a subset of the corresponding CSS values and responsive objects.\n *\n * @example\n * justifyItems=\"center\"\n * justifyItems={{ sm: 'start', lg: 'center' }}\n *\n * @link\n * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items\n */\n justifyItems: {\n type: 'enum',\n className: 'rt-r-ji',\n values: justifyItemsValues,\n responsive: true,\n },\n ...gapPropDefs,\n} satisfies {\n as: PropDef<(typeof as)[number]>;\n display: PropDef<(typeof displayValues)[number]>;\n areas: PropDef<string>;\n columns: PropDef<(typeof columnsValues)[number]>;\n rows: PropDef<(typeof rowsValues)[number]>;\n flow: PropDef<(typeof flowValues)[number]>;\n align: PropDef<(typeof alignValues)[number]>;\n justify: PropDef<(typeof justifyValues)[number]>;\n alignContent: PropDef<(typeof alignContentValues)[number]>;\n justifyItems: PropDef<(typeof justifyItemsValues)[number]>;\n};\n\nfunction parseGridValue(value: string): string {\n if ((gridPropDefs.columns.values as readonly string[]).includes(value)) {\n return value;\n }\n\n return value?.match(/^\\d+$/) ? `repeat(${value}, minmax(0, 1fr))` : value;\n}\n\nfunction parseJustifyValue(value: string) {\n return value === 'between' ? 'space-between' : value;\n}\n\nfunction parseAlignContentValue(value: string) {\n return value === 'between'\n ? 'space-between'\n : value === 'around'\n ? 'space-around'\n : value === 'evenly'\n ? 'space-evenly'\n : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype GridOwnProps = GetPropDefTypes<typeof gridPropDefs & typeof asChildPropDef>;\n\nexport { gridPropDefs };\nexport type { GridOwnProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { gridPropDefs } from './grid.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\nconst variants = ['outline', 'classic', 'ghost', 'soft', 'surface'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst checkboxCardsRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n ...colorPropDef,\n ...highContrastPropDef,\n columns: { ...gridPropDefs.columns, default: 'repeat(auto-fit, minmax(200px, 1fr))' },\n gap: { ...gridPropDefs.gap, default: '4' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n columns: PropDef<(typeof gridPropDefs.columns.values)[number]>;\n gap: PropDef<(typeof gridPropDefs.gap.values)[number]>;\n};\n\nexport { checkboxCardsRootPropDefs };\n", "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\nconst variants = ['classic', 'solid', 'soft', 'outline', 'surface'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst baseCheckboxPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n material: { type: 'enum', values: materials, default: undefined },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n};\n\nexport { baseCheckboxPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Slot } from './slot.js';\nimport { gridPropDefs } from './grid.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GridOwnProps } from './grid.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype GridElement = React.ElementRef<'div'>;\ninterface CommonGridProps extends MarginProps, LayoutProps, GridOwnProps {}\ntype GridDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype GridSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype GridProps = CommonGridProps & (GridSpanProps | GridDivProps);\n\nconst Grid = React.forwardRef<GridElement, GridProps>((props, forwardedRef) => {\n const {\n className,\n asChild,\n as: Tag = 'div',\n ...gridProps\n } = extractProps(props, gridPropDefs, layoutPropDefs, marginPropDefs);\n const Comp = asChild ? Slot : Tag;\n return <Comp {...gridProps} ref={forwardedRef} className={classNames('rt-Grid', className)} />;\n});\nGrid.displayName = 'Grid';\n\nexport { Grid };\nexport type { GridProps };\n", "import React from 'react';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype IconElement = React.ElementRef<'svg'>;\ninterface IconProps extends ComponentPropsWithout<'svg', RemovedProps | 'children'> {}\n\nconst ThickDividerHorizontalIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.75 4.5C0.75 4.08579 1.08579 3.75 1.5 3.75H7.5C7.91421 3.75 8.25 4.08579 8.25 4.5C8.25 4.91421 7.91421 5.25 7.5 5.25H1.5C1.08579 5.25 0.75 4.91421 0.75 4.5Z\"\n />\n </svg>\n );\n});\n\nThickDividerHorizontalIcon.displayName = 'ThickDividerHorizontalIcon';\n\nconst ThickCheckIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.53547 0.62293C8.88226 0.849446 8.97976 1.3142 8.75325 1.66099L4.5083 8.1599C4.38833 8.34356 4.19397 8.4655 3.9764 8.49358C3.75883 8.52167 3.53987 8.45309 3.3772 8.30591L0.616113 5.80777C0.308959 5.52987 0.285246 5.05559 0.563148 4.74844C0.84105 4.44128 1.31533 4.41757 1.62249 4.69547L3.73256 6.60459L7.49741 0.840706C7.72393 0.493916 8.18868 0.396414 8.53547 0.62293Z\"\n />\n </svg>\n );\n});\nThickCheckIcon.displayName = 'ThickCheckIcon';\n\nconst ChevronDownIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <path d=\"M0.135232 3.15803C0.324102 2.95657 0.640521 2.94637 0.841971 3.13523L4.5 6.56464L8.158 3.13523C8.3595 2.94637 8.6759 2.95657 8.8648 3.15803C9.0536 3.35949 9.0434 3.67591 8.842 3.86477L4.84197 7.6148C4.64964 7.7951 4.35036 7.7951 4.15803 7.6148L0.158031 3.86477C-0.0434285 3.67591 -0.0536285 3.35949 0.135232 3.15803Z\" />\n </svg>\n );\n});\nChevronDownIcon.displayName = 'ChevronDownIcon';\n\nconst ThickChevronRightIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.23826 0.201711C3.54108 -0.0809141 4.01567 -0.0645489 4.29829 0.238264L7.79829 3.98826C8.06724 4.27642 8.06724 4.72359 7.79829 5.01174L4.29829 8.76174C4.01567 9.06455 3.54108 9.08092 3.23826 8.79829C2.93545 8.51567 2.91909 8.04108 3.20171 7.73826L6.22409 4.5L3.20171 1.26174C2.91909 0.958928 2.93545 0.484337 3.23826 0.201711Z\"\n />\n </svg>\n );\n});\nThickChevronRightIcon.displayName = 'ThickChevronRightIcon';\n\nconst ThickChevronLeftIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.76174 0.201711C5.45892 -0.0809141 4.98433 -0.0645489 4.70171 0.238264L1.20171 3.98826C0.932757 4.27642 0.932757 4.72359 1.20171 5.01174L4.70171 8.76174C4.98433 9.06455 5.45892 9.08092 5.76174 8.79829C6.06455 8.51567 6.08091 8.04108 5.79829 7.73826L2.77591 4.5L5.79829 1.26174C6.08091 0.958928 6.06455 0.484337 5.76174 0.201711Z\"\n />\n </svg>\n );\n});\nThickChevronLeftIcon.displayName = 'ThickChevronLeftIcon';\n\nconst ThickDotIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\" {...props} ref={forwardedRef}>\n <circle cx=\"4.5\" cy=\"4.5\" r=\"2\" />\n </svg>\n );\n});\nThickDotIcon.displayName = 'ThickDotIcon';\n\nexport { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDividerHorizontalIcon, ThickDotIcon };\nexport type { IconProps };\n\n// Additional minimal icons\nconst CloseIcon = React.forwardRef<IconElement, IconProps>((_props, _forwardedRef) => {\n return (\n <svg\n {..._props}\n ref={_forwardedRef}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n});\nCloseIcon.displayName = 'CloseIcon';\n\nconst PaperclipIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n return (\n <svg\n {...props}\n ref={forwardedRef}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\" />\n </svg>\n );\n});\nPaperclipIcon.displayName = 'PaperclipIcon';\n\nconst FileIcon = React.forwardRef<IconElement, IconProps>((_props, _forwardedRef) => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n );\n});\nFileIcon.displayName = 'FileIcon';\n\nconst FileTextIcon = React.forwardRef<IconElement, IconProps>((_props, _forwardedRef) => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n );\n});\nFileTextIcon.displayName = 'FileTextIcon';\n\nexport { CloseIcon, PaperclipIcon, FileIcon, FileTextIcon };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\n\nimport * as CheckboxGroupPrimitive from './checkbox-group.primitive.js';\nimport { createCheckboxGroupScope } from './checkbox-group.primitive.js';\nimport { checkboxGroupRootPropDefs } from './checkbox-group.props.js';\nimport { ThickCheckIcon } from './icons.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst CHECKBOX_GROUP_NAME = 'CheckboxGroup';\n\ntype ScopedProps<P> = P & { __scopeCheckboxGroup?: Context.Scope };\nconst [createCheckboxGroupContext] = Context.createContextScope(CHECKBOX_GROUP_NAME, [\n createCheckboxGroupScope,\n]);\nconst useCheckboxGroupScope = createCheckboxGroupScope();\n\ntype CheckboxGroupRootOwnProps = GetPropDefTypes<typeof checkboxGroupRootPropDefs>;\ntype CheckboxGroupContextValue = CheckboxGroupRootOwnProps;\n\nconst [CheckboxGroupProvider, useCheckboxGroupContext] =\n createCheckboxGroupContext<CheckboxGroupContextValue>(CHECKBOX_GROUP_NAME);\n\ntype CheckboxGroupRootElement = React.ElementRef<typeof CheckboxGroupPrimitive.Root>;\ninterface CheckboxGroupRootProps\n extends ComponentPropsWithout<\n typeof CheckboxGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n MarginProps,\n CheckboxGroupRootOwnProps {}\nconst CheckboxGroupRoot = React.forwardRef<CheckboxGroupRootElement, CheckboxGroupRootProps>(\n (\n {\n color = checkboxGroupRootPropDefs.color.default,\n highContrast = checkboxGroupRootPropDefs.highContrast.default,\n size = checkboxGroupRootPropDefs.size.default,\n variant = checkboxGroupRootPropDefs.variant.default,\n ...props\n }: ScopedProps<CheckboxGroupRootProps>,\n forwardedRef,\n ) => {\n const { __scopeCheckboxGroup, className, ...rootProps } = extractProps(props, marginPropDefs);\n const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxGroup);\n return (\n <CheckboxGroupProvider\n scope={__scopeCheckboxGroup}\n color={color}\n size={size}\n highContrast={highContrast}\n variant={variant}\n >\n <CheckboxGroupPrimitive.Root\n {...checkboxGroupScope}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-CheckboxGroupRoot', className)}\n />\n </CheckboxGroupProvider>\n );\n },\n);\nCheckboxGroupRoot.displayName = 'CheckboxGroup.Root';\n\ntype CheckboxGroupItemElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxGroupItemProps\n extends ComponentPropsWithout<typeof CheckboxGroupPrimitive.Item, RemovedProps>,\n MarginProps {}\nconst CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGroupItemProps>(\n (_props: ScopedProps<CheckboxGroupItemProps>, forwardedRef) => {\n const { __scopeCheckboxGroup, children, className, style, ...props } = _props;\n const { size } = useCheckboxGroupContext('CheckboxGroupItem', __scopeCheckboxGroup);\n\n // Helper to safely convert size to Text-compatible size\n const getTextSize = (sizeValue: any): '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' => {\n if (typeof sizeValue === 'string' && /^[1-9]$/.test(sizeValue)) {\n return sizeValue as any;\n }\n return '3';\n };\n\n // Render `<Text as=\"label\">` if children\u00A0are provided, otherwise render\n // the solo checkbox to allow building out your custom layouts with it.\n if (children) {\n return (\n <Text\n as=\"label\"\n size={getTextSize(size)}\n className={classNames('rt-CheckboxGroupItem', className)}\n style={style}\n >\n <CheckboxGroupItemCheckbox\n __scopeCheckboxGroup={__scopeCheckboxGroup}\n {...props}\n ref={forwardedRef}\n />\n {children && <span className=\"rt-CheckboxGroupItemInner\">{children}</span>}\n </Text>\n );\n }\n\n return (\n <CheckboxGroupItemCheckbox\n __scopeCheckboxGroup={__scopeCheckboxGroup}\n {...props}\n ref={forwardedRef}\n className={className}\n style={style}\n />\n );\n },\n);\nCheckboxGroupItem.displayName = 'CheckboxGroup.Item';\n\ntype CheckboxGroupItemCheckboxElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxGroupItemCheckboxProps\n extends ComponentPropsWithout<typeof CheckboxGroupPrimitive.Item, RemovedProps> {}\nconst CheckboxGroupItemCheckbox = React.forwardRef<\n CheckboxGroupItemCheckboxElement,\n ScopedProps<CheckboxGroupItemCheckboxProps>\n>(({ __scopeCheckboxGroup, ...props }, forwardedRef) => {\n const context = useCheckboxGroupContext('CheckboxGroupItemCheckbox', __scopeCheckboxGroup);\n const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxGroup);\n const { color, className } = extractProps(\n { ...props, ...context },\n checkboxGroupRootPropDefs,\n marginPropDefs,\n );\n return (\n <CheckboxGroupPrimitive.Item\n {...checkboxGroupScope}\n data-accent-color={color}\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-reset',\n 'rt-BaseCheckboxRoot',\n 'rt-CheckboxGroupItemCheckbox',\n className,\n )}\n >\n <CheckboxGroupPrimitive.Indicator\n {...checkboxGroupScope}\n asChild\n className=\"rt-BaseCheckboxIndicator\"\n >\n <ThickCheckIcon />\n </CheckboxGroupPrimitive.Indicator>\n </CheckboxGroupPrimitive.Item>\n );\n});\nCheckboxGroupItemCheckbox.displayName = 'CheckboxGroup.ItemCheckbox';\n\nexport { CheckboxGroupRoot as Root, CheckboxGroupItem as Item };\nexport type { CheckboxGroupRootProps as RootProps, CheckboxGroupItemProps as ItemProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { baseCheckboxPropDefs } from './_internal/base-checkbox.props.js';\n\nconst checkboxGroupRootPropDefs = {\n ...asChildPropDef,\n ...baseCheckboxPropDefs,\n};\n\nexport { checkboxGroupRootPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { useControllableState } from 'radix-ui/internal';\n\nimport { checkboxPropDefs } from './checkbox.props.js';\nimport { ThickCheckIcon, ThickDividerHorizontalIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CheckboxElement = React.ElementRef<typeof CheckboxPrimitive.Root>;\ntype CheckboxOwnProps = GetPropDefTypes<typeof checkboxPropDefs>;\ninterface CheckboxProps\n extends ComponentPropsWithout<\n typeof CheckboxPrimitive.Root,\n 'asChild' | 'color' | 'defaultValue' | 'children'\n >,\n MarginProps,\n CheckboxOwnProps {}\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>((props, forwardedRef) => {\n const {\n className,\n color,\n material,\n checked: checkedProp,\n defaultChecked: defaultCheckedProp,\n onCheckedChange,\n ...checkboxProps\n } = extractProps(props, checkboxPropDefs, marginPropDefs);\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultCheckedProp ?? false,\n onChange: onCheckedChange,\n });\n\n return (\n <CheckboxPrimitive.Root\n data-accent-color={color}\n data-material={material}\n {...checkboxProps}\n defaultChecked={defaultCheckedProp}\n checked={checked}\n onCheckedChange={setChecked}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseCheckboxRoot', 'rt-CheckboxRoot', className)}\n >\n <CheckboxPrimitive.Indicator\n asChild\n className=\"rt-BaseCheckboxIndicator rt-CheckboxIndicator\"\n >\n {checked === 'indeterminate' ? <ThickDividerHorizontalIcon /> : <ThickCheckIcon />}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\nexport type { CheckboxProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { codePropDefs } from './code.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CodeElement = React.ElementRef<'code'>;\ntype CodeOwnProps = GetPropDefTypes<typeof codePropDefs>;\ninterface CodeProps\n extends ComponentPropsWithout<'code', RemovedProps>,\n MarginProps,\n CodeOwnProps {}\nconst Code = React.forwardRef<CodeElement, CodeProps>((props, forwardedRef) => {\n const { asChild, className, color, ...codeProps } = extractProps(\n props,\n codePropDefs,\n marginPropDefs,\n );\n // Code ghost color prop should work as text color by default\n const resolvedColor = props.variant === 'ghost' ? color || undefined : color;\n const Comp = asChild ? Slot.Root : 'code';\n return (\n <Comp\n data-accent-color={resolvedColor}\n {...codeProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-Code', className)}\n />\n );\n});\nCode.displayName = 'Code';\n\nexport { Code };\nexport type { CodeProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['solid', 'soft', 'outline', 'ghost'] as const;\n\nconst codePropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n responsive: true,\n },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n ...weightPropDef,\n ...accentColorPropDef,\n ...highContrastPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { codePropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { containerPropDefs } from './container.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ContainerOwnProps } from './container.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype ContainerElement = React.ElementRef<'div'>;\ninterface ContainerProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n LayoutProps,\n ContainerOwnProps {}\nconst Container = React.forwardRef<ContainerElement, ContainerProps>(\n ({ width, minWidth, maxWidth, height, minHeight, maxHeight, ...props }, forwardedRef) => {\n const { asChild, children, className, ...containerProps } = extractProps(\n props,\n containerPropDefs,\n layoutPropDefs,\n marginPropDefs\n );\n\n const { className: innerClassName, style: innerStyle } = extractProps(\n { width, minWidth, maxWidth, height, minHeight, maxHeight },\n widthPropDefs,\n heightPropDefs\n );\n\n const Comp = asChild ? Slot.Root : 'div';\n\n return (\n <Comp\n {...containerProps}\n ref={forwardedRef}\n className={classNames('rt-Container', className)}\n >\n {getSubtree({ asChild, children }, (children) => (\n <div className={classNames('rt-ContainerInner', innerClassName)} style={innerStyle}>\n {children}\n </div>\n ))}\n </Comp>\n );\n }\n);\nContainer.displayName = 'Container';\n\nexport { Container };\nexport type { ContainerProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst displayValues = ['none', 'initial'] as const;\nconst alignValues = ['left', 'center', 'right'] as const;\n\nconst containerPropDefs = {\n ...asChildPropDef,\n /**\n * Controls the **max-width** of the content within the container.\n * Supports the predefined values and responsive objects.\n *\n * @values\n * | Size | Max. width |\n * | :------- | ---------: |\n * | size=\"1\" | 448px |\n * | size=\"2\" | 688px |\n * | size=\"3\" | 880px |\n * | size=\"4\" | 1136px |\n *\n * @example\n * size=\"4\"\n * size={{ sm: '3', lg: '4' }}\n *\n * @link\n * https://github.com/radix-ui/themes/blob/main/packages/radix-ui-themes/src/components/container.css\n */\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n default: '4',\n responsive: true,\n },\n /**\n * Controls whether the container is visible or hidden.\n * Supports \"none\", \"initial\", and responsive object values.\n *\n * @example\n * display=\"none\"\n * display={{ sm: 'none', lg: 'initial' }}\n */\n display: {\n type: 'enum',\n className: 'rt-r-display',\n values: displayValues,\n parseValue: parseDisplayValue,\n responsive: true,\n },\n /**\n * Controls the alignment of the content within the container.\n *\n * @example\n * align=\"center\"\n * align={{ initial: 'left', lg: 'center' }}\n */\n align: {\n type: 'enum',\n className: 'rt-r-ai',\n values: alignValues,\n parseValue: parseAlignValue,\n responsive: true,\n },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n display: PropDef<(typeof displayValues)[number]>;\n align: PropDef<(typeof alignValues)[number]>;\n};\n\nfunction parseDisplayValue(value: string) {\n return value === 'initial' ? 'flex' : value;\n}\n\nfunction parseAlignValue(value: string) {\n return value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype ContainerOwnProps = GetPropDefTypes<typeof containerPropDefs & typeof asChildPropDef>;\n\nexport { containerPropDefs };\nexport type { ContainerOwnProps };\n", "/**\n * Context Menu component that provides right-click menu functionality.\n * Requires client-side rendering due to event handling and portal usage.\n */\n'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ContextMenu as ContextMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n contextMenuContentPropDefs,\n contextMenuItemPropDefs,\n contextMenuCheckboxItemPropDefs,\n contextMenuRadioItemPropDefs,\n} from './context-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ThickCheckIcon, ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Kbd } from './kbd.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface ContextMenuRootProps\n extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Root> {}\nconst ContextMenuRoot: React.FC<ContextMenuRootProps> = (props) => (\n <ContextMenuPrimitive.Root {...props} />\n);\nContextMenuRoot.displayName = 'ContextMenu.Root';\n\ntype ContextMenuTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.Trigger>;\ninterface ContextMenuTriggerProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Trigger, RemovedProps> {}\nconst ContextMenuTrigger = React.forwardRef<ContextMenuTriggerElement, ContextMenuTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </ContextMenuPrimitive.Trigger>\n ),\n);\nContextMenuTrigger.displayName = 'ContextMenu.Trigger';\n\ntype ContextMenuContentOwnProps = GetPropDefTypes<typeof contextMenuContentPropDefs>;\ntype ContextMenuContentContextValue = ContextMenuContentOwnProps;\nconst ContextMenuContentContext = React.createContext<ContextMenuContentContextValue>({});\ntype ContextMenuContentElement = React.ElementRef<typeof ContextMenuPrimitive.Content>;\ninterface ContextMenuContentProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Content, RemovedProps>,\n ContextMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial =\n props.material ?? props.panelBackground ?? themeContext.panelBackground;\n\n // Memoize theme context values to prevent unnecessary re-renders\n const memoizedThemeContext = React.useMemo(\n () => ({\n material: effectiveMaterial,\n accentColor: themeContext.accentColor,\n }),\n [effectiveMaterial, themeContext.accentColor],\n );\n\n const {\n size = contextMenuContentPropDefs.size.default,\n variant = contextMenuContentPropDefs.variant.default,\n highContrast = contextMenuContentPropDefs.highContrast.default,\n material = memoizedThemeContext.material,\n } = props;\n const {\n className,\n children,\n color,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...contentProps\n } = extractProps(props, contextMenuContentPropDefs);\n\n // Memoize color resolution to prevent unnecessary re-renders\n const resolvedColor = React.useMemo(\n () => color || memoizedThemeContext.accentColor,\n [color, memoizedThemeContext.accentColor],\n );\n return (\n <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <ContextMenuPrimitive.Content\n data-accent-color={resolvedColor}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n collisionPadding={10}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-ContextMenuContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n <ContextMenuContentContext.Provider\n value={React.useMemo(\n () => ({ size, variant, color: resolvedColor, highContrast, material }),\n [size, variant, resolvedColor, highContrast, material],\n )}\n >\n {children}\n </ContextMenuContentContext.Provider>\n </div>\n </ScrollArea>\n </ContextMenuPrimitive.Content>\n </Theme>\n </ContextMenuPrimitive.Portal>\n );\n },\n);\nContextMenuContent.displayName = 'ContextMenu.Content';\n\ntype ContextMenuLabelElement = React.ElementRef<typeof ContextMenuPrimitive.Label>;\ninterface ContextMenuLabelProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Label, RemovedProps> {}\nconst ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-ContextMenuLabel', className)}\n />\n ),\n);\nContextMenuLabel.displayName = 'ContextMenu.Label';\n\ntype ContextMenuItemElement = React.ElementRef<typeof ContextMenuPrimitive.Item>;\ntype ContextMenuItemOwnProps = GetPropDefTypes<typeof contextMenuItemPropDefs>;\ninterface ContextMenuItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Item, RemovedProps>,\n ContextMenuItemOwnProps {}\nconst ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n color = contextMenuItemPropDefs.color.default,\n shortcut,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.Item\n data-accent-color={color}\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-ContextMenuItem', className)}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </ContextMenuPrimitive.Item>\n );\n },\n);\nContextMenuItem.displayName = 'ContextMenu.Item';\n\ntype ContextMenuGroupElement = React.ElementRef<typeof ContextMenuPrimitive.Group>;\ninterface ContextMenuGroupProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Group, RemovedProps> {}\nconst ContextMenuGroup = React.forwardRef<ContextMenuGroupElement, ContextMenuGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuGroup', 'rt-ContextMenuGroup', className)}\n />\n ),\n);\nContextMenuGroup.displayName = 'ContextMenu.Group';\n\ntype ContextMenuRadioGroupElement = React.ElementRef<typeof ContextMenuPrimitive.RadioGroup>;\ninterface ContextMenuRadioGroupProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.RadioGroup, RemovedProps> {}\nconst ContextMenuRadioGroup = React.forwardRef<\n ContextMenuRadioGroupElement,\n ContextMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.RadioGroup\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuRadioGroup', 'rt-ContextMenuRadioGroup', className)}\n />\n));\nContextMenuRadioGroup.displayName = 'ContextMenu.RadioGroup';\n\ntype ContextMenuRadioItemElement = React.ElementRef<typeof ContextMenuPrimitive.RadioItem>;\ntype ContextMenuRadioItemOwnProps = GetPropDefTypes<typeof contextMenuRadioItemPropDefs>;\ninterface ContextMenuRadioItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.RadioItem, RemovedProps>,\n ContextMenuRadioItemOwnProps {}\nconst ContextMenuRadioItem = React.forwardRef<\n ContextMenuRadioItemElement,\n ContextMenuRadioItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n color = contextMenuRadioItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.RadioItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuRadioItem',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuRadioItem',\n className,\n )}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </ContextMenuPrimitive.ItemIndicator>\n </ContextMenuPrimitive.RadioItem>\n );\n});\nContextMenuRadioItem.displayName = 'ContextMenu.RadioItem';\n\ntype ContextMenuCheckboxItemElement = React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>;\ntype ContextMenuCheckboxItemOwnProps = GetPropDefTypes<typeof contextMenuCheckboxItemPropDefs>;\ninterface ContextMenuCheckboxItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.CheckboxItem, RemovedProps>,\n ContextMenuCheckboxItemOwnProps {}\nconst ContextMenuCheckboxItem = React.forwardRef<\n ContextMenuCheckboxItemElement,\n ContextMenuCheckboxItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n shortcut,\n color = contextMenuCheckboxItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.CheckboxItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuCheckboxItem',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuCheckboxItem',\n className,\n )}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </ContextMenuPrimitive.ItemIndicator>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\nContextMenuCheckboxItem.displayName = 'ContextMenu.CheckboxItem';\n\ninterface ContextMenuSubProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Sub, RemovedProps> {}\nconst ContextMenuSub: React.FC<ContextMenuSubProps> = (props) => (\n <ContextMenuPrimitive.Sub {...props} />\n);\nContextMenuSub.displayName = 'ContextMenu.Sub';\n\ntype ContextMenuSubTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>;\ninterface ContextMenuSubTriggerProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubTrigger, RemovedProps> {}\nconst ContextMenuSubTrigger = React.forwardRef<\n ContextMenuSubTriggerElement,\n ContextMenuSubTriggerProps\n>((props, forwardedRef) => {\n const { className, children, ...subTriggerProps } = props;\n return (\n <ContextMenuPrimitive.SubTrigger\n {...subTriggerProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-ContextMenuSubTriggerIcon\" />\n </div>\n </ContextMenuPrimitive.SubTrigger>\n );\n});\nContextMenuSubTrigger.displayName = 'ContextMenu.SubTrigger';\n\ntype ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;\ninterface ContextMenuSubContentProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubContent, RemovedProps>,\n ContextMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuSubContent = React.forwardRef<\n ContextMenuSubContentElement,\n ContextMenuSubContentProps\n>((props, forwardedRef) => {\n const { size, variant, color, highContrast, material } = React.useContext(ContextMenuContentContext);\n\n const {\n className,\n children,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...subContentProps\n } = extractProps(\n { size, variant, color, highContrast, material, ...props },\n contextMenuContentPropDefs,\n );\n return (\n <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <ContextMenuPrimitive.SubContent\n data-accent-color={color}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n // Side offset accounts for the outer solid box-shadow\n sideOffset={1}\n collisionPadding={10}\n {...subContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-BaseMenuSubContent',\n 'rt-ContextMenuContent',\n 'rt-ContextMenuSubContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n {children}\n </div>\n </ScrollArea>\n </ContextMenuPrimitive.SubContent>\n </Theme>\n </ContextMenuPrimitive.Portal>\n );\n});\nContextMenuSubContent.displayName = 'ContextMenu.SubContent';\n\ntype ContextMenuSeparatorElement = React.ElementRef<typeof ContextMenuPrimitive.Separator>;\ninterface ContextMenuSeparatorProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Separator, RemovedProps> {}\nconst ContextMenuSeparator = React.forwardRef<\n ContextMenuSeparatorElement,\n ContextMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-ContextMenuSeparator', className)}\n />\n));\nContextMenuSeparator.displayName = 'ContextMenu.Separator';\n\nexport {\n ContextMenuRoot as Root,\n ContextMenuTrigger as Trigger,\n ContextMenuContent as Content,\n ContextMenuLabel as Label,\n ContextMenuItem as Item,\n ContextMenuGroup as Group,\n ContextMenuRadioGroup as RadioGroup,\n ContextMenuRadioItem as RadioItem,\n ContextMenuCheckboxItem as CheckboxItem,\n ContextMenuSub as Sub,\n ContextMenuSubTrigger as SubTrigger,\n ContextMenuSubContent as SubContent,\n ContextMenuSeparator as Separator,\n};\n\nexport type {\n ContextMenuRootProps as RootProps,\n ContextMenuTriggerProps as TriggerProps,\n ContextMenuContentProps as ContentProps,\n ContextMenuLabelProps as LabelProps,\n ContextMenuItemProps as ItemProps,\n ContextMenuGroupProps as GroupProps,\n ContextMenuRadioGroupProps as RadioGroupProps,\n ContextMenuRadioItemProps as RadioItemProps,\n ContextMenuCheckboxItemProps as CheckboxItemProps,\n ContextMenuSubProps as SubProps,\n ContextMenuSubTriggerProps as SubTriggerProps,\n ContextMenuSubContentProps as SubContentProps,\n ContextMenuSeparatorProps as SeparatorProps,\n};\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { scrollAreaPropDefs } from './scroll-area.props.js';\nimport { extractMarginProps } from '../helpers/extract-margin-props.js';\nimport { getMarginStyles } from '../helpers/get-margin-styles.js';\nimport { getResponsiveClassNames } from '../helpers/get-responsive-styles.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { mergeStyles } from '../helpers/merge-styles.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ScrollAreaElement = React.ElementRef<typeof ScrollAreaPrimitive.Viewport>;\ntype ScrollAreaOwnProps = GetPropDefTypes<typeof scrollAreaPropDefs>;\ninterface ScrollAreaProps\n extends ComponentPropsWithout<typeof ScrollAreaPrimitive.Root, RemovedProps>,\n ComponentPropsWithout<typeof ScrollAreaPrimitive.Viewport, RemovedProps | 'dir'>,\n MarginProps,\n ScrollAreaOwnProps {}\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>((props, forwardedRef) => {\n const { rest: marginRest, ...marginProps } = extractMarginProps(props);\n const [marginClassNames, marginCustomProperties] = getMarginStyles(marginProps);\n\n const {\n asChild,\n children,\n className,\n style,\n type,\n scrollHideDelay = type !== 'scroll' ? 0 : undefined,\n dir,\n size = scrollAreaPropDefs.size.default,\n radius = scrollAreaPropDefs.radius.default,\n scrollbars = scrollAreaPropDefs.scrollbars.default,\n ...viewportProps\n } = marginRest;\n\n return (\n <ScrollAreaPrimitive.Root\n type={type}\n scrollHideDelay={scrollHideDelay}\n className={classNames('rt-ScrollAreaRoot', marginClassNames, className)}\n style={mergeStyles(marginCustomProperties, style)}\n asChild={asChild}\n >\n {getSubtree({ asChild, children }, (children) => (\n <>\n <ScrollAreaPrimitive.Viewport\n {...viewportProps}\n ref={forwardedRef}\n className=\"rt-ScrollAreaViewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n\n <div className=\"rt-ScrollAreaViewportFocusRing\" />\n\n {scrollbars !== 'vertical' ? (\n <ScrollAreaPrimitive.Scrollbar\n data-radius={radius}\n orientation=\"horizontal\"\n className={classNames(\n 'rt-ScrollAreaScrollbar',\n getResponsiveClassNames({\n className: 'rt-r-size',\n value: size,\n propValues: scrollAreaPropDefs.size.values,\n }),\n )}\n >\n <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n ) : null}\n\n {scrollbars !== 'horizontal' ? (\n <ScrollAreaPrimitive.Scrollbar\n data-radius={radius}\n orientation=\"vertical\"\n className={classNames(\n 'rt-ScrollAreaScrollbar',\n getResponsiveClassNames({\n className: 'rt-r-size',\n value: size,\n propValues: scrollAreaPropDefs.size.values,\n }),\n )}\n >\n <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n ) : null}\n\n {scrollbars === 'both' ? (\n <ScrollAreaPrimitive.Corner className=\"rt-ScrollAreaCorner\" />\n ) : null}\n </>\n ))}\n </ScrollAreaPrimitive.Root>\n );\n});\nScrollArea.displayName = 'ScrollArea';\n\nexport { ScrollArea };\nexport type { ScrollAreaProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst scrollbarsValues = ['vertical', 'horizontal', 'both'] as const;\n\nconst scrollAreaPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n ...radiusPropDef,\n scrollbars: { type: 'enum', values: scrollbarsValues, default: 'both' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n scrollbars: PropDef<(typeof scrollbarsValues)[number]>;\n};\n\nexport { scrollAreaPropDefs };\n", "import type { MarginProps } from '../props/margin.props.js';\n\nexport function extractMarginProps<T extends MarginProps>(props: T) {\n const { m, mx, my, mt, mr, mb, ml, ...rest } = props;\n return { m, mx, my, mt, mr, mb, ml, rest };\n}\n", "import classNames from 'classnames';\n\nimport { getResponsiveStyles } from './get-responsive-styles.js';\nimport { mergeStyles } from './merge-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\n\nconst marginValues = marginPropDefs.m.values;\n\nexport function getMarginStyles(props: MarginProps) {\n const [mClassNames, mCustomProperties] = getResponsiveStyles({\n className: 'rt-r-m',\n customProperties: ['--margin'],\n propValues: marginValues,\n value: props.m,\n });\n\n const [mxClassNames, mxCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mx',\n customProperties: ['--margin-left', '--margin-right'],\n propValues: marginValues,\n value: props.mx,\n });\n\n const [myClassNames, myCustomProperties] = getResponsiveStyles({\n className: 'rt-r-my',\n customProperties: ['--margin-top', '--margin-bottom'],\n propValues: marginValues,\n value: props.my,\n });\n\n const [mtClassNames, mtCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mt',\n customProperties: ['--margin-top'],\n propValues: marginValues,\n value: props.mt,\n });\n\n const [mrClassNames, mrCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mr',\n customProperties: ['--margin-right'],\n propValues: marginValues,\n value: props.mr,\n });\n\n const [mbClassNames, mbCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mb',\n customProperties: ['--margin-bottom'],\n propValues: marginValues,\n value: props.mb,\n });\n\n const [mlClassNames, mlCustomProperties] = getResponsiveStyles({\n className: 'rt-r-ml',\n customProperties: ['--margin-left'],\n propValues: marginValues,\n value: props.ml,\n });\n\n return [\n classNames(\n mClassNames,\n mxClassNames,\n myClassNames,\n mtClassNames,\n mrClassNames,\n mbClassNames,\n mlClassNames\n ),\n mergeStyles(\n mCustomProperties,\n mxCustomProperties,\n myCustomProperties,\n mtCustomProperties,\n mrCustomProperties,\n mbCustomProperties,\n mlCustomProperties\n ),\n ] as const;\n}\n", "import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst contentSizes = ['1', '2'] as const;\nconst contentVariants = ['solid', 'soft'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\nconst submenuBehaviors = ['cascade', 'drill-down'] as const;\n\n// Base props shared between Content and SubContent\nconst baseMenuSharedPropDefs = {\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: contentSizes,\n default: '2',\n responsive: true,\n },\n variant: {\n type: 'enum',\n className: 'rt-variant',\n values: contentVariants,\n default: 'solid',\n },\n material: {\n type: 'enum',\n values: materials,\n default: undefined,\n },\n /**\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: {\n type: 'enum',\n values: panelBackgrounds,\n default: undefined,\n },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof contentSizes)[number]>;\n variant: PropDef<(typeof contentVariants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\n// Content-specific props (includes submenuBehavior)\nconst baseMenuContentPropDefs = {\n ...baseMenuSharedPropDefs,\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior: {\n type: 'enum',\n values: submenuBehaviors,\n default: 'cascade',\n responsive: true,\n },\n} satisfies {\n size: PropDef<(typeof contentSizes)[number]>;\n variant: PropDef<(typeof contentVariants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n submenuBehavior: PropDef<(typeof submenuBehaviors)[number]>;\n};\n\n// SubContent props (no submenuBehavior)\nconst baseMenuSubContentPropDefs = baseMenuSharedPropDefs;\n\nconst baseMenuItemPropDefs = {\n ...asChildPropDef,\n ...colorPropDef,\n shortcut: { type: 'string' },\n} satisfies {\n shortcut: PropDef<string>;\n};\n\nconst baseMenuCheckboxItemPropDefs = {\n ...colorPropDef,\n shortcut: { type: 'string' },\n} satisfies {\n shortcut: PropDef<string>;\n};\n\nconst baseMenuRadioItemPropDefs = {\n ...colorPropDef,\n};\n\nexport {\n baseMenuContentPropDefs,\n baseMenuSubContentPropDefs,\n baseMenuItemPropDefs,\n baseMenuCheckboxItemPropDefs,\n baseMenuRadioItemPropDefs,\n submenuBehaviors,\n};\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { kbdPropDefs } from './kbd.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype KbdElement = React.ElementRef<'kbd'>;\ntype KbdOwnProps = GetPropDefTypes<typeof kbdPropDefs>;\ninterface KbdProps extends ComponentPropsWithout<'kbd', RemovedProps>, MarginProps, KbdOwnProps {}\nconst Kbd = React.forwardRef<KbdElement, KbdProps>((props, forwardedRef) => {\n const { asChild, className, ...kbdProps } = extractProps(props, kbdPropDefs, marginPropDefs);\n const Comp = asChild ? Slot.Root : 'kbd';\n return (\n <Comp\n {...kbdProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-Kbd', className)}\n />\n );\n});\nKbd.displayName = 'Kbd';\n\nexport { Kbd };\nexport type { KbdProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['classic', 'soft'] as const;\n\nconst kbdPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n responsive: true,\n },\n variant: {\n type: 'enum',\n className: 'rt-variant',\n values: variants,\n default: 'classic',\n },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { kbdPropDefs };\n", "import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { Text } from './text.js';\nimport {\n dataListRootPropDefs,\n dataListItemPropDefs,\n dataListLabelPropDefs,\n} from './data-list.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype DataListRootElement = HTMLDListElement;\ntype DataListRootOwnProps = GetPropDefTypes<typeof dataListRootPropDefs>;\ninterface DataListRootProps\n extends ComponentPropsWithout<'dl', RemovedProps>,\n MarginProps,\n DataListRootOwnProps {}\nconst DataListRoot = React.forwardRef<DataListRootElement, DataListRootProps>(\n (props, forwardedRef) => {\n const { className, ...dataListProps } = extractProps(\n props,\n dataListRootPropDefs,\n marginPropDefs\n );\n return (\n <Text asChild>\n <dl\n {...dataListProps}\n ref={forwardedRef}\n className={classNames('rt-DataListRoot', className)}\n />\n </Text>\n );\n }\n);\nDataListRoot.displayName = 'DataList.Root';\n\ntype DataListItemElement = HTMLDivElement;\ntype DataListItemOwnProps = GetPropDefTypes<typeof dataListItemPropDefs>;\ninterface DataListItemProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n DataListItemOwnProps {}\nconst DataListItem = React.forwardRef<DataListItemElement, DataListItemProps>(\n (props, forwardedRef) => {\n const { className, ...itemProps } = extractProps(props, dataListItemPropDefs);\n return (\n <div {...itemProps} ref={forwardedRef} className={classNames('rt-DataListItem', className)} />\n );\n }\n);\nDataListItem.displayName = 'DataList.Item';\n\ntype DataListLabelElement = React.ElementRef<'dt'>;\ntype DataListLabelOwnProps = GetPropDefTypes<typeof dataListLabelPropDefs>;\ninterface DataListLabelProps\n extends ComponentPropsWithout<'dt', RemovedProps>,\n DataListLabelOwnProps {}\nconst DataListLabel = React.forwardRef<DataListLabelElement, DataListLabelProps>(\n (props, forwardedRef) => {\n const { className, color, ...labelProps } = extractProps(props, dataListLabelPropDefs);\n return (\n <dt\n {...labelProps}\n data-accent-color={color}\n ref={forwardedRef}\n className={classNames('rt-DataListLabel', className)}\n />\n );\n }\n);\nDataListLabel.displayName = 'DataList.Label';\n\ntype DataListValueElement = React.ElementRef<'dd'>;\ninterface DataListValueProps extends ComponentPropsWithout<'dd', RemovedProps> {}\nconst DataListValue = React.forwardRef<DataListValueElement, DataListValueProps>(\n ({ children, className, ...props }, forwardedRef) => (\n <dd {...props} ref={forwardedRef} className={classNames(className, 'rt-DataListValue')}>\n {children}\n </dd>\n )\n);\nDataListValue.displayName = 'DataList.Value';\n\nexport {\n DataListRoot as Root,\n DataListItem as Item,\n DataListLabel as Label,\n DataListValue as Value,\n};\nexport type {\n DataListRootProps as RootProps,\n DataListItemProps as ItemProps,\n DataListLabelProps as LabelProps,\n DataListValueProps as ValueProps,\n};\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst orientationValues = ['horizontal', 'vertical'] as const;\nconst sizes = ['1', '2', '3'] as const;\n\nconst dataListRootPropDefs = {\n orientation: {\n type: 'enum',\n className: 'rt-r-orientation',\n values: orientationValues,\n default: 'horizontal',\n responsive: true,\n },\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n default: '2',\n responsive: true,\n },\n trim: {\n ...leadingTrimPropDef.trim,\n className: 'rt-r-trim', // Custom trim styles due to grid layout\n },\n} satisfies {\n orientation: PropDef<(typeof orientationValues)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n trim: typeof leadingTrimPropDef.trim;\n};\n\nconst dataListItemPropDefs = {\n align: {\n type: 'enum',\n className: 'rt-r-ai',\n values: alignValues,\n responsive: true,\n },\n} satisfies {\n align: PropDef<(typeof alignValues)[number]>;\n};\n\nconst dataListLabelPropDefs = {\n ...widthPropDefs,\n ...colorPropDef,\n ...highContrastPropDef,\n};\n\nexport { dataListRootPropDefs, dataListItemPropDefs, dataListLabelPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';\n\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport type {\n ComponentPropsWithout,\n RemovedProps,\n ComponentPropsAs,\n} from '../helpers/component-props.js';\n\ninterface DialogRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst DialogRoot: React.FC<DialogRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nDialogRoot.displayName = 'Dialog.Root';\n\ntype DialogTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\ninterface DialogTriggerProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <DialogPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n ),\n);\nDialogTrigger.displayName = 'Dialog.Trigger';\n\ntype DialogContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface DialogContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n DialogContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n ({ align, ...props }, forwardedRef) => {\n const {\n align: alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = dialogContentPropDefs;\n\n const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });\n\n // Extract panelBackground and material from props\n const { panelBackground: extractedPanelBackground } = extractProps(\n { panelBackground: props.panelBackground },\n { panelBackground: panelBackgroundPropDef },\n );\n\n const { material: extractedMaterial } = extractProps(\n { material: props.material },\n { material: materialPropDef },\n );\n\n // Handle material prop with panelBackground fallback\n const materialValue = React.useMemo(() => {\n if (extractedMaterial !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n return extractedMaterial ?? extractedPanelBackground;\n }, [extractedMaterial, extractedPanelBackground]);\n\n const {\n className,\n forceMount,\n container,\n panelBackground: _,\n material: __,\n ...contentProps\n } = extractProps(props, propDefs);\n\n // Focus management\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useMemo(\n () => (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n\n // Cleanup stuck pointer-events on body\n useBodyPointerEventsCleanup();\n\n // Focus trap effect\n React.useEffect(() => {\n // SSR safety - only run on client\n if (typeof window === 'undefined') return;\n\n const content = contentRef.current;\n if (!content) return;\n\n const focusableElements = content.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n };\n\n content.addEventListener('keydown', handleKeyDown);\n\n // Focus first element when dialog opens\n firstElement.focus();\n\n return () => {\n content.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return (\n <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay\">\n <div className=\"rt-BaseDialogScroll rt-DialogScroll\">\n <div\n className={`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${alignClassName}`}\n >\n <DialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames('rt-BaseDialogContent', 'rt-DialogContent', className)}\n data-material={materialValue}\n data-panel-background={materialValue}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n onCloseAutoFocus={(event) => {\n // Prevent default focus behavior\n event.preventDefault();\n // Restore pointer-events to body (Radix UI fix for issue #1241)\n document.body.style.pointerEvents = '';\n }}\n />\n {/* ARIA live region for screen reader announcements */}\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"rt-sr-only\"\n id=\"dialog-announcement\"\n />\n </div>\n </div>\n </DialogPrimitive.Overlay>\n </Theme>\n </DialogPrimitive.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\ntype DialogTitleElement = React.ElementRef<typeof Heading>;\ntype DialogTitleProps = ComponentPropsWithout<typeof Heading, 'asChild'>;\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n (props, forwardedRef) => (\n <DialogPrimitive.Title asChild>\n <Heading size=\"5\" mb=\"3\" trim=\"start\" {...props} asChild={false} ref={forwardedRef} />\n </DialogPrimitive.Title>\n ),\n);\nDialogTitle.displayName = 'Dialog.Title';\n\ntype DialogDescriptionElement = HTMLParagraphElement;\ntype DialogDescriptionProps = ComponentPropsAs<typeof Text, 'p'>;\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n (props, forwardedRef) => (\n <DialogPrimitive.Description asChild>\n <Text as=\"p\" size=\"3\" {...props} asChild={false} ref={forwardedRef} />\n </DialogPrimitive.Description>\n ),\n);\nDialogDescription.displayName = 'Dialog.Description';\n\ntype DialogCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface DialogCloseProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n ({ children, ...props }, forwardedRef) => (\n <DialogPrimitive.Close {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n ),\n);\nDialogClose.displayName = 'Dialog.Close';\n\nexport {\n DialogRoot as Root,\n DialogTrigger as Trigger,\n DialogContent as Content,\n DialogTitle as Title,\n DialogDescription as Description,\n DialogClose as Close,\n};\n\nexport type {\n DialogRootProps as RootProps,\n DialogTriggerProps as TriggerProps,\n DialogContentProps as ContentProps,\n DialogTitleProps as TitleProps,\n DialogDescriptionProps as DescriptionProps,\n DialogCloseProps as CloseProps,\n};\n", "import * as React from 'react';\n\nlet cleanupInstalled = false;\n\n/**\n * Hook to cleanup stuck pointer-events: none on document.body\n *\n * This addresses an issue where react-remove-scroll (used by Radix UI Dialog)\n * sometimes fails to restore body pointer-events after dialog closes,\n * leaving the page unclickable.\n */\nexport function useBodyPointerEventsCleanup() {\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n if (cleanupInstalled) return;\n\n cleanupInstalled = true;\n\n const hasOpenModal = (): boolean => {\n // Check for open dialogs/alertdialogs\n const hasDialogs = Boolean(\n document.querySelector(\n '[role=\"dialog\"][aria-modal=\"true\"], [role=\"alertdialog\"][aria-modal=\"true\"]',\n ),\n );\n\n // Also check for any Radix overlays that are still mounted\n const hasRadixOverlays = Boolean(\n document.querySelector('[data-radix-popper-content-wrapper], [data-state=\"open\"]'),\n );\n\n return hasDialogs || hasRadixOverlays;\n };\n\n const forceCleanup = () => {\n // Aggressive cleanup - remove pointer-events regardless\n if (document.body.style.pointerEvents === 'none') {\n console.log('[KookieUI] Force cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n\n // Also remove any scroll-lock related attributes\n document.body.removeAttribute('data-scroll-locked');\n document.body.removeAttribute('data-remove-scroll');\n\n // Remove any classes that might be causing issues\n document.body.classList.remove('ReactModal__Body--open');\n }\n };\n\n const safeCleanup = () => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Safe cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n }\n };\n\n // Force cleanup on any click outside modal content\n const onDocumentClick = (event: Event) => {\n const target = event.target as Element;\n if (\n target &&\n !target.closest(\n '[role=\"dialog\"], [role=\"alertdialog\"], [data-radix-popper-content-wrapper]',\n )\n ) {\n // Clicked outside any modal - force cleanup after a short delay\n setTimeout(forceCleanup, 100);\n }\n };\n\n // Force cleanup on ESC key\n const onEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setTimeout(forceCleanup, 200);\n }\n };\n\n // Safe cleanup on other interactions\n const onInteraction = () => {\n setTimeout(safeCleanup, 50);\n };\n\n // Install global listeners\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('keydown', onEscapeKey, true);\n document.addEventListener('pointerup', onInteraction, true);\n document.addEventListener('transitionend', onInteraction, true);\n document.addEventListener('animationend', onInteraction, true);\n\n // Watch for DOM changes that might indicate overlay removal\n const observer = new MutationObserver(() => {\n setTimeout(safeCleanup, 0);\n });\n observer.observe(document.body, { childList: true, subtree: true, attributes: true });\n\n // Fallback periodic cleanup\n const intervalId = setInterval(() => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Periodic cleanup of stuck pointer-events');\n document.body.style.pointerEvents = '';\n }\n }, 1000);\n\n // Initial cleanup\n setTimeout(safeCleanup, 100);\n\n // Cleanup function (keep listeners for app lifetime)\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n}\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { DropdownMenu as DropdownMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n dropdownMenuContentPropDefs,\n dropdownMenuSubContentPropDefs,\n dropdownMenuItemPropDefs,\n dropdownMenuCheckboxItemPropDefs,\n dropdownMenuRadioItemPropDefs,\n} from './dropdown-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport {\n DrillDownProvider,\n SubContext,\n useDrillDownActionsOptional,\n useDrillDownStateOptional,\n useSubContext,\n} from './_internal/dropdown-menu-drill-down.js';\nimport { MenuProvider } from './_internal/menu-context.js';\nimport type { SubmenuBehavior } from './_internal/dropdown-menu-drill-down.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Kbd } from './kbd.js';\n\nimport type { IconProps } from './icons.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes, Responsive } from '../props/prop-def.js';\n\ninterface DropdownMenuRootProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}\nconst DropdownMenuRoot: React.FC<DropdownMenuRootProps> = (props) => (\n <DropdownMenuPrimitive.Root {...props} />\n);\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\ntype DropdownMenuTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.Trigger>;\ninterface DropdownMenuTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Trigger, RemovedProps> {}\nconst DropdownMenuTrigger = React.forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DropdownMenuPrimitive.Trigger>\n ),\n);\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\n/**\n * Internal component that wraps root menu items and handles visibility in drill-down mode.\n * In drill-down mode, this hides when a submenu is active.\n * Uses state-only hook to subscribe only to state changes, not action changes.\n */\nfunction DrillDownRoot({ children }: { children: React.ReactNode }) {\n const drillDownState = useDrillDownStateOptional();\n\n // In cascade mode or when no drill-down context, always show\n if (!drillDownState || drillDownState.behavior === 'cascade') {\n return <>{children}</>;\n }\n\n // In drill-down mode, hide root when a submenu is active\n return (\n <div\n className=\"rt-DropdownMenuDrillDownRoot\"\n data-drill-down-active={drillDownState.isRoot ? undefined : true}\n data-animation-direction={drillDownState.animationDirection ?? undefined}\n >\n {children}\n </div>\n );\n}\n\ntype DropdownMenuContentOwnProps = GetPropDefTypes<typeof dropdownMenuContentPropDefs> & {\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior?: Responsive<SubmenuBehavior>;\n /**\n * When true, skips the ScrollArea wrapper to allow VirtualMenu to handle its own scrolling.\n * Use this when rendering virtualized lists inside the dropdown.\n */\n virtualized?: boolean;\n};\ntype DropdownMenuContentContextValue = Omit<DropdownMenuContentOwnProps, 'submenuBehavior'>;\nconst DropdownMenuContentContext = React.createContext<DropdownMenuContentContextValue>({});\ntype DropdownMenuContentElement = React.ElementRef<typeof DropdownMenuPrimitive.Content>;\ninterface DropdownMenuContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Content, RemovedProps>,\n DropdownMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior?: Responsive<SubmenuBehavior>;\n /**\n * When true, skips the ScrollArea wrapper to allow VirtualMenu to handle its own scrolling.\n * Use this when rendering virtualized lists inside the dropdown.\n */\n virtualized?: boolean;\n}\nconst DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial =\n props.material ?? props.panelBackground ?? themeContext.panelBackground;\n\n // Memoize theme context values to prevent unnecessary re-renders\n const memoizedThemeContext = React.useMemo(\n () => ({\n material: effectiveMaterial,\n accentColor: themeContext.accentColor,\n }),\n [effectiveMaterial, themeContext.accentColor],\n );\n\n const {\n size = dropdownMenuContentPropDefs.size.default,\n variant = dropdownMenuContentPropDefs.variant.default,\n highContrast = dropdownMenuContentPropDefs.highContrast.default,\n material = memoizedThemeContext.material,\n submenuBehavior,\n virtualized = false,\n } = props;\n const {\n className,\n children,\n color,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n submenuBehavior: ___,\n virtualized: ____,\n ...contentProps\n } = extractProps(props, dropdownMenuContentPropDefs);\n\n // Memoize color resolution to prevent unnecessary re-renders\n const resolvedColor = React.useMemo(\n () => color || memoizedThemeContext.accentColor,\n [color, memoizedThemeContext.accentColor],\n );\n const contentBody = (\n <MenuProvider size={size}>\n <DropdownMenuContentContext.Provider\n value={React.useMemo(\n () => ({ size, variant, color: resolvedColor, highContrast, material }),\n [size, variant, resolvedColor, highContrast, material],\n )}\n >\n <DrillDownProvider submenuBehavior={submenuBehavior}>\n <DrillDownRoot>{children}</DrillDownRoot>\n </DrillDownProvider>\n </DropdownMenuContentContext.Provider>\n </MenuProvider>\n );\n\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.Content\n data-accent-color={resolvedColor}\n data-material={material}\n data-panel-background={material}\n align=\"start\"\n sideOffset={4}\n collisionPadding={10}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-DropdownMenuContent',\n className,\n )}\n >\n {virtualized ? (\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport', 'rt-virtualized')}>\n {contentBody}\n </div>\n ) : (\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n {contentBody}\n </div>\n </ScrollArea>\n )}\n </DropdownMenuPrimitive.Content>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n },\n);\nDropdownMenuContent.displayName = 'DropdownMenu.Content';\n\ntype DropdownMenuLabelElement = React.ElementRef<typeof DropdownMenuPrimitive.Label>;\ninterface DropdownMenuLabelProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Label, RemovedProps> {}\nconst DropdownMenuLabel = React.forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-DropdownMenuLabel', className)}\n />\n ),\n);\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\ntype DropdownMenuItemElement = React.ElementRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemOwnProps = GetPropDefTypes<typeof dropdownMenuItemPropDefs>;\ninterface DropdownMenuItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Item, RemovedProps>,\n DropdownMenuItemOwnProps {}\nconst DropdownMenuItem = React.forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n color = dropdownMenuItemPropDefs.color.default,\n shortcut,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.Item\n data-accent-color={color}\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-DropdownMenuItem', className)}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </DropdownMenuPrimitive.Item>\n );\n },\n);\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\ntype DropdownMenuGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.Group>;\ninterface DropdownMenuGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Group, RemovedProps> {}\nconst DropdownMenuGroup = React.forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuGroup', 'rt-DropdownMenuGroup', className)}\n />\n ),\n);\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\ntype DropdownMenuRadioGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>;\ninterface DropdownMenuRadioGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioGroup, RemovedProps> {}\nconst DropdownMenuRadioGroup = React.forwardRef<\n DropdownMenuRadioGroupElement,\n DropdownMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuRadioGroup', 'rt-DropdownMenuRadioGroup', className)}\n />\n));\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\ntype DropdownMenuRadioItemElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>;\ntype DropdownMenuRadioItemOwnProps = GetPropDefTypes<typeof dropdownMenuRadioItemPropDefs>;\ninterface DropdownMenuRadioItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioItem, RemovedProps>,\n DropdownMenuRadioItemOwnProps {}\nconst DropdownMenuRadioItem = React.forwardRef<\n DropdownMenuRadioItemElement,\n DropdownMenuRadioItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n color = dropdownMenuRadioItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.RadioItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuRadioItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuRadioItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickDotIcon className=\"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </DropdownMenuPrimitive.RadioItem>\n );\n});\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\ntype DropdownMenuCheckboxItemElement = React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>;\ntype DropdownMenuCheckboxItemOwnProps = GetPropDefTypes<typeof dropdownMenuCheckboxItemPropDefs>;\ninterface DropdownMenuCheckboxItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.CheckboxItem, RemovedProps>,\n DropdownMenuCheckboxItemOwnProps {}\nconst DropdownMenuCheckboxItem = React.forwardRef<\n DropdownMenuCheckboxItemElement,\n DropdownMenuCheckboxItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n shortcut,\n color = dropdownMenuCheckboxItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.CheckboxItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuCheckboxItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuCheckboxItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\n// Generate unique submenu IDs using React 18's useId for SSR safety\nfunction useSubId() {\n return React.useId();\n}\n\ninterface DropdownMenuSubProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Sub> {\n /**\n * Label displayed in the back button when using drill-down mode.\n * If not provided, defaults to \"Back\".\n */\n label?: React.ReactNode;\n}\nconst DropdownMenuSub: React.FC<DropdownMenuSubProps> = ({ label = 'Back', ...props }) => {\n // Use state-only hook since we only need behavior check\n const drillDownState = useDrillDownStateOptional();\n const subId = useSubId();\n\n // Create context value for SubContent and SubTrigger\n const subContextValue = React.useMemo(\n () => ({ id: subId, label }),\n [subId, label]\n );\n\n // In drill-down mode, we don't use Radix's Sub component\n // We just provide the SubContext and render children\n if (drillDownState?.behavior === 'drill-down') {\n return (\n <SubContext.Provider value={subContextValue}>\n {props.children}\n </SubContext.Provider>\n );\n }\n\n // In cascade mode, use Radix's Sub component normally\n return (\n <SubContext.Provider value={subContextValue}>\n <DropdownMenuPrimitive.Sub {...props} />\n </SubContext.Provider>\n );\n};\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\ntype DropdownMenuSubTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>;\ninterface DropdownMenuSubTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubTrigger, RemovedProps> {}\nconst DropdownMenuSubTrigger = React.forwardRef<\n DropdownMenuSubTriggerElement,\n DropdownMenuSubTriggerProps\n>((props, forwardedRef) => {\n const { className, children, onClick, ...subTriggerProps } = props;\n // Use split hooks: actions for stable push callback, state only for behavior check\n const drillDownActions = useDrillDownActionsOptional();\n const drillDownState = useDrillDownStateOptional();\n const subContext = useSubContext();\n\n // Store onClick in ref to avoid recreating handlers when onClick changes\n const onClickRef = React.useRef(onClick);\n onClickRef.current = onClick;\n\n // Stable click handler - only depends on stable refs\n const handleClick = React.useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (subContext && drillDownActions) {\n drillDownActions.push(subContext.id);\n }\n (onClickRef.current as React.MouseEventHandler<HTMLDivElement> | undefined)?.(e);\n }, [subContext, drillDownActions]);\n\n // Stable keydown handler\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (subContext && drillDownActions) {\n drillDownActions.push(subContext.id);\n }\n }\n }, [subContext, drillDownActions]);\n\n // In drill-down mode, render a button that navigates to the submenu\n if (drillDownState?.behavior === 'drill-down' && subContext) {\n return (\n <div\n role=\"menuitem\"\n tabIndex={0}\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n 'rt-DropdownMenuDrillDownSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon\" />\n </div>\n </div>\n );\n }\n\n // In cascade mode, use Radix's SubTrigger\n return (\n <DropdownMenuPrimitive.SubTrigger\n {...subTriggerProps}\n onClick={onClick as React.MouseEventHandler<HTMLDivElement> | undefined}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon\" />\n </div>\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\n// Separator is defined here (before SubContent) because it's used in drill-down mode\ntype DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;\ninterface DropdownMenuSeparatorProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Separator, RemovedProps> {}\nconst DropdownMenuSeparator = React.forwardRef<\n DropdownMenuSeparatorElement,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/**\n * Internal component for the drill-down back button.\n * Uses actions-only hook since it only needs to call pop(), never reads state.\n * This prevents re-renders when drill-down state changes.\n */\nfunction DrillDownBackItem({ label }: { label: React.ReactNode }) {\n // Use actions-only hook for stable pop callback - prevents re-renders on stack changes\n const { pop } = useDrillDownActionsOptional() ?? {};\n\n // Stable click handler\n const handleClick = React.useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n pop?.();\n }, [pop]);\n\n // Stable keydown handler\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n pop?.();\n }\n }, [pop]);\n\n return (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuDrillDownBackItem',\n )}\n >\n <ThickChevronLeftIcon className=\"rt-DropdownMenuDrillDownBackIcon\" />\n <span className=\"rt-DropdownMenuDrillDownBackLabel\">{label}</span>\n </div>\n );\n}\n\ntype DropdownMenuSubContentElement = React.ElementRef<typeof DropdownMenuPrimitive.SubContent>;\ninterface DropdownMenuSubContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubContent, RemovedProps>,\n DropdownMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n}\nconst DropdownMenuSubContent = React.forwardRef<\n DropdownMenuSubContentElement,\n DropdownMenuSubContentProps\n>((props, forwardedRef) => {\n // Get context values directly - memoization at provider level handles stability\n const { size, variant, color, highContrast, material } = React.useContext(\n DropdownMenuContentContext,\n );\n // Use state-only hook since we only need behavior and isActive (no actions)\n const drillDownState = useDrillDownStateOptional();\n const subContext = useSubContext();\n\n const {\n className,\n children,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...subContentProps\n } = extractProps(\n { size, variant, color, highContrast, material, ...props },\n dropdownMenuSubContentPropDefs,\n );\n\n // In drill-down mode, render inline instead of in a portal\n if (drillDownState?.behavior === 'drill-down' && subContext) {\n const isActive = drillDownState.isActive(subContext.id);\n\n return (\n <div\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n role=\"menu\"\n aria-label={typeof subContext.label === 'string' ? subContext.label : undefined}\n data-drill-down-active={isActive ? true : undefined}\n data-animation-direction={drillDownState.animationDirection ?? undefined}\n className={classNames(\n 'rt-DropdownMenuDrillDownPanel',\n className,\n )}\n >\n <DrillDownBackItem label={subContext.label} />\n <DropdownMenuSeparator />\n {children}\n </div>\n );\n }\n\n // In cascade mode, use Portal and Radix's SubContent\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.SubContent\n data-accent-color={color}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n // Side offset accounts for the outer solid box-shadow\n sideOffset={1}\n collisionPadding={10}\n {...subContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-BaseMenuSubContent',\n 'rt-DropdownMenuContent',\n 'rt-DropdownMenuSubContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n {children}\n </div>\n </ScrollArea>\n </DropdownMenuPrimitive.SubContent>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n});\nDropdownMenuSubContent.displayName = 'DropdownMenu.SubContent';\n\ntype DropdownMenuTriggerIconElement = React.ElementRef<'svg'>;\ninterface DropdownMenuTriggerIconProps extends IconProps {}\nconst DropdownMenuTriggerIcon = React.forwardRef<\n DropdownMenuTriggerIconElement,\n DropdownMenuTriggerIconProps\n>((props, forwardedRef) => (\n <ChevronDownIcon {...props} ref={forwardedRef} className=\"rt-DropdownMenuTriggerIcon\" />\n));\nDropdownMenuTriggerIcon.displayName = 'DropdownMenu.TriggerIcon';\n\nexport {\n DropdownMenuRoot as Root,\n DropdownMenuTrigger as Trigger,\n DropdownMenuTriggerIcon as TriggerIcon,\n DropdownMenuContent as Content,\n DropdownMenuLabel as Label,\n DropdownMenuItem as Item,\n DropdownMenuGroup as Group,\n DropdownMenuRadioGroup as RadioGroup,\n DropdownMenuRadioItem as RadioItem,\n DropdownMenuCheckboxItem as CheckboxItem,\n DropdownMenuSub as Sub,\n DropdownMenuSubTrigger as SubTrigger,\n DropdownMenuSubContent as SubContent,\n DropdownMenuSeparator as Separator,\n};\n\nexport type {\n DropdownMenuRootProps as RootProps,\n DropdownMenuTriggerProps as TriggerProps,\n DropdownMenuTriggerIconProps as TriggerIconProps,\n DropdownMenuContentProps as ContentProps,\n DropdownMenuLabelProps as LabelProps,\n DropdownMenuItemProps as ItemProps,\n DropdownMenuGroupProps as GroupProps,\n DropdownMenuRadioGroupProps as RadioGroupProps,\n DropdownMenuRadioItemProps as RadioItemProps,\n DropdownMenuCheckboxItemProps as CheckboxItemProps,\n DropdownMenuSubProps as SubProps,\n DropdownMenuSubTriggerProps as SubTriggerProps,\n DropdownMenuSubContentProps as SubContentProps,\n DropdownMenuSeparatorProps as SeparatorProps,\n SubmenuBehavior,\n};\n", "'use client';\n\nimport * as React from 'react';\nimport type { Breakpoint, Responsive } from '../../props/prop-def.js';\nimport type { submenuBehaviors } from './base-menu.props.js';\nimport { useBreakpoint } from '../../hooks/use-breakpoint.js';\n\ntype SubmenuBehavior = (typeof submenuBehaviors)[number];\n\n/**\n * Resolves a responsive value to its current value based on the breakpoint.\n * Falls back through smaller breakpoints if the current one isn't defined.\n */\nfunction resolveResponsiveValue<T>(\n value: T | Partial<Record<Breakpoint, T>> | undefined,\n currentBreakpoint: Breakpoint,\n defaultValue: T\n): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n\n // Non-object values are returned directly\n if (typeof value !== 'object') {\n return value;\n }\n\n const map = value as Partial<Record<Breakpoint, T>>;\n\n // Check if current breakpoint has a value\n if (map[currentBreakpoint] !== undefined) {\n return map[currentBreakpoint] as T;\n }\n\n // Fall back through smaller breakpoints\n const bpOrder: Breakpoint[] = ['xl', 'lg', 'md', 'sm', 'xs', 'initial'];\n const startIdx = bpOrder.indexOf(currentBreakpoint);\n\n for (let i = startIdx + 1; i < bpOrder.length; i++) {\n const bp = bpOrder[i];\n if (map[bp] !== undefined) {\n return map[bp] as T;\n }\n }\n\n return defaultValue;\n}\n\n// ============================================================================\n// DrillDown Context\n// ============================================================================\n\ntype AnimationDirection = 'forward' | 'backward' | null;\n\n/**\n * Stable actions context - callbacks that don't change identity.\n * Separated from state to prevent unnecessary re-renders of components\n * that only need to call push/pop/reset.\n */\ninterface DrillDownActionsContextValue {\n /** Navigate into a submenu */\n push: (id: string) => void;\n /** Navigate back to parent menu */\n pop: () => void;\n /** Reset to root menu */\n reset: () => void;\n}\n\n/**\n * Mutable state context - values that change when navigation occurs.\n * Subscribers to this context will re-render on stack changes.\n */\ninterface DrillDownStateContextValue {\n /** Current submenu behavior mode */\n behavior: SubmenuBehavior;\n /** Whether the breakpoint has been resolved (client-side only) */\n ready: boolean;\n /** Stack of active submenu IDs. Empty means root menu is shown. */\n stack: string[];\n /** Check if a specific submenu is the currently active one */\n isActive: (id: string) => boolean;\n /** Check if we're at root level (no submenus open) */\n isRoot: boolean;\n /** The currently active submenu ID (or null if at root) */\n currentId: string | null;\n /** Current animation direction for transitions */\n animationDirection: AnimationDirection;\n}\n\nconst DrillDownActionsContext = React.createContext<DrillDownActionsContextValue | null>(null);\nconst DrillDownStateContext = React.createContext<DrillDownStateContextValue | null>(null);\n\ninterface DrillDownProviderProps {\n children: React.ReactNode;\n submenuBehavior: Responsive<SubmenuBehavior> | undefined;\n}\n\nfunction DrillDownProvider({ children, submenuBehavior }: DrillDownProviderProps) {\n const { breakpoint, ready } = useBreakpoint();\n const [stack, setStack] = React.useState<string[]>([]);\n const [animationDirection, setAnimationDirection] = React.useState<AnimationDirection>(null);\n\n // Resolve the current behavior based on breakpoint\n const behavior = React.useMemo(\n () => resolveResponsiveValue(submenuBehavior, breakpoint, 'cascade'),\n [submenuBehavior, breakpoint]\n );\n\n // Reset stack when behavior changes from drill-down to cascade\n const prevBehaviorRef = React.useRef(behavior);\n React.useEffect(() => {\n if (prevBehaviorRef.current === 'drill-down' && behavior === 'cascade') {\n setStack([]);\n setAnimationDirection(null);\n }\n prevBehaviorRef.current = behavior;\n }, [behavior]);\n\n // Stable action callbacks - these never change identity\n const push = React.useCallback((id: string) => {\n setAnimationDirection('forward');\n setStack((prev) => [...prev, id]);\n }, []);\n\n const pop = React.useCallback(() => {\n setAnimationDirection('backward');\n setStack((prev) => prev.slice(0, -1));\n }, []);\n\n const reset = React.useCallback(() => {\n setStack([]);\n setAnimationDirection(null);\n }, []);\n\n // Memoize actions context value - completely stable, never changes\n const actionsValue = React.useMemo(\n (): DrillDownActionsContextValue => ({ push, pop, reset }),\n [push, pop, reset]\n );\n\n // isActive depends on stack - this is expected to change\n const isActive = React.useCallback(\n (id: string) => {\n if (stack.length === 0) return false;\n return stack[stack.length - 1] === id;\n },\n [stack]\n );\n\n // Memoize state context value - changes when stack/behavior changes\n const stateValue = React.useMemo(\n (): DrillDownStateContextValue => ({\n behavior,\n ready,\n stack,\n isActive,\n isRoot: stack.length === 0,\n currentId: stack.length > 0 ? stack[stack.length - 1] : null,\n animationDirection,\n }),\n [behavior, ready, stack, isActive, animationDirection]\n );\n\n return (\n <DrillDownActionsContext.Provider value={actionsValue}>\n <DrillDownStateContext.Provider value={stateValue}>\n {children}\n </DrillDownStateContext.Provider>\n </DrillDownActionsContext.Provider>\n );\n}\n\n/**\n * Hook to access only the stable action callbacks (push, pop, reset).\n * Use this in components that only need to trigger navigation,\n * not react to state changes. Prevents unnecessary re-renders.\n */\nfunction useDrillDownActions() {\n const ctx = React.useContext(DrillDownActionsContext);\n if (!ctx) {\n throw new Error('useDrillDownActions must be used within a DropdownMenu.Content');\n }\n return ctx;\n}\n\n/**\n * Hook to access drill-down state (behavior, stack, isActive, etc.).\n * Components using this will re-render when navigation state changes.\n */\nfunction useDrillDownState() {\n const ctx = React.useContext(DrillDownStateContext);\n if (!ctx) {\n throw new Error('useDrillDownState must be used within a DropdownMenu.Content');\n }\n return ctx;\n}\n\n/**\n * Optional version of useDrillDownActions for components that may be outside Content.\n */\nfunction useDrillDownActionsOptional() {\n return React.useContext(DrillDownActionsContext);\n}\n\n/**\n * Optional version of useDrillDownState for components that may be outside Content.\n */\nfunction useDrillDownStateOptional() {\n return React.useContext(DrillDownStateContext);\n}\n\n// ============================================================================\n// Sub Context (for individual submenu instances)\n// ============================================================================\n\ninterface SubContextValue {\n /** Unique ID for this submenu */\n id: string;\n /** Label for the back button */\n label: React.ReactNode;\n}\n\nconst SubContext = React.createContext<SubContextValue | null>(null);\n\nfunction useSubContext() {\n return React.useContext(SubContext);\n}\n\nexport {\n DrillDownProvider,\n DrillDownActionsContext,\n DrillDownStateContext,\n SubContext,\n useDrillDownActions,\n useDrillDownActionsOptional,\n useDrillDownState,\n useDrillDownStateOptional,\n useSubContext,\n useBreakpoint,\n resolveResponsiveValue,\n};\n\nexport type {\n SubmenuBehavior,\n DrillDownActionsContextValue,\n DrillDownStateContextValue,\n SubContextValue,\n AnimationDirection,\n};\n", "'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\n/**\n * Hook to get the current breakpoint based on window width.\n * Returns 'initial' on the server and during initial hydration.\n * Uses shared breakpoint values from shell.types.js.\n */\nexport function useBreakpoint(): { breakpoint: Breakpoint; ready: boolean } {\n const [currentBp, setCurrentBp] = React.useState<Breakpoint>('initial');\n const [ready, setReady] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const queries = Object.entries(_BREAKPOINTS) as [keyof typeof _BREAKPOINTS, string][];\n const mqls = queries.map(([k, q]) => [k, window.matchMedia(q)] as const);\n\n // Accept optional event param to satisfy MediaQueryList listener signature\n const compute = (_e?: MediaQueryListEvent) => {\n // Highest matched wins\n const matched = mqls.filter(([, m]) => m.matches).map(([k]) => k);\n const next = (matched[matched.length - 1] as Breakpoint | undefined) ?? 'initial';\n setCurrentBp(next);\n setReady(true);\n };\n\n compute();\n const cleanups: Array<() => void> = [];\n mqls.forEach(([, m]) => {\n const mm = m as MediaQueryList & {\n addEventListener?: (type: 'change', listener: (e: MediaQueryListEvent) => void) => void;\n removeEventListener?: (type: 'change', listener: (e: MediaQueryListEvent) => void) => void;\n addListener?: (listener: (e: MediaQueryListEvent) => void) => void;\n removeListener?: (listener: (e: MediaQueryListEvent) => void) => void;\n };\n if (typeof mm.addEventListener === 'function' && typeof mm.removeEventListener === 'function') {\n mm.addEventListener('change', compute);\n cleanups.push(() => mm.removeEventListener?.('change', compute));\n } else if (typeof mm.addListener === 'function' && typeof mm.removeListener === 'function') {\n mm.addListener(compute);\n cleanups.push(() => mm.removeListener?.(compute));\n }\n });\n\n return () => {\n cleanups.forEach((fn) => {\n try {\n fn();\n } catch (e) {\n // MediaQueryList cleanup can fail in edge cases (e.g., already removed)\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', e);\n }\n }\n });\n };\n }, []);\n\n return { breakpoint: currentBp, ready };\n}\n", "import type * as React from 'react';\n\nexport type PresentationValue = 'fixed' | 'overlay' | 'stacked';\n\nexport type ResponsivePresentation = PresentationValue | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PresentationValue>>;\n\nexport type PaneMode = 'expanded' | 'collapsed';\nexport type SidebarMode = 'collapsed' | 'thin' | 'expanded';\n\nexport type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PaneMode>>;\n\nexport type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;\n\nexport type Responsive<T> = T | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', T>>;\n\nexport type PaneSizePersistence = {\n load?: () => number | Promise<number | undefined> | undefined;\n save?: (size: number) => void | Promise<void>;\n};\n\nexport interface PaneBaseProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n height?: string | number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\n\nexport const _BREAKPOINTS = {\n xs: '(min-width: 520px)',\n sm: '(min-width: 768px)',\n md: '(min-width: 1024px)',\n lg: '(min-width: 1280px)',\n xl: '(min-width: 1640px)',\n} as const;\n\nexport type Breakpoint = 'initial' | keyof typeof _BREAKPOINTS;\n\nexport type PaneTarget = 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n\n/**\n * CSS custom property key type for type-safe style objects.\n * Allows any string prefixed with '--'.\n */\nexport type CSSCustomProperty = `--${string}`;\n\n/**\n * Style object that supports CSS custom properties.\n */\nexport type CSSPropertiesWithVars = React.CSSProperties & {\n [key: CSSCustomProperty]: string | number | undefined;\n};\n", "'use client';\n\nimport * as React from 'react';\nimport type { Responsive } from '../../props/prop-def.js';\n\n/**\n * Context to detect if a component is rendered inside a menu (DropdownMenu, ContextMenu, etc.)\n * Used by VirtualMenu to adjust its behavior:\n * - Skip role=\"menu\" when inside a parent menu (parent owns the role)\n * - Delegate certain keyboard handling to parent\n * - Use the correct item height based on menu size\n */\n\nexport type MenuSize = '1' | '2';\n\ninterface MenuContextValue {\n /** Whether we're inside a menu that owns the menu role */\n isInsideMenu: boolean;\n /** Menu size for calculating item heights (resolved to non-responsive value) */\n size?: MenuSize;\n}\n\nconst MenuContext = React.createContext<MenuContextValue>({ isInsideMenu: false });\n\ninterface MenuProviderProps {\n children: React.ReactNode;\n /** Menu size passed from parent (DropdownMenu.Content, ContextMenu.Content, etc.) */\n size?: Responsive<MenuSize>;\n}\n\n/** Extract the base size from a potentially responsive value */\nfunction resolveSize(size: Responsive<MenuSize> | undefined): MenuSize | undefined {\n if (!size) return undefined;\n if (typeof size === 'string') return size;\n // For responsive objects, use the 'initial' value\n return size.initial;\n}\n\nexport function MenuProvider({ children, size }: MenuProviderProps) {\n const resolvedSize = resolveSize(size);\n const value = React.useMemo(() => ({ isInsideMenu: true, size: resolvedSize }), [resolvedSize]);\n return <MenuContext.Provider value={value}>{children}</MenuContext.Provider>;\n}\n\nexport function useMenuContext() {\n return React.useContext(MenuContext);\n}\n\n/** Map menu size to item height in pixels */\nexport const menuSizeToItemHeight: Record<MenuSize, number> = {\n '1': 24, // --space-5\n '2': 32, // --space-6\n};\n", "'use client';\n\n/**\n * Combobox - Simplified architecture matching shadcn's approach for optimal performance.\n * Built on Popover + cmdk with minimal context overhead.\n * \n * Key performance optimizations:\n * - Single context instead of 5 separate contexts\n * - No MutationObserver - cmdk handles aria internally\n * - disablePointerSelection - prevents React re-renders on hover\n * - CSS :hover handles visual feedback (no state updates)\n * - No label registration - use displayValue prop for trigger display\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useControllableState } from 'radix-ui/internal';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { comboboxRootPropDefs, comboboxTriggerPropDefs, comboboxContentPropDefs } from './combobox.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport * as Popover from './popover.js';\nimport { Slottable } from './slot.js';\nimport { textFieldRootPropDefs } from './text-field.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextFieldVariant = (typeof textFieldRootPropDefs.variant.values)[number];\ntype ComboboxValue = string | null;\ntype CommandFilter = (value: string, search: string, keywords?: string[]) => number;\n\n/**\n * Single unified context - contains only essential shared state.\n * This replaces the previous 5 separate contexts for better performance.\n */\ninterface ComboboxContextValue {\n // Selection state\n value: ComboboxValue;\n onSelect: (value: string) => void;\n // Open state\n open: boolean;\n setOpen: (open: boolean) => void;\n // Config (static, rarely changes)\n size?: ComboboxRootOwnProps['size'];\n highContrast?: boolean;\n placeholder?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n color?: string;\n // Display\n displayValue?: string;\n // Accessibility\n listboxId: string;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue | null>(null);\n\nconst useComboboxContext = (componentName?: string) => {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) {\n const name = componentName ? `Combobox.${componentName}` : 'Combobox components';\n throw new Error(`${name} must be used within Combobox.Root`);\n }\n return ctx;\n};\n\n/**\n * Context for Content-specific values (variant, material).\n * Separate from main context as it's only needed inside Content.\n */\ninterface ComboboxContentContextValue {\n variant: 'solid' | 'soft';\n size: string;\n color?: string;\n material?: string;\n highContrast?: boolean;\n // cmdk config passed down\n loop?: boolean;\n shouldFilter?: boolean;\n filter?: CommandFilter;\n}\n\nconst ComboboxContentContext = React.createContext<ComboboxContentContextValue | null>(null);\n\nconst useComboboxContentContext = () => React.useContext(ComboboxContentContext);\n\n// ============================================================================\n// Root\n// ============================================================================\n\ntype ComboboxRootOwnProps = GetPropDefTypes<typeof comboboxRootPropDefs> & {\n value?: ComboboxValue;\n defaultValue?: ComboboxValue;\n onValueChange?: (value: ComboboxValue) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n filter?: CommandFilter;\n shouldFilter?: boolean;\n loop?: boolean;\n disabled?: boolean;\n resetSearchOnSelect?: boolean;\n color?: (typeof comboboxTriggerPropDefs.color.values)[number];\n /**\n * Display value for the trigger. Required for optimal performance.\n * Can be a string or function that receives the current value.\n * @example displayValue={(v) => items.find(i => i.value === v)?.label}\n */\n displayValue?: string | ((value: ComboboxValue) => string | undefined);\n};\n\ntype PopoverRootProps = React.ComponentPropsWithoutRef<typeof Popover.Root>;\ninterface ComboboxRootProps extends PopoverRootProps, ComboboxRootOwnProps {}\n\nconst ComboboxRoot: React.FC<ComboboxRootProps> = (props) => {\n const {\n children,\n size = comboboxRootPropDefs.size.default,\n highContrast = comboboxRootPropDefs.highContrast.default,\n value: valueProp,\n defaultValue = null,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placeholder = 'Select an option',\n searchPlaceholder = 'Search...',\n searchValue: searchValueProp,\n defaultSearchValue = '',\n onSearchValueChange,\n filter,\n shouldFilter = true,\n loop = true,\n disabled,\n resetSearchOnSelect = true,\n color,\n displayValue: displayValueProp,\n ...rootProps\n } = props;\n\n // Generate stable ID for listbox accessibility linkage\n const listboxId = React.useId();\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [value, setValue] = useControllableState<ComboboxValue>({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n const [searchValue, setSearchValue] = useControllableState<string>({\n prop: searchValueProp,\n defaultProp: defaultSearchValue,\n onChange: onSearchValueChange,\n });\n\n // Resolve displayValue\n const resolvedDisplayValue = React.useMemo(() => {\n if (displayValueProp == null) return undefined;\n if (typeof displayValueProp === 'function') {\n return displayValueProp(value);\n }\n return displayValueProp;\n }, [displayValueProp, value]);\n\n // Handle selection - batches all state updates\n const onSelect = React.useCallback(\n (nextValue: string) => {\n setValue(nextValue);\n setOpen(false);\n if (resetSearchOnSelect) {\n setSearchValue('');\n }\n },\n [setOpen, setSearchValue, setValue, resetSearchOnSelect],\n );\n\n // Single context value - memoized for performance\n const contextValue = React.useMemo<ComboboxContextValue>(\n () => ({\n value,\n onSelect,\n open,\n setOpen,\n size,\n highContrast,\n placeholder,\n searchPlaceholder,\n disabled,\n color,\n displayValue: resolvedDisplayValue,\n listboxId,\n }),\n [value, onSelect, open, setOpen, size, highContrast, placeholder, searchPlaceholder, disabled, color, resolvedDisplayValue, listboxId],\n );\n\n // Store cmdk config in a ref to avoid context updates\n const cmdkConfigRef = React.useRef({ filter, shouldFilter, loop, searchValue, setSearchValue });\n cmdkConfigRef.current = { filter, shouldFilter, loop, searchValue, setSearchValue };\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <CmdkConfigContext.Provider value={cmdkConfigRef}>\n <Popover.Root open={open} onOpenChange={setOpen} {...rootProps}>\n {children}\n </Popover.Root>\n </CmdkConfigContext.Provider>\n </ComboboxContext.Provider>\n );\n};\nComboboxRoot.displayName = 'Combobox.Root';\n\n// Separate ref context for cmdk config to avoid re-renders\nconst CmdkConfigContext = React.createContext<React.MutableRefObject<{\n filter?: CommandFilter;\n shouldFilter: boolean;\n loop: boolean;\n searchValue: string;\n setSearchValue: (value: string) => void;\n}> | null>(null);\n\n// ============================================================================\n// Trigger\n// ============================================================================\n\ntype ComboboxTriggerElement = HTMLButtonElement;\ntype ComboboxTriggerOwnProps = GetPropDefTypes<typeof comboboxTriggerPropDefs>;\ntype NativeTriggerProps = Omit<React.ComponentPropsWithoutRef<'button'>, 'color'>;\ninterface ComboboxTriggerProps extends NativeTriggerProps, MarginProps, ComboboxTriggerOwnProps {}\n\nconst ComboboxTrigger = React.forwardRef<ComboboxTriggerElement, ComboboxTriggerProps>((props, forwardedRef) => {\n const ctx = useComboboxContext('Trigger');\n\n const { children, className, placeholder, disabled, readOnly, error, loading, color, radius, ...triggerProps } = extractProps(\n { size: ctx.size, highContrast: ctx.highContrast, ...props },\n { size: comboboxRootPropDefs.size, highContrast: comboboxRootPropDefs.highContrast },\n comboboxTriggerPropDefs,\n marginPropDefs,\n );\n\n const { material, panelBackground } = props;\n const isDisabled = disabled ?? ctx.disabled;\n const resolvedColor = color ?? ctx.color;\n\n const defaultContent = (\n <>\n <span className=\"rt-SelectTriggerInner\">\n <span className=\"rt-ComboboxValue\">\n {ctx.displayValue ?? ctx.value ?? placeholder ?? ctx.placeholder}\n </span>\n </span>\n {loading ? (\n <div className=\"rt-SelectIcon rt-SelectLoadingIcon\" aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" strokeDasharray=\"6 34\" strokeDashoffset=\"0\" className=\"rt-SelectLoadingSpinner\" />\n </svg>\n </div>\n ) : (\n <ChevronDownIcon className=\"rt-SelectIcon\" />\n )}\n </>\n );\n\n const { type: buttonType, ...restTriggerProps } = triggerProps;\n\n return (\n <Popover.Trigger disabled={isDisabled}>\n <button\n data-accent-color={resolvedColor}\n data-radius={radius}\n data-panel-background={panelBackground}\n data-material={material}\n data-error={error}\n data-loading={loading}\n data-disabled={isDisabled || undefined}\n data-read-only={readOnly || undefined}\n {...restTriggerProps}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={ctx.open ? ctx.listboxId : undefined}\n aria-expanded={ctx.open}\n aria-haspopup=\"listbox\"\n aria-disabled={isDisabled || undefined}\n type={buttonType ?? 'button'}\n disabled={isDisabled}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-SelectTrigger', 'rt-ComboboxTrigger', className)}\n >\n {children ? requireReactElement(children) : defaultContent}\n </button>\n </Popover.Trigger>\n );\n});\nComboboxTrigger.displayName = 'Combobox.Trigger';\n\n// ============================================================================\n// Value (standalone, for custom trigger layouts)\n// ============================================================================\n\ntype ComboboxValueElement = HTMLSpanElement;\ninterface ComboboxValueProps extends React.ComponentPropsWithoutRef<'span'> {\n placeholder?: string;\n}\n\nconst ComboboxValue = React.forwardRef<ComboboxValueElement, ComboboxValueProps>(\n ({ placeholder, children, className, ...valueProps }, forwardedRef) => {\n const ctx = useComboboxContext('Value');\n const display = ctx.displayValue ?? ctx.value ?? undefined;\n return (\n <span {...valueProps} ref={forwardedRef} className={classNames('rt-ComboboxValue', className)}>\n {display ?? children ?? placeholder ?? ctx.placeholder}\n </span>\n );\n },\n);\nComboboxValue.displayName = 'Combobox.Value';\n\n// ============================================================================\n// Content\n// ============================================================================\n\ntype ComboboxContentElement = React.ElementRef<typeof Popover.Content>;\ntype ComboboxContentOwnProps = GetPropDefTypes<typeof comboboxContentPropDefs> & {\n container?: React.ComponentPropsWithoutRef<typeof Popover.Content>['container'];\n};\ninterface ComboboxContentProps extends Omit<ComponentPropsWithout<typeof Popover.Content, RemovedProps>, 'size'>, ComboboxContentOwnProps {}\n\nconst ComboboxContent = React.forwardRef<ComboboxContentElement, ComboboxContentProps>((props, forwardedRef) => {\n const ctx = useComboboxContext('Content');\n const cmdkConfigRef = React.useContext(CmdkConfigContext);\n const themeContext = useThemeContext();\n const effectiveMaterial = themeContext.panelBackground;\n\n const sizeProp = props.size ?? ctx.size ?? comboboxContentPropDefs.size.default;\n const variantProp = props.variant ?? comboboxContentPropDefs.variant.default;\n const highContrastProp = props.highContrast ?? ctx.highContrast ?? comboboxContentPropDefs.highContrast.default;\n\n const { className, children, color, forceMount, container, ...contentProps } = extractProps(\n { ...props, size: sizeProp, variant: variantProp, highContrast: highContrastProp },\n comboboxContentPropDefs,\n );\n const resolvedColor = color || ctx.color || themeContext.accentColor;\n\n const contentContextValue = React.useMemo<ComboboxContentContextValue>(\n () => ({\n variant: variantProp,\n size: String(sizeProp),\n color: resolvedColor,\n material: effectiveMaterial,\n highContrast: highContrastProp,\n loop: cmdkConfigRef?.current.loop,\n shouldFilter: cmdkConfigRef?.current.shouldFilter,\n filter: cmdkConfigRef?.current.filter,\n }),\n [variantProp, sizeProp, resolvedColor, effectiveMaterial, highContrastProp, cmdkConfigRef],\n );\n\n return (\n <Popover.Content\n size={sizeProp}\n data-accent-color={resolvedColor}\n data-material={effectiveMaterial}\n data-panel-background={effectiveMaterial}\n align=\"start\"\n sideOffset={4}\n collisionPadding={10}\n {...contentProps}\n forceMount={forceMount === true ? true : undefined}\n container={container}\n ref={forwardedRef}\n className={classNames('rt-PopperContent', 'rt-BaseMenuContent', 'rt-ComboboxContent', className)}\n >\n <Theme asChild>\n <ComboboxContentContext.Provider value={contentContextValue}>\n <CommandPrimitive\n loop={cmdkConfigRef?.current.loop}\n shouldFilter={cmdkConfigRef?.current.shouldFilter}\n filter={cmdkConfigRef?.current.filter}\n className=\"rt-ComboboxCommand\"\n >\n {children}\n </CommandPrimitive>\n </ComboboxContentContext.Provider>\n </Theme>\n </Popover.Content>\n );\n});\nComboboxContent.displayName = 'Combobox.Content';\n\n// ============================================================================\n// Input\n// ============================================================================\n\ntype ComboboxInputElement = React.ElementRef<typeof CommandPrimitive.Input>;\ninterface ComboboxInputProps extends Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>, 'value' | 'onValueChange'> {\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n variant?: TextFieldVariant;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nconst ComboboxInput = React.forwardRef<ComboboxInputElement, ComboboxInputProps>(\n ({ className, startAdornment, endAdornment, placeholder, variant: inputVariant, value, onValueChange, ...inputProps }, forwardedRef) => {\n const ctx = useComboboxContext('Input');\n const contentContext = useComboboxContentContext();\n const cmdkConfigRef = React.useContext(CmdkConfigContext);\n\n const contentVariant = contentContext?.variant ?? 'solid';\n const textFieldVariant = inputVariant ?? (contentVariant === 'solid' ? 'surface' : 'soft');\n\n // Use controlled search value from ref (avoids context re-renders)\n const searchValue = value ?? cmdkConfigRef?.current.searchValue ?? '';\n const handleSearchChange = onValueChange ?? cmdkConfigRef?.current.setSearchValue;\n\n // Use size from contentContext (already resolved to string) or fallback\n const sizeClass = contentContext?.size ? `rt-r-size-${contentContext.size}` : undefined;\n\n const inputField = (\n <div\n className={classNames('rt-TextFieldRoot', 'rt-ComboboxInputRoot', sizeClass, `rt-variant-${textFieldVariant}`)}\n data-accent-color={contentContext?.color}\n data-material={contentContext?.material}\n data-panel-background={contentContext?.material}\n >\n {startAdornment ? <div className=\"rt-TextFieldSlot\">{startAdornment}</div> : null}\n <CommandPrimitive.Input\n {...inputProps}\n ref={forwardedRef}\n value={searchValue}\n onValueChange={handleSearchChange}\n placeholder={placeholder ?? ctx.searchPlaceholder}\n className={classNames('rt-reset', 'rt-TextFieldInput', className)}\n />\n {endAdornment ? (\n <div className=\"rt-TextFieldSlot\" data-side=\"right\">\n {endAdornment}\n </div>\n ) : null}\n </div>\n );\n\n return contentContext ? <div className=\"rt-ComboboxSearch\">{inputField}</div> : inputField;\n },\n);\nComboboxInput.displayName = 'Combobox.Input';\n\n// ============================================================================\n// List (simplified - no MutationObserver, no ScrollArea wrapper)\n// ============================================================================\n\ntype ComboboxListElement = React.ElementRef<typeof CommandPrimitive.List>;\ninterface ComboboxListProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> {}\n\nconst ComboboxList = React.forwardRef<ComboboxListElement, ComboboxListProps>(({ className, children, ...listProps }, forwardedRef) => {\n const ctx = useComboboxContext('List');\n return (\n <div className=\"rt-ComboboxScrollArea\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-ComboboxViewport')}>\n <CommandPrimitive.List\n {...listProps}\n id={ctx.listboxId}\n ref={forwardedRef}\n role=\"listbox\"\n aria-label=\"Options\"\n className={classNames('rt-ComboboxList', className)}\n >\n {children}\n </CommandPrimitive.List>\n </div>\n </div>\n );\n});\nComboboxList.displayName = 'Combobox.List';\n\n// ============================================================================\n// Empty\n// ============================================================================\n\ntype ComboboxEmptyElement = React.ElementRef<typeof CommandPrimitive.Empty>;\ninterface ComboboxEmptyProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty> {}\n\nconst ComboboxEmpty = React.forwardRef<ComboboxEmptyElement, ComboboxEmptyProps>(({ className, ...emptyProps }, forwardedRef) => (\n <CommandPrimitive.Empty {...emptyProps} ref={forwardedRef} className={classNames('rt-ComboboxEmpty', className)} />\n));\nComboboxEmpty.displayName = 'Combobox.Empty';\n\n// ============================================================================\n// Group\n// ============================================================================\n\ntype ComboboxGroupElement = React.ElementRef<typeof CommandPrimitive.Group>;\ninterface ComboboxGroupProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group> {}\n\nconst ComboboxGroup = React.forwardRef<ComboboxGroupElement, ComboboxGroupProps>(({ className, ...groupProps }, forwardedRef) => (\n <CommandPrimitive.Group {...groupProps} ref={forwardedRef} className={classNames('rt-BaseMenuGroup', 'rt-ComboboxGroup', className)} />\n));\nComboboxGroup.displayName = 'Combobox.Group';\n\n// ============================================================================\n// Label\n// ============================================================================\n\ntype ComboboxLabelElement = React.ElementRef<'div'>;\ninterface ComboboxLabelProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst ComboboxLabel = React.forwardRef<ComboboxLabelElement, ComboboxLabelProps>(({ className, ...labelProps }, forwardedRef) => (\n <div {...labelProps} ref={forwardedRef} className={classNames('rt-BaseMenuLabel', 'rt-ComboboxLabel', className)} />\n));\nComboboxLabel.displayName = 'Combobox.Label';\n\n// ============================================================================\n// Separator\n// ============================================================================\n\ntype ComboboxSeparatorElement = React.ElementRef<typeof CommandPrimitive.Separator>;\ninterface ComboboxSeparatorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator> {}\n\nconst ComboboxSeparator = React.forwardRef<ComboboxSeparatorElement, ComboboxSeparatorProps>(({ className, ...separatorProps }, forwardedRef) => (\n <CommandPrimitive.Separator {...separatorProps} ref={forwardedRef} className={classNames('rt-BaseMenuSeparator', 'rt-ComboboxSeparator', className)} />\n));\nComboboxSeparator.displayName = 'Combobox.Separator';\n\n// ============================================================================\n// Item (simplified - minimal context usage)\n// ============================================================================\n\ntype ComboboxItemElement = React.ElementRef<typeof CommandPrimitive.Item>;\ninterface ComboboxItemProps extends Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>, 'keywords' | 'onSelect'> {\n /** Display label for search. Falls back to children text content. */\n label?: string;\n /** Additional keywords for search filtering. */\n keywords?: string[];\n /** Called when item is selected. */\n onSelect?: (value: string) => void;\n}\n\nconst ComboboxItem = React.forwardRef<ComboboxItemElement, ComboboxItemProps>(\n ({ className, children, label, value, disabled, onSelect, keywords, ...itemProps }, forwardedRef) => {\n const ctx = useComboboxContext('Item');\n const contentContext = useComboboxContentContext();\n\n const isSelected = value != null && ctx.value === value;\n const isDisabled = disabled ?? ctx.disabled ?? false;\n const sizeClass = contentContext?.size ? `rt-r-size-${contentContext.size}` : undefined;\n\n // Extract stable onSelect to avoid depending on entire ctx object\n const onSelectFromContext = ctx.onSelect;\n\n // Handle selection\n const handleSelect = React.useCallback(() => {\n if (value != null) {\n onSelectFromContext(value);\n onSelect?.(value);\n }\n }, [onSelectFromContext, value, onSelect]);\n\n // Use provided keywords or label for search\n const searchKeywords = keywords ?? (label ? [label] : undefined);\n\n return (\n <CommandPrimitive.Item\n {...itemProps}\n value={value}\n keywords={searchKeywords}\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled || undefined}\n ref={forwardedRef}\n onSelect={handleSelect}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-ComboboxItem', className)}\n >\n {isSelected ? (\n <span className={classNames('rt-BaseMenuItemIndicator', 'rt-ComboboxItemIndicator', sizeClass)}>\n <ThickCheckIcon className={classNames('rt-BaseMenuItemIndicatorIcon', 'rt-ComboboxItemIndicatorIcon', sizeClass)} />\n </span>\n ) : null}\n <Slottable>{children}</Slottable>\n </CommandPrimitive.Item>\n );\n },\n);\nComboboxItem.displayName = 'Combobox.Item';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n ComboboxRoot as Root,\n ComboboxTrigger as Trigger,\n ComboboxValue as Value,\n ComboboxContent as Content,\n ComboboxInput as Input,\n ComboboxList as List,\n ComboboxEmpty as Empty,\n ComboboxGroup as Group,\n ComboboxLabel as Label,\n ComboboxSeparator as Separator,\n ComboboxItem as Item,\n};\n\nexport type {\n ComboboxRootProps as RootProps,\n ComboboxTriggerProps as TriggerProps,\n ComboboxValueProps as ValueProps,\n ComboboxContentProps as ContentProps,\n ComboboxInputProps as InputProps,\n ComboboxListProps as ListProps,\n ComboboxEmptyProps as EmptyProps,\n ComboboxGroupProps as GroupProps,\n ComboboxLabelProps as LabelProps,\n ComboboxSeparatorProps as SeparatorProps,\n ComboboxItemProps as ItemProps,\n};\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\n\n/**\n * Shared responsive sizing + high contrast support inherited by Combobox.Root.\n */\nconst comboboxRootPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n highContrast: PropDef<boolean>;\n};\n\nconst triggerVariants = ['classic', 'surface', 'soft', 'outline', 'ghost'] as const;\n\n/**\n * Token-aware props specific to Combobox.Trigger.\n */\nconst comboboxTriggerPropDefs = {\n variant: { type: 'enum', className: 'rt-variant', values: triggerVariants, default: 'surface' },\n panelBackground: {\n type: 'enum',\n className: 'rt-panel-background',\n values: ['solid', 'translucent'],\n },\n material: { type: 'enum', values: ['solid', 'translucent'] },\n error: { type: 'boolean' },\n loading: { type: 'boolean' },\n disabled: { type: 'boolean' },\n readOnly: { type: 'boolean' },\n ...colorPropDef,\n ...radiusPropDef,\n width: widthPropDefs.width,\n placeholder: { type: 'string' },\n} satisfies {\n variant: PropDef<(typeof triggerVariants)[number]>;\n panelBackground: PropDef<'solid' | 'translucent'>;\n material: PropDef<'solid' | 'translucent'>;\n error: PropDef<boolean>;\n loading: PropDef<boolean>;\n disabled: PropDef<boolean>;\n readOnly: PropDef<boolean>;\n width: PropDef<string>;\n placeholder: PropDef<string>;\n};\n\nconst contentVariants = ['solid', 'soft'] as const;\n\n/**\n * Styling props for the dropdown surface rendered by Combobox.Content.\n */\nconst comboboxContentPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: contentVariants, default: 'solid' },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof contentVariants)[number]>;\n};\n\nexport { comboboxRootPropDefs, comboboxTriggerPropDefs, comboboxContentPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { popoverContentPropDefs } from './popover.props.js';\nimport { Theme } from './theme.js';\nimport { useThemeContext } from './theme.js';\n\nimport type { PopoverContentOwnProps } from './popover.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n// ---------------------------------------------\n// Popover Content Context\n// ---------------------------------------------\ntype PopoverContentContextValue = {\n /** Ref to the Popover.Content DOM node */\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n /** Update content's toolbar offset variable and presence flag */\n setToolbarOffset: (offsetPx: number) => void;\n /** Wire up aria-labelledby for toolbar title */\n setLabelId: (id: string | undefined) => void;\n};\n\nconst PopoverContentContext = React.createContext<PopoverContentContextValue | null>(null);\nconst usePopoverContentContext = (caller: string) => {\n const ctx = React.useContext(PopoverContentContext);\n if (!ctx) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`${caller} must be used within Popover.Content`);\n }\n }\n return ctx;\n};\n\ninterface PopoverRootProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {}\nconst PopoverRoot: React.FC<PopoverRootProps> = (props: PopoverRootProps) => (\n <PopoverPrimitive.Root {...props} />\n);\nPopoverRoot.displayName = 'Popover.Root';\n\ntype PopoverTriggerElement = React.ElementRef<typeof PopoverPrimitive.Trigger>;\ninterface PopoverTriggerProps\n extends ComponentPropsWithout<typeof PopoverPrimitive.Trigger, RemovedProps> {}\nconst PopoverTrigger = React.forwardRef<PopoverTriggerElement, PopoverTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <PopoverPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </PopoverPrimitive.Trigger>\n ),\n);\nPopoverTrigger.displayName = 'Popover.Trigger';\n\ntype PopoverContentElement = React.ElementRef<typeof PopoverPrimitive.Content>;\ninterface PopoverContentProps\n extends ComponentPropsWithout<typeof PopoverPrimitive.Content, RemovedProps>,\n PopoverContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Portal>['container'];\n}\nconst PopoverContent = React.forwardRef<PopoverContentElement, PopoverContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n const panelBackground = props.panelBackground ?? themeContext.panelBackground;\n const {\n className,\n forceMount,\n container,\n panelBackground: _,\n ...contentProps\n } = extractProps(props, popoverContentPropDefs);\n\n // Manage refs (we need the DOM node to apply CSS variables)\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [forwardedRef],\n );\n\n const [labelId, setLabelId] = React.useState<string | undefined>(undefined);\n\n const setToolbarOffset = React.useCallback((offsetPx: number) => {\n const el = contentRef.current;\n if (!el) return;\n if (offsetPx > 0) {\n el.style.setProperty('--popover-toolbar-offset', `${offsetPx}px`);\n el.setAttribute('data-has-toolbar', 'true');\n } else {\n el.style.removeProperty('--popover-toolbar-offset');\n el.removeAttribute('data-has-toolbar');\n }\n }, []);\n\n return (\n <PopoverPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={8}\n collisionPadding={10}\n {...contentProps}\n ref={combinedRef}\n aria-labelledby={labelId}\n data-panel-background={panelBackground}\n className={classNames('rt-PopperContent', 'rt-PopoverContent', className)}\n >\n <PopoverContentContext.Provider value={React.useMemo(() => ({ contentRef, setToolbarOffset, setLabelId }), [setToolbarOffset])}>\n {props.children}\n </PopoverContentContext.Provider>\n </PopoverPrimitive.Content>\n </Theme>\n </PopoverPrimitive.Portal>\n );\n },\n);\nPopoverContent.displayName = 'Popover.Content';\n\ntype PopoverCloseElement = React.ElementRef<typeof PopoverPrimitive.Close>;\ninterface PopoverCloseProps\n extends ComponentPropsWithout<typeof PopoverPrimitive.Close, RemovedProps> {}\nconst PopoverClose = React.forwardRef<PopoverCloseElement, PopoverCloseProps>(\n ({ children, ...props }, forwardedRef) => (\n <PopoverPrimitive.Close {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </PopoverPrimitive.Close>\n ),\n);\nPopoverClose.displayName = 'Popover.Close';\n\ntype PopoverAnchorElement = React.ElementRef<typeof PopoverPrimitive.Anchor>;\ninterface PopoverAnchorProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Anchor> {}\nconst PopoverAnchor = React.forwardRef<PopoverAnchorElement, PopoverAnchorProps>(\n ({ children, ...props }, forwardedRef) => (\n <PopoverPrimitive.Anchor {...props} ref={forwardedRef} />\n ),\n);\n\nPopoverAnchor.displayName = 'Popover.Anchor';\n\n// ---------------------------------------------\n// Toolbar (Popover-only)\n// ---------------------------------------------\n\ntype PopoverToolbarElement = HTMLDivElement;\ntype PopoverToolbarProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst PopoverToolbarBase = React.forwardRef<PopoverToolbarElement, PopoverToolbarProps>(\n ({ className, children, ...props }, forwardedRef) => {\n const ctx = usePopoverContentContext('Popover.Toolbar');\n\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRefs = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef)\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef],\n );\n\n React.useEffect(() => {\n if (!ctx || !localRef.current) return;\n const el = localRef.current;\n const update = () => {\n const height = el.getBoundingClientRect().height;\n ctx.setToolbarOffset(height);\n };\n update();\n const ro = new ResizeObserver(update);\n ro.observe(el);\n return () => {\n ro.disconnect();\n ctx.setToolbarOffset(0);\n };\n }, [ctx]);\n\n return (\n <div {...props} ref={setRefs} className={classNames('rt-PopoverToolbar', className)}>\n {children}\n </div>\n );\n },\n);\n(PopoverToolbarBase as any).displayName = 'Popover.Toolbar';\n\ntype SectionProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst PopoverToolbarLeft = React.forwardRef<HTMLDivElement, SectionProps>(\n ({ className, ...props }, ref) => (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-PopoverToolbarSection', 'rt-PopoverToolbarLeft', className)}\n />\n ),\n);\nPopoverToolbarLeft.displayName = 'Popover.Toolbar.Left';\n\nconst PopoverToolbarCenter = React.forwardRef<HTMLDivElement, SectionProps>(\n ({ className, ...props }, ref) => (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-PopoverToolbarSection', 'rt-PopoverToolbarCenter', className)}\n />\n ),\n);\nPopoverToolbarCenter.displayName = 'Popover.Toolbar.Center';\n\nconst PopoverToolbarRight = React.forwardRef<HTMLDivElement, SectionProps>(\n ({ className, ...props }, ref) => (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-PopoverToolbarSection', 'rt-PopoverToolbarRight', className)}\n />\n ),\n);\nPopoverToolbarRight.displayName = 'Popover.Toolbar.Right';\n\ntype TitleProps = React.ComponentPropsWithoutRef<'span'>;\nconst PopoverToolbarTitle = React.forwardRef<HTMLSpanElement, TitleProps>(\n ({ className, id: idProp, ...props }, ref) => {\n const ctx = usePopoverContentContext('Popover.Toolbar.Title');\n const reactId = React.useId();\n const id = idProp ?? `rt-popover-toolbar-title-${reactId}`;\n React.useEffect(() => {\n ctx?.setLabelId(id);\n return () => ctx?.setLabelId(undefined);\n }, [ctx, id]);\n return (\n <span\n {...props}\n id={id}\n ref={ref}\n className={classNames('rt-PopoverToolbarTitle', className)}\n />\n );\n },\n);\nPopoverToolbarTitle.displayName = 'Popover.Toolbar.Title';\n\ntype PopoverToolbarComponent = React.ForwardRefExoticComponent<\n React.PropsWithoutRef<PopoverToolbarProps> & React.RefAttributes<HTMLDivElement>\n> & {\n Left: typeof PopoverToolbarLeft;\n Center: typeof PopoverToolbarCenter;\n Right: typeof PopoverToolbarRight;\n Title: typeof PopoverToolbarTitle;\n};\n\nconst PopoverToolbar = Object.assign(PopoverToolbarBase, {\n Left: PopoverToolbarLeft,\n Center: PopoverToolbarCenter,\n Right: PopoverToolbarRight,\n Title: PopoverToolbarTitle,\n}) as PopoverToolbarComponent;\n\nexport {\n PopoverRoot as Root,\n PopoverContent as Content,\n PopoverTrigger as Trigger,\n PopoverClose as Close,\n PopoverAnchor as Anchor,\n PopoverToolbar as Toolbar,\n};\nexport type {\n PopoverRootProps as RootProps,\n PopoverContentProps as ContentProps,\n PopoverTriggerProps as TriggerProps,\n PopoverCloseProps as CloseProps,\n PopoverAnchorProps as AnchorProps,\n};\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst contentSizes = ['1', '2', '3', '4'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst popoverContentPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: contentSizes,\n default: '2',\n responsive: true,\n },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n width: widthPropDefs.width,\n minWidth: widthPropDefs.minWidth,\n maxWidth: { ...widthPropDefs.maxWidth, default: '480px' },\n ...heightPropDefs,\n} satisfies {\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n size: PropDef<(typeof contentSizes)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\ntype PopoverContentOwnProps = GetPropDefTypes<\n typeof popoverContentPropDefs &\n typeof asChildPropDef &\n typeof widthPropDefs &\n typeof heightPropDefs\n>;\n\nexport { popoverContentPropDefs };\nexport type { PopoverContentOwnProps };\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { paddingPropDefs } from '../props/padding.props.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\nimport { flexPropDefs } from './flex.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft', 'ghost', 'outline'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst textFieldRootPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n // Error and validation props\n error: { type: 'boolean', default: false },\n errorMessage: { type: 'string', default: undefined },\n isInvalid: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n // Accessibility props\n 'aria-describedby': { type: 'string', default: undefined },\n 'aria-labelledby': { type: 'string', default: undefined },\n ...colorPropDef,\n ...radiusPropDef,\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n material: { type: 'enum', values: materials, default: undefined },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n error: PropDef<boolean>;\n errorMessage: PropDef<string | undefined>;\n isInvalid: PropDef<boolean>;\n required: PropDef<boolean>;\n 'aria-describedby': PropDef<string | undefined>;\n 'aria-labelledby': PropDef<string | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n material: PropDef<(typeof materials)[number] | undefined>;\n};\n\nconst sides = ['left', 'right'] as const;\n\nconst textFieldSlotPropDefs = {\n side: { type: 'enum', values: sides },\n ...colorPropDef,\n gap: flexPropDefs.gap,\n px: paddingPropDefs.px,\n pl: paddingPropDefs.pl,\n pr: paddingPropDefs.pr,\n} satisfies {\n side: PropDef<(typeof sides)[number]>;\n gap: typeof flexPropDefs.gap;\n px: typeof paddingPropDefs.px;\n pl: typeof paddingPropDefs.pl;\n pr: typeof paddingPropDefs.pr;\n};\n\n/** Scrubbing props for TextField.Slot - handled separately from PropDef system */\ninterface TextFieldSlotScrubProps {\n /** Enable scrubbing behavior on this slot */\n scrub?: boolean;\n /** Current value (required for min/max clamping to work correctly) */\n scrubValue?: number;\n /** Base value change per movement unit (default: 1) */\n scrubStep?: number;\n /** Pixels of movement per step - higher = less sensitive (default: 1) */\n scrubSensitivity?: number;\n /** Minimum allowed value */\n scrubMin?: number;\n /** Maximum allowed value */\n scrubMax?: number;\n /** Step multiplier when Shift is held (default: 10) */\n scrubShiftMultiplier?: number;\n /** Step multiplier when Alt/Option is held (default: 0.1) */\n scrubAltMultiplier?: number;\n /**\n * Callback fired during scrubbing with the value delta\n * @param delta - The change in value\n * @param isChanging - true while dragging, false when released\n */\n onScrub?: (delta: number, isChanging: boolean) => void;\n}\n\nexport type { TextFieldSlotScrubProps };\n\nexport { textFieldRootPropDefs, textFieldSlotPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { emPropDefs } from './em.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype EmElement = React.ElementRef<'em'>;\ntype EmOwnProps = GetPropDefTypes<typeof emPropDefs>;\ninterface EmProps extends ComponentPropsWithout<'em', RemovedProps>, EmOwnProps {}\nconst Em = React.forwardRef<EmElement, EmProps>((props, forwardedRef) => {\n const { asChild, className, ...emProps } = extractProps(props, emPropDefs);\n const Comp = asChild ? Slot.Root : 'em';\n return <Comp {...emProps} ref={forwardedRef} className={classNames('rt-Em', className)} />;\n});\nEm.displayName = 'Em';\n\nexport { Em };\nexport type { EmProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst emPropDefs = {\n ...asChildPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n};\n\nexport { emPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\n\nimport { hoverCardContentPropDefs } from './hover-card.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Theme } from './theme.js';\n\nimport type { HoverCardContentOwnProps } from './hover-card.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ninterface HoverCardRootProps\n extends React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root> {}\nconst HoverCardRoot: React.FC<HoverCardRootProps> = (props) => (\n <HoverCardPrimitive.Root closeDelay={150} openDelay={200} {...props} />\n);\nHoverCardRoot.displayName = 'HoverCard.Root';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof HoverCardPrimitive.Trigger>;\ninterface HoverCardTriggerProps\n extends ComponentPropsWithout<typeof HoverCardPrimitive.Trigger, RemovedProps> {}\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n ({ children, className, ...props }, forwardedRef) => (\n <HoverCardPrimitive.Trigger\n ref={forwardedRef}\n className={classNames('rt-HoverCardTrigger', className)}\n {...props}\n asChild\n >\n {requireReactElement(children)}\n </HoverCardPrimitive.Trigger>\n )\n);\nHoverCardTrigger.displayName = 'HoverCard.Trigger';\n\ntype HoverCardContentElement = React.ElementRef<typeof HoverCardPrimitive.Content>;\ninterface HoverCardContentProps\n extends ComponentPropsWithout<typeof HoverCardPrimitive.Content, RemovedProps>,\n HoverCardContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Portal>['container'];\n}\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props, forwardedRef) => {\n const { className, forceMount, container, ...contentProps } = extractProps(\n props,\n hoverCardContentPropDefs\n );\n return (\n <HoverCardPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <HoverCardPrimitive.Content\n align=\"start\"\n sideOffset={8}\n collisionPadding={10}\n {...contentProps}\n ref={forwardedRef}\n className={classNames('rt-PopperContent', 'rt-HoverCardContent', className)}\n />\n </Theme>\n </HoverCardPrimitive.Portal>\n );\n }\n);\nHoverCardContent.displayName = 'HoverCard.Content';\n\nexport { HoverCardRoot as Root, HoverCardTrigger as Trigger, HoverCardContent as Content };\nexport type {\n HoverCardRootProps as RootProps,\n HoverCardTriggerProps as TriggerProps,\n HoverCardContentProps as ContentProps,\n};\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst contentSizes = ['1', '2', '3'] as const;\n\nconst hoverCardContentPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: contentSizes,\n default: '2',\n responsive: true,\n },\n width: widthPropDefs.width,\n minWidth: widthPropDefs.minWidth,\n maxWidth: { ...widthPropDefs.maxWidth, default: '480px' },\n ...heightPropDefs,\n} satisfies {\n width: PropDef<string>;\n minWidth: PropDef<string>;\n maxWidth: PropDef<string>;\n size: PropDef<(typeof contentSizes)[number]>;\n};\n\ntype HoverCardContentOwnProps = GetPropDefTypes<\n typeof hoverCardContentPropDefs &\n typeof asChildPropDef &\n typeof widthPropDefs &\n typeof heightPropDefs\n>;\n\nexport { hoverCardContentPropDefs };\nexport type { HoverCardContentOwnProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\nimport { Tooltip } from './tooltip.js';\nimport { useTooltipWrapper } from '../hooks/use-tooltip-wrapper.js';\nimport type { BaseButtonProps } from './_internal/base-button.js';\n\ntype IconButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Required accessibility props for icon buttons\n * Icon buttons must have an accessible name to meet WCAG guidelines\n *\n * Three ways to provide accessibility:\n * 1. aria-label: Direct descriptive text\n * 2. aria-labelledby: Reference to a label element\n * 3. children: Visible text content (fallback)\n */\ntype AccessibilityProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string }\n | { 'aria-label'?: never; 'aria-labelledby'?: never; children: React.ReactNode };\n\n/**\n * Tooltip configuration props that can be passed to IconButton\n * These props are forwarded to the underlying Tooltip component\n */\ninterface IconButtonTooltipProps {\n /** Content to display in the tooltip on hover/focus */\n tooltip?: React.ReactNode;\n /** Side of the button where the tooltip should appear */\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the tooltip relative to the button */\n tooltipAlign?: 'start' | 'center' | 'end';\n /** Delay before showing the tooltip (in milliseconds) */\n tooltipDelayDuration?: number;\n /** Whether to disable hoverable content behavior */\n tooltipDisableHoverableContent?: boolean;\n}\n\n/**\n * Core IconButton props excluding the 'as' prop for polymorphic behavior\n * Combines BaseButton props with accessibility requirements and tooltip functionality\n */\ntype IconButtonOwnProps = Omit<BaseButtonProps, 'as'> & AccessibilityProps & IconButtonTooltipProps;\n\n/**\n * Polymorphic IconButton props that support rendering as different HTML elements\n * @template C - The element type to render as (defaults to 'button')\n */\ntype IconButtonProps<C extends React.ElementType = 'button'> = IconButtonOwnProps & {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & Omit<React.ComponentPropsWithoutRef<C>, keyof IconButtonOwnProps>;\n\n/**\n * IconButton component type that supports polymorphic rendering\n * @template C - The element type to render as\n */\ntype IconButtonComponent = <C extends React.ElementType = 'button'>(props: IconButtonProps<C> & { ref?: React.ForwardedRef<IconButtonElement> }) => React.ReactElement | null;\n\n/**\n * IconButton component for compact, accessible icon-only interactions\n *\n * The IconButton component extends Button with specialized behavior for visual symbols.\n * It enforces accessibility requirements, provides automatic square sizing, and includes\n * built-in tooltip integration. Icon buttons are essential for space-efficient interfaces\n * while maintaining accessibility compliance.\n *\n * Key features:\n * - Enforced accessibility requirements (aria-label, aria-labelledby, or children)\n * - Automatic square aspect ratios for consistent visual alignment\n * - Built-in tooltip support for context and guidance\n * - Same variant and size system as Button for consistency\n * - Runtime validation for accessibility compliance\n *\n * @example\n * ```tsx\n * // Basic icon button with aria-label\n * <IconButton aria-label=\"Settings\">\n * <Settings />\n * </IconButton>\n *\n * // Icon button with tooltip\n * <IconButton aria-label=\"Save\" tooltip=\"Save your progress\">\n * <Save />\n * </IconButton>\n *\n * // Icon button with aria-labelledby\n * <IconButton aria-labelledby=\"settings-label\">\n * <Settings />\n * </IconButton>\n * <span id=\"settings-label\">Open settings panel</span>\n *\n * // Icon button with visible text (fallback)\n * <IconButton>\n * <Settings />\n * Settings\n * </IconButton>\n * ```\n */\nconst IconButton = React.forwardRef(\n (\n { className, tooltip, tooltipSide = 'top', tooltipAlign = 'center', tooltipDelayDuration, tooltipDisableHoverableContent, ...props }: IconButtonProps,\n forwardedRef: React.ForwardedRef<IconButtonElement>,\n ) => {\n // Use shared tooltip wrapper hook for accessibility props\n const { tooltipId, hasTooltip, accessibilityProps: tooltipAccessibilityProps } = useTooltipWrapper(tooltip);\n\n // Runtime accessibility validation to ensure WCAG compliance\n // This helps catch accessibility issues during development\n const hasAriaLabel = 'aria-label' in props && props['aria-label'];\n const hasAriaLabelledBy = 'aria-labelledby' in props && props['aria-labelledby'];\n const hasChildren = 'children' in props && props.children;\n\n // Validate accessible name - throw in development, log error in production\n if (!hasAriaLabel && !hasAriaLabelledBy && !hasChildren) {\n const errorMessage =\n 'IconButton: Icon buttons must have an accessible name. Please provide either:' +\n '\\n- aria-label prop with descriptive text' +\n '\\n- aria-labelledby prop referencing a label element' +\n '\\n- or visible text children';\n\n if (process.env.NODE_ENV === 'development') {\n throw new Error(errorMessage);\n } else {\n console.error(errorMessage);\n }\n }\n\n // Create the base icon button element with accessibility props\n const iconButton = <BaseButton {...props} {...tooltipAccessibilityProps} ref={forwardedRef} className={classNames('rt-IconButton', className)} />;\n\n // If no tooltip is provided, return the icon button as-is for better performance\n if (!hasTooltip) {\n return iconButton;\n }\n\n // Wrap with Tooltip when tooltip content is provided\n // This creates a compound component that handles both button and tooltip functionality\n return (\n <Tooltip content={tooltip} side={tooltipSide} align={tooltipAlign} delayDuration={tooltipDelayDuration} disableHoverableContent={tooltipDisableHoverableContent} id={tooltipId}>\n {iconButton}\n </Tooltip>\n );\n },\n) as IconButtonComponent & { displayName?: string };\n\nIconButton.displayName = 'IconButton';\n\nexport { IconButton };\nexport type { IconButtonProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { imagePropDefs } from './image.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { Skeleton } from './skeleton.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { WidthProps } from '../props/width.props.js';\nimport type { HeightProps } from '../props/height.props.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ImageElement = React.ElementRef<'img'>;\n\ntype ImageOwnProps = GetPropDefTypes<typeof imagePropDefs> & {\n /**\n * Native loading behavior for the image\n * @default 'lazy'\n */\n loading?: 'eager' | 'lazy';\n /**\n * Placeholder image URL to show while the main image is loading (LQIP pattern)\n */\n placeholder?: string;\n /**\n * Shows a skeleton placeholder while loading\n */\n showSkeleton?: boolean;\n /**\n * Whether the image should fade in when loaded\n * @default true\n */\n fadeIn?: boolean;\n /**\n * Callback fired when the image successfully loads\n */\n onLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n /**\n * Callback fired when the image fails to load\n */\n onError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n /**\n * Alternative text for the image (required for accessibility)\n */\n alt: string;\n /**\n * Image source URL\n */\n src: string;\n /**\n * When true, the image will fill its parent container (for Next.js Image compatibility).\n * Parent must have `position: relative` and defined dimensions.\n */\n fill?: boolean;\n};\n\ninterface CommonImageProps\n extends MarginProps,\n WidthProps,\n HeightProps,\n LayoutProps,\n ImageOwnProps {}\n\ntype ImageImgProps = { as?: 'img' } & ComponentPropsWithout<'img', RemovedProps | 'color' | 'width' | 'height' | 'alt'>;\ntype ImageComponentProps = { as: React.ComponentType<any> } & Record<string, any>;\ntype ImageProps = CommonImageProps & (ImageImgProps | ImageComponentProps);\n\n/**\n * Image component for displaying images with enhanced loading states and accessibility.\n *\n * Supports polymorphic rendering via the `as` prop for Next.js Image compatibility.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Image src=\"/photo.jpg\" alt=\"Team photo\" />\n *\n * // With Next.js Image (fixed dimensions)\n * import NextImage from 'next/image';\n * <Image as={NextImage} src=\"/photo.jpg\" alt=\"...\" width={400} height={300} />\n *\n * // With Next.js Image (fill mode - parent needs position: relative and dimensions)\n * <div style={{ position: 'relative', width: '100%', aspectRatio: '16/9' }}>\n * <Image as={NextImage} src=\"/photo.jpg\" alt=\"...\" fill />\n * </div>\n *\n * // With placeholder and skeleton\n * <Image\n * src=\"/high-res.jpg\"\n * placeholder=\"/low-res.jpg\"\n * showSkeleton\n * alt=\"Product showcase\"\n * />\n *\n * // With caption\n * <Image\n * src=\"/chart.png\"\n * alt=\"Sales data visualization\"\n * caption=\"Q3 2024 Sales Performance\"\n * />\n * ```\n */\nconst Image = React.forwardRef<ImageElement, ImageProps>((props, forwardedRef) => {\n // Extract native width/height before extractProps consumes them (for Next.js Image compatibility)\n const nativeWidth = typeof props.width === 'number' ? props.width : undefined;\n const nativeHeight = typeof props.height === 'number' ? props.height : undefined;\n // Check if fill prop is used (for Next.js Image compatibility)\n const hasFill = 'fill' in props && props.fill === true;\n\n const {\n as: Component = 'img',\n asChild: _asChild, // Extract to prevent passing to DOM element\n fill: _fill, // Extract to prevent passing to native img element (only used for custom components)\n className,\n style,\n loading = 'lazy',\n alt,\n src,\n placeholder,\n showSkeleton = false,\n fadeIn = true,\n loadingAriaLabel = 'Loading image...',\n errorAriaLabel = 'Failed to load image',\n radius,\n caption,\n onLoad: userOnLoad,\n onError: userOnError,\n ...restProps\n } = extractProps(\n props,\n imagePropDefs,\n marginPropDefs,\n widthPropDefs,\n heightPropDefs,\n layoutPropDefs,\n );\n\n // When using a custom component (like Next.js Image), pass native width/height and fill\n const isCustomComponent = Component !== 'img';\n const componentDimensionProps = isCustomComponent\n ? { width: nativeWidth, height: nativeHeight, ...(hasFill ? { fill: true } : {}) }\n : {};\n\n const [loadingState, setLoadingState] = React.useState<'loading' | 'loaded' | 'error'>('loading');\n const [showPlaceholder, setShowPlaceholder] = React.useState(!!placeholder);\n const imgRef = React.useRef<HTMLImageElement>(null);\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setLoadingState('loaded');\n setShowPlaceholder(false);\n userOnLoad?.(event);\n },\n [userOnLoad],\n );\n\n const handleError = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setLoadingState('error');\n setShowPlaceholder(false);\n userOnError?.(event);\n },\n [userOnError],\n );\n\n // Check if image is already cached\n React.useEffect(() => {\n const img = imgRef.current;\n if (img && img.complete && img.naturalWidth > 0) {\n setLoadingState('loaded');\n setShowPlaceholder(false);\n }\n }, [src]);\n\n if (!src) {\n console.warn('Image component: src prop is required');\n return null;\n }\n\n const isLoading = loadingState === 'loading';\n const isError = loadingState === 'error';\n const isLoaded = loadingState === 'loaded';\n\n // When using fill (Next.js Image), don't add dimension/position styles as Next.js handles them\n const imgStyle: React.CSSProperties = hasFill\n ? {\n display: 'block',\n opacity: fadeIn ? (isLoaded ? 1 : 0) : 1,\n transition: fadeIn ? 'opacity 0.3s ease-out' : 'none',\n }\n : {\n width: '100%',\n height: '100%',\n display: 'block',\n opacity: fadeIn ? (isLoaded ? 1 : 0) : 1,\n transition: fadeIn ? 'opacity 0.3s ease-out' : 'none',\n };\n\n const mergeRefs = (node: HTMLImageElement | null) => {\n (imgRef as React.RefObject<HTMLImageElement | null>).current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n\n const imageElement = (\n <Component\n ref={mergeRefs}\n loading={loading}\n style={hasFill ? imgStyle : { ...imgStyle, position: 'relative', zIndex: 1 }}\n className={classNames('rt-reset', 'rt-Image')}\n alt={alt}\n src={src}\n data-radius={radius}\n onLoad={handleLoad}\n onError={handleError}\n aria-busy={isLoading}\n aria-invalid={isError}\n aria-describedby={isError ? 'image-error' : undefined}\n {...componentDimensionProps}\n {...restProps}\n />\n );\n\n const loadingAnnouncement = isLoading && (\n <div className=\"rt-sr-only\" aria-live=\"polite\" role=\"status\">\n {loadingAriaLabel}\n </div>\n );\n\n const errorAnnouncement = isError && (\n <div id=\"image-error\" className=\"rt-sr-only\" aria-live=\"polite\" role=\"alert\">\n {errorAriaLabel}\n </div>\n );\n\n const skeletonElement = showSkeleton && isLoading && (\n <Skeleton width=\"100%\" height=\"100%\" style={{ position: 'absolute', inset: 0 }} />\n );\n\n const placeholderElement = placeholder && showPlaceholder && (\n <img\n style={{\n ...imgStyle,\n position: 'absolute',\n inset: 0,\n filter: 'blur(4px)',\n opacity: 0.7,\n zIndex: 0,\n }}\n className={classNames('rt-reset', 'rt-Image', 'rt-Image--placeholder')}\n alt=\"\"\n src={placeholder}\n />\n );\n\n // Simple flat structure when no caption\n if (!caption) {\n // When using fill, wrapper uses absolute positioning to fill the nearest positioned ancestor\n const wrapperStyle: React.CSSProperties = hasFill\n ? { position: 'absolute', inset: 0, ...style }\n : { position: 'relative', ...style };\n return (\n <div className={className} style={wrapperStyle}>\n {loadingAnnouncement}\n {errorAnnouncement}\n {skeletonElement}\n {placeholderElement}\n {imageElement}\n </div>\n );\n }\n\n // Flexbox structure when caption is present\n return (\n <div\n className={className}\n style={{\n display: 'flex',\n flexDirection: 'column',\n ...style,\n }}\n >\n <div\n style={{\n position: 'relative',\n flex: '1 1 0%',\n minHeight: 0,\n }}\n >\n {loadingAnnouncement}\n {errorAnnouncement}\n {skeletonElement}\n {placeholderElement}\n {imageElement}\n </div>\n\n <div className=\"rt-Image-caption\" style={{ flex: '0 0 auto' }}>\n {caption}\n </div>\n </div>\n );\n});\n\nImage.displayName = 'Image';\n\nexport { Image };\nexport type { ImageProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\n/**\n * Available object-fit values for controlling image scaling behavior\n * \n * - cover: Scales image to cover entire container, may crop edges\n * - contain: Scales image to fit entirely within container, may have empty space\n * - fill: Stretches image to fill container exactly, may distort aspect ratio\n * - scale-down: Acts like 'contain' but never scales up beyond original size\n * - none: Image keeps original size, may overflow or leave empty space\n */\nconst objectFitValues = ['cover', 'contain', 'fill', 'scale-down', 'none'] as const;\n\n/**\n * Image component prop definitions that define the component's API\n * \n * These props control the visual appearance, behavior, and accessibility\n * features of the Image component. The component supports responsive\n * design, accessibility compliance, and flexible layout options.\n * \n * Key features:\n * - Object-fit control for responsive image scaling\n * - Radius control for rounded corners\n * - Caption support for additional context\n * - Accessibility labels for loading and error states\n * - AsChild pattern for flexible composition\n * \n * @example\n * ```tsx\n * // Basic image with cover fit\n * <Image src=\"/photo.jpg\" alt=\"Team photo\" fit=\"cover\" />\n * \n * // Image with caption and custom radius\n * <Image \n * src=\"/chart.png\" \n * alt=\"Sales data\"\n * caption=\"Q3 2024 Performance\"\n * radius=\"medium\"\n * />\n * \n * // Responsive object-fit\n * <Image \n * src=\"/banner.jpg\" \n * alt=\"Hero banner\"\n * fit={{ initial: 'cover', md: 'contain' }}\n * />\n * ```\n */\nconst imagePropDefs = {\n ...asChildPropDef,\n ...radiusPropDef,\n /**\n * Controls how the image should be resized to fit its container\n * \n * Sets the CSS object-fit property with responsive support.\n * Choose the right fit based on your design needs:\n * \n * - 'cover': Best for hero images, thumbnails, and cards where you want to fill the space\n * - 'contain': Best for product images, logos, and content where the entire image must be visible\n * - 'fill': Use carefully, only when you want to stretch the image to exact dimensions\n * - 'scale-down': Good for user-uploaded content where you don't want to enlarge small images\n * - 'none': Useful for pixel-perfect images or when you want original sizing\n * \n * @example\n * ```tsx\n * // Fill the container, may crop edges\n * <Image src=\"/hero.jpg\" fit=\"cover\" alt=\"Hero image\" />\n * \n * // Show entire image, may have empty space\n * <Image src=\"/logo.png\" fit=\"contain\" alt=\"Company logo\" />\n * \n * // Responsive fit\n * <Image \n * src=\"/banner.jpg\" \n * fit={{ initial: 'cover', lg: 'contain' }}\n * alt=\"Responsive banner\"\n * />\n * ```\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit\n */\n fit: {\n type: 'enum',\n className: 'rt-r-fit',\n values: objectFitValues,\n default: 'cover',\n responsive: true,\n },\n /**\n * ARIA label announced by screen readers during image loading\n * \n * Provides accessibility feedback for users with visual impairments.\n * Customize this message to match your application's language and tone.\n * \n * @example\n * ```tsx\n * <Image \n * src=\"/chart.jpg\" \n * loadingAriaLabel=\"Loading sales chart...\"\n * alt=\"Sales performance chart\"\n * />\n * ```\n */\n loadingAriaLabel: {\n type: 'string',\n default: 'Loading image...',\n },\n /**\n * ARIA label announced by screen readers when image loading fails\n * \n * Provides accessibility feedback for error states.\n * Should clearly indicate that the image failed to load and may suggest alternatives.\n * \n * @example\n * ```tsx\n * <Image \n * src=\"/photo.jpg\" \n * errorAriaLabel=\"Photo failed to load. Please refresh the page.\"\n * alt=\"Team photo\"\n * />\n * ```\n */\n errorAriaLabel: {\n type: 'string',\n default: 'Failed to load image',\n },\n /**\n * Optional caption text displayed below the image\n * \n * Provides additional context, description, or attribution for the image.\n * The caption is styled consistently and positioned below the image content.\n * \n * Use captions for:\n * - Photo credits and attributions\n * - Additional context or explanation\n * - Data source information for charts\n * - Descriptive text that supplements the alt attribute\n * \n * @example\n * ```tsx\n * <Image \n * src=\"/chart.png\" \n * alt=\"Q3 sales performance showing 25% growth\"\n * caption=\"Data source: Internal sales tracking system\"\n * />\n * ```\n */\n caption: {\n type: 'string',\n default: undefined,\n },\n} satisfies {\n fit: PropDef<(typeof objectFitValues)[number]>;\n loadingAriaLabel: PropDef<string>;\n errorAriaLabel: PropDef<string>;\n radius: PropDef<'none' | 'small' | 'medium' | 'large' | 'full'>;\n caption: PropDef<string | undefined>;\n};\n\nexport { imagePropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { inert } from '../helpers/inert.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { skeletonPropDefs } from './skeleton.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SkeletonElement = React.ElementRef<'span'>;\ntype SkeletonOwnProps = GetPropDefTypes<typeof skeletonPropDefs>;\ninterface SkeletonProps\n extends ComponentPropsWithout<'span', RemovedProps>,\n MarginProps,\n SkeletonOwnProps {}\nconst Skeleton = React.forwardRef<SkeletonElement, SkeletonProps>((props, forwardedRef) => {\n const { children, className, loading, ...skeletonProps } = extractProps(\n props,\n skeletonPropDefs,\n marginPropDefs,\n );\n\n if (!loading) return children;\n\n const Tag = React.isValidElement(children) ? Slot.Root : 'span';\n\n return (\n <Tag\n ref={forwardedRef}\n aria-hidden\n className={classNames('rt-Skeleton', className)}\n data-inline-skeleton={React.isValidElement(children) ? undefined : true}\n tabIndex={-1}\n inert={inert}\n {...skeletonProps}\n >\n {children}\n </Tag>\n );\n});\nSkeleton.displayName = 'Skeleton';\n\nexport { Skeleton };\nexport type { SkeletonProps };\n", "import * as React from 'react';\n\n// \"inert\" works differently between React versions\n// https://github.com/facebook/react/pull/24730\nexport const inert = (Number.parseFloat(React.version) >= 19 || '') as React.HTMLAttributes<unknown>['inert'];\n", "import { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst skeletonPropDefs = {\n loading: { type: 'boolean', default: true },\n ...widthPropDefs,\n ...heightPropDefs,\n} satisfies {\n loading: PropDef<boolean>;\n};\n\nexport { skeletonPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { insetPropDefs } from './inset.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype InsetElement = React.ElementRef<'div'>;\ntype InsetOwnProps = GetPropDefTypes<typeof insetPropDefs>;\ninterface InsetProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n InsetOwnProps {}\n\nconst Inset = React.forwardRef<InsetElement, InsetProps>((props, forwardedRef) => {\n const { asChild, className, ...insetProps } = extractProps(props, insetPropDefs, marginPropDefs);\n const Comp = asChild ? Slot.Root : 'div';\n return <Comp {...insetProps} ref={forwardedRef} className={classNames('rt-Inset', className)} />;\n});\nInset.displayName = 'Inset';\n\nexport { Inset };\nexport type { InsetProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sides = ['all', 'x', 'y', 'top', 'bottom', 'left', 'right'] as const;\nconst clipValues = ['border-box', 'padding-box'] as const;\nconst paddingValues = ['current', '0'] as const;\n\nconst insetPropDefs = {\n ...asChildPropDef,\n side: {\n type: 'enum',\n className: 'rt-r-side',\n values: sides,\n default: 'all',\n responsive: true,\n },\n clip: {\n type: 'enum',\n className: 'rt-r-clip',\n values: clipValues,\n default: 'border-box',\n responsive: true,\n },\n p: {\n type: 'enum',\n className: 'rt-r-p',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n px: {\n type: 'enum',\n className: 'rt-r-px',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n py: {\n type: 'enum',\n className: 'rt-r-py',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n pt: {\n type: 'enum',\n className: 'rt-r-pt',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n pr: {\n type: 'enum',\n className: 'rt-r-pr',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n pb: {\n type: 'enum',\n className: 'rt-r-pb',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n pl: {\n type: 'enum',\n className: 'rt-r-pl',\n values: paddingValues,\n parseValue: parsePaddingValue,\n responsive: true,\n },\n} satisfies {\n side: PropDef<(typeof sides)[number]>;\n clip: PropDef<(typeof clipValues)[number]>;\n p: PropDef<(typeof paddingValues)[number]>;\n px: PropDef<(typeof paddingValues)[number]>;\n py: PropDef<(typeof paddingValues)[number]>;\n pt: PropDef<(typeof paddingValues)[number]>;\n pr: PropDef<(typeof paddingValues)[number]>;\n pb: PropDef<(typeof paddingValues)[number]>;\n pl: PropDef<(typeof paddingValues)[number]>;\n};\n\nfunction parsePaddingValue(value: string) {\n return value === 'current' ? 'inset' : value;\n}\n\nexport { insetPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { linkPropDefs } from './link.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype LinkElement = React.ElementRef<'a'>;\ntype LinkOwnProps = GetPropDefTypes<typeof linkPropDefs>;\ninterface LinkProps extends ComponentPropsWithout<'a', RemovedProps>, MarginProps, LinkOwnProps {}\nconst Link = React.forwardRef<LinkElement, LinkProps>((props, forwardedRef) => {\n const { children, className, color, asChild, ...linkProps } = extractProps(props, linkPropDefs);\n return (\n <Text\n {...linkProps}\n data-accent-color={color}\n ref={forwardedRef}\n asChild\n className={classNames('rt-reset', 'rt-Link', className)}\n >\n {asChild ? (\n children\n ) : (\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\n <a>{children}</a>\n )}\n </Text>\n );\n});\nLink.displayName = 'Link';\n\nexport { Link };\nexport type { LinkProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst underline = ['auto', 'always', 'hover', 'none'] as const;\n\nconst linkPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n responsive: true,\n },\n ...weightPropDef,\n ...leadingTrimPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n underline: { type: 'enum', className: 'rt-underline', values: underline, default: 'auto' },\n ...accentColorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n underline: PropDef<(typeof underline)[number]>;\n};\n\nexport { linkPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Flex } from './flex.js';\nimport { Slot } from './slot.js';\n\nimport type { FlexProps } from './flex.js';\n\nimport { navbarRootPropDefs } from './navbar.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\n/**\n * Navbar Component\n *\n * A horizontal navigation bar component with semantic slots for organizing\n * content. Follows the Shell and Sidebar compound component patterns.\n *\n * @example\n * <Navbar.Root>\n * <Navbar.Logo>Brand/logo content</Navbar.Logo>\n * <Navbar.Navigation>Navigation links</Navbar.Navigation>\n * <Navbar.Actions>CTAs, user menu, etc</Navbar.Actions>\n * </Navbar.Root>\n */\n\n// Root Component\ntype NavbarRootElement = React.ElementRef<'header'>;\ntype NavbarRootOwnProps = GetPropDefTypes<typeof navbarRootPropDefs>;\ninterface NavbarRootProps\n extends ComponentPropsWithout<'header', RemovedProps>,\n NavbarRootOwnProps {}\n\nconst NavbarRoot = React.forwardRef<NavbarRootElement, NavbarRootProps>(\n (props, forwardedRef) => {\n const { children, className, ...rootProps } = extractProps(\n props,\n navbarRootPropDefs,\n );\n\n const position = props.position ?? 'fixed';\n const size = props.size ?? '2';\n\n return (\n <header\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-NavbarRoot', className)}\n data-position={position}\n data-size={size}\n >\n <div className=\"rt-NavbarContainer\">{children}</div>\n </header>\n );\n },\n);\nNavbarRoot.displayName = 'Navbar.Root';\n\n// Logo Slot - extends FlexProps\ntype NavbarLogoProps = FlexProps & {\n asChild?: boolean;\n};\n\nconst NavbarLogo = React.forwardRef<HTMLDivElement, NavbarLogoProps>(\n ({ asChild, gap = '2', align = 'center', justify = 'start', className, ...props }, ref) => {\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={classNames('rt-NavbarLogo', className)}\n {...props}\n />\n );\n }\n\n return (\n <Flex\n ref={ref}\n gap={gap}\n align={align}\n justify={justify}\n className={classNames('rt-NavbarLogo', className)}\n {...props}\n />\n );\n }\n);\nNavbarLogo.displayName = 'Navbar.Logo';\n\n// Navigation Slot - extends FlexProps\ntype NavbarNavigationProps = FlexProps & {\n asChild?: boolean;\n};\n\nconst NavbarNavigation = React.forwardRef<HTMLDivElement, NavbarNavigationProps>(\n ({ asChild, gap = '4', align = 'center', justify = 'center', className, ...props }, ref) => {\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={classNames('rt-NavbarNavigation', className)}\n role=\"navigation\"\n {...props}\n />\n );\n }\n\n return (\n <Flex\n ref={ref}\n gap={gap}\n align={align}\n justify={justify}\n className={classNames('rt-NavbarNavigation', className)}\n role=\"navigation\"\n {...props}\n />\n );\n }\n);\nNavbarNavigation.displayName = 'Navbar.Navigation';\n\n// Actions Slot - extends FlexProps\ntype NavbarActionsProps = FlexProps & {\n asChild?: boolean;\n};\n\nconst NavbarActions = React.forwardRef<HTMLDivElement, NavbarActionsProps>(\n ({ asChild, gap = '4', align = 'center', justify = 'end', className, ...props }, ref) => {\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={classNames('rt-NavbarActions', className)}\n {...props}\n />\n );\n }\n\n return (\n <Flex\n ref={ref}\n gap={gap}\n align={align}\n justify={justify}\n className={classNames('rt-NavbarActions', className)}\n {...props}\n />\n );\n }\n);\nNavbarActions.displayName = 'Navbar.Actions';\n\nexport {\n NavbarRoot as Root,\n NavbarLogo as Logo,\n NavbarNavigation as Navigation,\n NavbarActions as Actions,\n};\n\nexport type {\n NavbarRootProps as RootProps,\n NavbarLogoProps as LogoProps,\n NavbarNavigationProps as NavigationProps,\n NavbarActionsProps as ActionsProps,\n};\n", "import type { PropDef } from '../props/prop-def.js';\n\nconst positions = ['static', 'fixed', 'sticky'] as const;\nconst sizes = ['1', '2', '3'] as const;\n\nconst navbarRootPropDefs = {\n position: {\n type: 'enum',\n values: positions,\n default: 'fixed',\n },\n size: {\n type: 'enum',\n values: sizes,\n default: '2',\n },\n} satisfies {\n position: PropDef<(typeof positions)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { navbarRootPropDefs };\n", "import { Portal as PortalPrimitive } from 'radix-ui';\nexport const Portal = PortalPrimitive.Root;\nexport const Root = PortalPrimitive.Root;\nexport type PortalProps = PortalPrimitive.PortalProps;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Progress as ProgressPrimitive } from 'radix-ui';\n\nimport { progressPropDefs } from './progress.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { mergeStyles } from '../helpers/merge-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ProgressElement = React.ElementRef<typeof ProgressPrimitive.Root>;\ntype ProgressOwnProps = GetPropDefTypes<typeof progressPropDefs>;\ninterface ProgressProps\n extends ComponentPropsWithout<typeof ProgressPrimitive.Root, RemovedProps | 'children'>,\n MarginProps,\n ProgressOwnProps {\n duration?: `${number}s` | `${number}ms`;\n}\nconst Progress = React.forwardRef<ProgressElement, ProgressProps>((props, forwardedRef) => {\n const { className, style, color, radius, duration, ...progressProps } = extractProps(\n props,\n progressPropDefs,\n marginPropDefs\n );\n\n return (\n <ProgressPrimitive.Root\n data-accent-color={color}\n data-radius={radius}\n ref={forwardedRef}\n className={classNames('rt-ProgressRoot', className)}\n style={mergeStyles(\n {\n '--progress-duration': 'value' in progressProps ? undefined : duration,\n '--progress-value': 'value' in progressProps ? progressProps.value : undefined,\n '--progress-max': 'max' in progressProps ? progressProps.max : undefined,\n },\n style\n )}\n {...progressProps}\n asChild={false}\n >\n <ProgressPrimitive.Indicator className=\"rt-ProgressIndicator\" />\n </ProgressPrimitive.Root>\n );\n});\nProgress.displayName = 'Progress';\n\nexport { Progress };\nexport type { ProgressProps };\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['surface', 'soft', 'outline'] as const;\n\nconst progressPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n ...colorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n duration: { type: 'string' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n duration: PropDef<string>;\n};\n\nexport { progressPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { quotePropDefs } from './quote.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype QuoteElement = React.ElementRef<'q'>;\ntype QuoteOwnProps = GetPropDefTypes<typeof quotePropDefs>;\ninterface QuoteProps extends ComponentPropsWithout<'q', RemovedProps>, QuoteOwnProps {}\nconst Quote = React.forwardRef<QuoteElement, QuoteProps>((props, forwardedRef) => {\n const { asChild, className, ...quoteProps } = extractProps(props, quotePropDefs);\n const Comp = asChild ? Slot.Root : 'q';\n return <Comp {...quoteProps} ref={forwardedRef} className={classNames('rt-Quote', className)} />;\n});\nQuote.displayName = 'Quote';\n\nexport { Quote };\nexport type { QuoteProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst quotePropDefs = {\n ...asChildPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n};\n\nexport { quotePropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioCardsRootPropDefs } from './radio-cards.props.js';\nimport { Grid } from './grid.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { useThemeContext } from './theme.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes, Responsive } from '../props/prop-def.js';\n\ntype RadioCardsContextValue = {\n size?: Responsive<(typeof radioCardsRootPropDefs.size.values)[number]>;\n variant?: (typeof radioCardsRootPropDefs.variant.values)[number];\n};\n\nconst RadioCardsContext = React.createContext<RadioCardsContextValue | undefined>(undefined);\n\nconst useRadioCardsContext = () => {\n const context = React.useContext(RadioCardsContext);\n return context;\n};\n\ntype RadioCardsRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ntype RadioCardsRootOwnProps = GetPropDefTypes<typeof radioCardsRootPropDefs>;\ninterface RadioCardsRootProps\n extends ComponentPropsWithout<\n typeof RadioGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n MarginProps,\n RadioCardsRootOwnProps {}\nconst RadioCardsRoot = React.forwardRef<RadioCardsRootElement, RadioCardsRootProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n const panelBackground = props.panelBackground ?? themeContext.panelBackground;\n const {\n className,\n color,\n panelBackground: _,\n ...rootProps\n } = extractProps(props, radioCardsRootPropDefs, marginPropDefs);\n return (\n <RadioCardsContext.Provider value={{ size: props.size, variant: props.variant }}>\n <Grid asChild>\n <RadioGroupPrimitive.Root\n data-accent-color={color}\n data-panel-background={panelBackground}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-RadioCardsRoot', className)}\n />\n </Grid>\n </RadioCardsContext.Provider>\n );\n },\n);\nRadioCardsRoot.displayName = 'RadioCards.Root';\n\ntype RadioCardsItemElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioCardsItemProps\n extends ComponentPropsWithout<typeof RadioGroupPrimitive.Item, RemovedProps>,\n MarginProps {}\nconst RadioCardsItem = React.forwardRef<RadioCardsItemElement, RadioCardsItemProps>(\n ({ className, ...props }, forwardedRef) => {\n const context = useRadioCardsContext();\n const variantClass = context?.variant ? `rt-variant-${context.variant}` : undefined;\n const sizeClass = context?.size ? `rt-r-size-${context.size}` : undefined;\n\n return (\n <RadioGroupPrimitive.Item\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-reset',\n 'rt-BaseCard',\n 'rt-RadioCardsItem',\n variantClass,\n sizeClass,\n className,\n )}\n />\n );\n },\n);\nRadioCardsItem.displayName = 'RadioCards.Item';\n\nexport { RadioCardsRoot as Root, RadioCardsItem as Item };\nexport type { RadioCardsRootProps as RootProps, RadioCardsItemProps as ItemProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { gridPropDefs } from './grid.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] as const;\nconst variants = ['outline', 'classic', 'ghost', 'soft', 'surface'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst radioCardsRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n ...colorPropDef,\n ...highContrastPropDef,\n columns: { ...gridPropDefs.columns, default: 'repeat(auto-fit, minmax(160px, 1fr))' },\n gap: { ...gridPropDefs.gap, default: '4' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n columns: PropDef<(typeof gridPropDefs.columns.values)[number]>;\n gap: PropDef<(typeof gridPropDefs.gap.values)[number]>;\n};\n\nexport { radioCardsRootPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioGroupRootPropDefs } from './radio-group.props.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Context.Scope };\nconst [createRadioGroupContext] = Context.createContextScope(RADIO_GROUP_NAME, [\n RadioGroupPrimitive.createRadioGroupScope,\n]);\nconst useRadioGroupScope = RadioGroupPrimitive.createRadioGroupScope();\n\ntype RadioGroupRootOwnProps = GetPropDefTypes<typeof radioGroupRootPropDefs>;\ntype RadioGroupContextValue = RadioGroupRootOwnProps;\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ninterface RadioGroupRootProps\n extends ComponentPropsWithout<\n typeof RadioGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n MarginProps,\n RadioGroupRootOwnProps {}\nconst RadioGroupRoot = React.forwardRef<RadioGroupRootElement, RadioGroupRootProps>(\n (\n {\n color = radioGroupRootPropDefs.color.default,\n highContrast = radioGroupRootPropDefs.highContrast.default,\n size = radioGroupRootPropDefs.size.default,\n variant = radioGroupRootPropDefs.variant.default,\n ...props\n }: ScopedProps<RadioGroupRootProps>,\n forwardedRef\n ) => {\n const { __scopeRadioGroup, className, ...rootProps } = extractProps(props, marginPropDefs);\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n color={color}\n highContrast={highContrast}\n size={size}\n variant={variant}\n >\n <RadioGroupPrimitive.Root\n {...radioGroupScope}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-RadioGroupRoot', className)}\n />\n </RadioGroupProvider>\n );\n }\n);\nRadioGroupRoot.displayName = 'RadioGroup.Root';\n\ntype RadioGroupItemElement = React.ElementRef<typeof RadioGroupItemRadio>;\ninterface RadioGroupItemProps\n extends ComponentPropsWithout<typeof RadioGroupItemRadio, RemovedProps>,\n MarginProps {}\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (_props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, children, className, style, ...props } = _props;\n const { size } = useRadioGroupContext('RadioGroupItem', __scopeRadioGroup);\n\n // Render `<Text as=\"label\">` if children\u00A0are provided, otherwise render\n // the solo radio button to allow building out your custom layouts with it.\n if (children) {\n return (\n <Text\n as=\"label\"\n size={size}\n className={classNames('rt-RadioGroupItem', className)}\n style={style}\n >\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n />\n {children && <span className=\"rt-RadioGroupItemInner\">{children}</span>}\n </Text>\n );\n }\n\n return (\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n className={className}\n style={style}\n />\n );\n }\n);\nRadioGroupItem.displayName = 'RadioGroup.Item';\n\ntype RadioGroupItemRadioElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioGroupItemRadioProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {}\nconst RadioGroupItemRadio = React.forwardRef<\n RadioGroupItemRadioElement,\n ScopedProps<RadioGroupItemRadioProps>\n>(({ __scopeRadioGroup, ...props }, forwardedRef) => {\n const context = useRadioGroupContext('RadioGroupItemRadio', __scopeRadioGroup);\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n const { color, className } = extractProps(\n { ...props, ...context },\n radioGroupRootPropDefs,\n marginPropDefs\n );\n return (\n <RadioGroupPrimitive.Item\n {...radioGroupScope}\n data-accent-color={color}\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseRadioRoot', className)}\n />\n );\n});\nRadioGroupItemRadio.displayName = 'RadioGroup.ItemRadio';\n\nexport { RadioGroupRoot as Root, RadioGroupItem as Item };\nexport type { RadioGroupRootProps as RootProps, RadioGroupItemProps as ItemProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'solid', 'soft'] as const;\n\nconst radioGroupRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { radioGroupRootPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeEventHandlers } from 'radix-ui/internal';\n\nimport { radioPropDefs } from './radio.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { NotInputRadioAttributes } from '../helpers/input-attributes.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype RadioElement = React.ElementRef<'input'>;\ntype RadioOwnProps = GetPropDefTypes<typeof radioPropDefs> & {\n value: string;\n onValueChange?: (value: string) => void;\n};\ntype RadioInputProps = ComponentPropsWithout<\n 'input',\n NotInputRadioAttributes | 'color' | 'defaultValue' | 'value'\n>;\ninterface RadioProps extends RadioInputProps, MarginProps, RadioOwnProps {}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>((props, forwardedRef) => {\n const { className, color, material, onChange, onValueChange, ...radioProps } = extractProps(\n props,\n radioPropDefs,\n marginPropDefs,\n );\n return (\n <input\n type=\"radio\"\n data-accent-color={color}\n data-material={material}\n {...radioProps}\n onChange={composeEventHandlers(onChange, (event) =>\n onValueChange?.(event.currentTarget.value),\n )}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseRadioRoot', 'rt-RadioRoot', className)}\n />\n );\n});\nRadio.displayName = 'Radio';\n\nexport { Radio };\nexport type { RadioProps };\n", "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'solid', 'soft', 'outline', 'surface'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst baseRadioPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n material: { type: 'enum', values: materials, default: undefined },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n};\n\nexport { baseRadioPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ninterface ResetProps extends ComponentPropsWithout<typeof Slot.Root, RemovedProps> {}\nconst Reset = React.forwardRef<HTMLElement, ResetProps>(\n ({ className, children, ...props }, forwardedRef) => {\n return (\n <Slot.Root {...props} ref={forwardedRef} className={classNames('rt-reset', className)}>\n {requireReactElement(children)}\n </Slot.Root>\n );\n }\n);\nReset.displayName = 'Reset';\n\nexport { Reset };\nexport type { ResetProps };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui';\nimport { useControllableState } from 'radix-ui/internal';\n\nimport { segmentedControlRootPropDefs } from './segmented-control.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlRootPropDefs>;\n\ninterface SegmentedControlRootProps\n extends ComponentPropsWithout<'div', RemovedProps | 'dir'>,\n SegmentedControlRootOwnProps,\n MarginProps {\n value?: string;\n defaultValue?: string;\n onValueChange?(value: string): void;\n}\n\nconst SegmentedControlRoot = React.forwardRef<HTMLDivElement, SegmentedControlRootProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n radius,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange: onValueChangeProp,\n ...rootProps\n } = extractProps(props, segmentedControlRootPropDefs, marginPropDefs);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChangeProp,\n defaultProp: defaultValueProp ?? '',\n });\n\n return (\n <ToggleGroupPrimitive.Root\n data-disabled={props.disabled || undefined}\n data-radius={radius}\n ref={forwardedRef}\n className={classNames('rt-SegmentedControlRoot', className)}\n onValueChange={(value) => {\n if (value) {\n setValue(value);\n }\n }}\n {...rootProps}\n type=\"single\"\n value={value}\n asChild={false}\n disabled={!!props.disabled}\n >\n {children}\n <div className=\"rt-SegmentedControlIndicator\" />\n </ToggleGroupPrimitive.Root>\n );\n },\n);\n\nSegmentedControlRoot.displayName = 'SegmentedControl.Root';\n\ninterface SegmentedControlItemOwnProps {\n value: string;\n /** When true, applies fixed square width for icon-only segments */\n iconOnly?: boolean;\n}\n\ninterface SegmentedControlItemProps\n extends ComponentPropsWithout<\n typeof ToggleGroupPrimitive.Item,\n RemovedProps | 'disabled' | 'type' | 'value'\n >,\n SegmentedControlItemOwnProps {}\n\nconst SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedControlItemProps>(\n ({ children, className, iconOnly, ...props }, forwardedRef) => (\n <ToggleGroupPrimitive.Item\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-SegmentedControlItem', className)}\n data-icon-only={iconOnly || undefined}\n {...props}\n disabled={false}\n asChild={false}\n >\n <span className=\"rt-SegmentedControlItemSeparator\" />\n <span className=\"rt-SegmentedControlItemLabel\">\n <span className=\"rt-SegmentedControlItemLabelActive\">{children}</span>\n <span className=\"rt-SegmentedControlItemLabelInactive\" aria-hidden>\n {children}\n </span>\n </span>\n </ToggleGroupPrimitive.Item>\n ),\n);\n\nSegmentedControlItem.displayName = 'SegmentedControl.Item';\n\nexport { SegmentedControlRoot as Root, SegmentedControlItem as Item };\nexport type { SegmentedControlRootProps as RootProps, SegmentedControlItemProps as ItemProps };\n", "import { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['soft'] as const;\nconst orientations = ['horizontal', 'vertical'] as const;\n\nconst segmentedControlRootPropDefs = {\n disabled: { type: 'boolean', className: 'disabled', default: false },\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n orientation: {\n type: 'enum',\n className: 'rt-r-orientation',\n values: orientations,\n default: 'horizontal',\n responsive: true,\n },\n panelBackground: {\n type: 'enum',\n className: 'rt-panel-background',\n values: ['solid', 'translucent'],\n },\n ...radiusPropDef,\n} satisfies {\n disabled?: PropDef<boolean>;\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n orientation: PropDef<(typeof orientations)[number]>;\n panelBackground: PropDef<'solid' | 'translucent'>;\n};\n\nexport { segmentedControlRootPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { sectionPropDefs } from './section.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { SectionOwnProps } from './section.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SectionElement = React.ElementRef<'div'>;\ninterface SectionProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n LayoutProps,\n SectionOwnProps {}\nconst Section = React.forwardRef<SectionElement, SectionProps>((props, forwardedRef) => {\n const { asChild, className, ...sectionProps } = extractProps(\n props,\n sectionPropDefs,\n layoutPropDefs,\n marginPropDefs\n );\n const Comp = asChild ? Slot.Root : 'section';\n return (\n <Comp {...sectionProps} ref={forwardedRef} className={classNames('rt-Section', className)} />\n );\n});\nSection.displayName = 'Section';\n\nexport { Section };\nexport type { SectionProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst displayValues = ['none', 'initial'] as const;\n\nconst sectionPropDefs = {\n ...asChildPropDef,\n /**\n * Controls the vertical padding of the section.\n *\n * @values\n * | Size | Padding |\n * | :------- | ------: |\n * | size=\"1\" | 24px |\n * | size=\"2\" | 40px |\n * | size=\"3\" | 64px |\n * | size=\"4\" | 80px |\n *\n * @example\n * size=\"4\"\n * size={{ sm: '3', lg: '4' }}\n *\n * @link\n * https://github.com/radix-ui/themes/blob/main/packages/radix-ui-themes/src/components/section.css\n */\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n default: '3',\n responsive: true,\n },\n /**\n * Controls whether the section is visible or hidden.\n * Supports \"none\", \"initial\", and responsive object values.\n *\n * @example\n * display=\"none\"\n * display={{ sm: 'none', lg: 'initial' }}\n */\n display: {\n type: 'enum',\n className: 'rt-r-display',\n values: displayValues,\n parseValue: parseDisplayValue,\n responsive: true,\n },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n display: PropDef<(typeof displayValues)[number]>;\n};\n\nfunction parseDisplayValue(value: string) {\n return value === 'initial' ? 'block' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype SectionOwnProps = GetPropDefTypes<typeof sectionPropDefs & typeof asChildPropDef>;\n\nexport { sectionPropDefs };\nexport type { SectionOwnProps };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Select as SelectPrimitive, ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport {\n selectRootPropDefs,\n selectTriggerPropDefs,\n selectContentPropDefs,\n} from './select.props.js';\nimport { useThemeContext, Theme } from './theme.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SelectRootOwnProps = GetPropDefTypes<typeof selectRootPropDefs>;\n\ntype SelectContextValue = SelectRootOwnProps;\nconst SelectContext = React.createContext<SelectContextValue>({});\n\ninterface SelectRootProps extends SelectPrimitive.SelectProps, SelectContextValue {}\nconst SelectRoot: React.FC<SelectRootProps> = (props) => {\n const { children, size = selectRootPropDefs.size.default, ...rootProps } = props;\n return (\n <SelectPrimitive.Root {...rootProps}>\n <SelectContext.Provider value={React.useMemo(() => ({ size }), [size])}>\n {children}\n </SelectContext.Provider>\n </SelectPrimitive.Root>\n );\n};\nSelectRoot.displayName = 'Select.Root';\n\ntype SelectTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;\ntype SelectTriggerOwnProps = GetPropDefTypes<typeof selectTriggerPropDefs>;\ninterface SelectTriggerProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Trigger, RemovedProps>,\n MarginProps,\n SelectTriggerOwnProps {}\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const {\n children,\n className,\n color,\n radius,\n placeholder,\n error,\n loading,\n disabled,\n readOnly,\n ...triggerProps\n } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n { size: selectRootPropDefs.size },\n selectTriggerPropDefs,\n marginPropDefs,\n );\n\n // Extract panelBackground separately since it needs to be passed as data attribute\n const { panelBackground } = props;\n\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': error || undefined,\n 'aria-busy': loading || undefined,\n 'aria-disabled': disabled || undefined,\n 'aria-readonly': readOnly || undefined,\n }),\n [error, loading, disabled, readOnly],\n );\n\n return (\n <SelectPrimitive.Trigger asChild>\n <button\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={panelBackground}\n data-error={error}\n data-loading={loading}\n {...triggerProps}\n {...ariaProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-SelectTrigger', className)}\n >\n <span className=\"rt-SelectTriggerInner\">\n <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>\n </span>\n <SelectPrimitive.Icon asChild>\n {loading ? (\n <div className=\"rt-SelectIcon rt-SelectLoadingIcon\" aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"32\"\n strokeDashoffset=\"32\"\n className=\"rt-SelectLoadingIconCircle\"\n />\n </svg>\n </div>\n ) : (\n <ChevronDownIcon className=\"rt-SelectIcon\" />\n )}\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'Select.Trigger';\n\ntype SelectContentElement = React.ElementRef<typeof SelectPrimitive.Content>;\ntype SelectContentOwnProps = GetPropDefTypes<typeof selectContentPropDefs>;\ninterface SelectContentProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Content, RemovedProps>,\n SelectContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Portal>['container'];\n}\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const { className, children, color, container, ...contentProps } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n { size: selectRootPropDefs.size },\n selectContentPropDefs,\n );\n const themeContext = useThemeContext();\n const resolvedColor = color || themeContext.accentColor;\n return (\n <SelectPrimitive.Portal container={container}>\n <Theme asChild>\n <SelectPrimitive.Content\n data-accent-color={resolvedColor}\n sideOffset={4}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-SelectContent',\n className,\n )}\n >\n <ScrollAreaPrimitive.Root type=\"auto\" className=\"rt-ScrollAreaRoot\">\n <SelectPrimitive.Viewport\n asChild\n className={classNames('rt-BaseMenuViewport', 'rt-SelectViewport')}\n >\n <ScrollAreaPrimitive.Viewport\n className=\"rt-ScrollAreaViewport\"\n style={{ overflowY: undefined }}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n </SelectPrimitive.Viewport>\n <ScrollAreaPrimitive.Scrollbar\n className=\"rt-ScrollAreaScrollbar rt-r-size-1\"\n orientation=\"vertical\"\n >\n <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n </ScrollAreaPrimitive.Root>\n </SelectPrimitive.Content>\n </Theme>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'Select.Content';\n\ntype SelectItemElement = React.ElementRef<typeof SelectPrimitive.Item>;\ninterface SelectItemProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Item, RemovedProps> {}\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>((props, forwardedRef) => {\n const { className, children, ...itemProps } = props;\n\n // Detect if this is rich content (not just a string)\n const isRichContent = typeof children !== 'string';\n\n return (\n <SelectPrimitive.Item\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-SelectItem',\n { 'rt-SelectItemRich': isRichContent },\n className,\n )}\n >\n <SelectPrimitive.ItemIndicator className=\"rt-SelectItemIndicator\">\n <ThickCheckIcon className=\"rt-SelectItemIndicatorIcon\" />\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = 'Select.Item';\n\ntype SelectGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;\ninterface SelectGroupProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Group, RemovedProps> {}\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-SelectGroup', className)}\n />\n ),\n);\nSelectGroup.displayName = 'Select.Group';\n\ntype SelectLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;\ninterface SelectLabelProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Label, RemovedProps> {}\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-SelectLabel', className)}\n />\n ),\n);\nSelectLabel.displayName = 'Select.Label';\n\ntype SelectSeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;\ninterface SelectSeparatorProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Separator, RemovedProps> {}\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-SelectSeparator', className)}\n />\n ),\n);\nSelectSeparator.displayName = 'Select.Separator';\n\nexport {\n SelectRoot as Root,\n SelectTrigger as Trigger,\n SelectContent as Content,\n SelectItem as Item,\n SelectGroup as Group,\n SelectLabel as Label,\n SelectSeparator as Separator,\n};\n\nexport type {\n SelectRootProps as RootProps,\n SelectTriggerProps as TriggerProps,\n SelectContentProps as ContentProps,\n SelectItemProps as ItemProps,\n SelectGroupProps as GroupProps,\n SelectLabelProps as LabelProps,\n SelectSeparatorProps as SeparatorProps,\n};\n", "import type React from 'react';\n\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\n\nconst selectRootPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n};\n\nconst triggerVariants = ['classic', 'surface', 'soft', 'outline', 'ghost'] as const;\n\nconst selectTriggerPropDefs = {\n variant: { type: 'enum', className: 'rt-variant', values: triggerVariants, default: 'surface' },\n panelBackground: {\n type: 'enum',\n className: 'rt-panel-background',\n values: ['solid', 'translucent'],\n },\n error: { type: 'boolean' },\n loading: { type: 'boolean' },\n disabled: { type: 'boolean' },\n readOnly: { type: 'boolean' },\n ...colorPropDef,\n ...radiusPropDef,\n placeholder: { type: 'ReactNode' },\n} satisfies {\n variant: PropDef<(typeof triggerVariants)[number]>;\n panelBackground: PropDef<'solid' | 'translucent'>;\n error: PropDef<boolean>;\n loading: PropDef<boolean>;\n disabled: PropDef<boolean>;\n readOnly: PropDef<boolean>;\n placeholder: PropDef<React.ReactNode>;\n};\n\nconst contentVariants = ['solid', 'soft'] as const;\n\nconst selectContentPropDefs = {\n variant: { type: 'enum', className: 'rt-variant', values: contentVariants, default: 'solid' },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n variant: PropDef<(typeof contentVariants)[number]>;\n};\n\nexport { selectRootPropDefs, selectTriggerPropDefs, selectContentPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { separatorPropDefs } from './separator.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SeparatorElement = React.ElementRef<'span'>;\ntype SeparatorOwnProps = GetPropDefTypes<typeof separatorPropDefs>;\ninterface SeparatorProps extends ComponentPropsWithout<'span', RemovedProps>, MarginProps, SeparatorOwnProps {}\nconst Separator = React.forwardRef<SeparatorElement, SeparatorProps>((props, forwardedRef) => {\n const { className, color, decorative, ...separatorProps } = extractProps(props, separatorPropDefs, marginPropDefs);\n return <span data-accent-color={color} role={decorative ? undefined : 'separator'} {...separatorProps} ref={forwardedRef} className={classNames('rt-Separator', className)} />;\n});\nSeparator.displayName = 'Separator';\n\nexport { Separator };\nexport type { SeparatorProps };\n", "import { colorPropDef } from '../props/color.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst orientationValues = ['horizontal', 'vertical'] as const;\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst separatorPropDefs = {\n orientation: {\n type: 'enum',\n className: 'rt-r-orientation',\n values: orientationValues,\n default: 'horizontal',\n responsive: true,\n },\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n color: { ...colorPropDef.color, default: 'gray' },\n decorative: { type: 'boolean', default: true },\n light: { type: 'boolean', className: 'rt-light', default: false },\n} satisfies {\n orientation: PropDef<(typeof orientationValues)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n color: typeof colorPropDef.color;\n decorative: PropDef<boolean>;\n light: PropDef<boolean>;\n};\n\nexport { separatorPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slider as SliderPrimitive } from 'radix-ui';\n\nimport { sliderPropDefs } from './slider.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SliderElement = React.ElementRef<typeof SliderPrimitive.Root>;\ntype SliderOwnProps = GetPropDefTypes<typeof sliderPropDefs>;\ninterface SliderProps\n extends ComponentPropsWithout<\n typeof SliderPrimitive.Root,\n 'asChild' | 'color' | 'children' | 'defaultChecked'\n >,\n MarginProps,\n SliderOwnProps {\n ticks?: Array<{ value: number; label?: string }>;\n unit?: string;\n}\nconst Slider = React.forwardRef<SliderElement, SliderProps>((props, forwardedRef) => {\n const { className, color, radius, tabIndex, ...sliderProps } = extractProps(\n props,\n sliderPropDefs,\n marginPropDefs,\n );\n const { ticks, showTickLabels, snapToTicks, unit } = props;\n\n const min = sliderProps.min ?? 0;\n const max = sliderProps.max ?? 100;\n\n // Current value for accessibility\n const currentValue = sliderProps.value ?? sliderProps.defaultValue ?? [min];\n const isRange = Array.isArray(currentValue) && currentValue.length > 1;\n\n // For snapping to ticks, we need to handle this differently\n // Radix slider doesn't support arbitrary step values, so we'll handle snapping in the onValueChange\n const step = sliderProps.step;\n\n // Optimized snap-to-ticks with memoized sorted ticks\n const sortedTicks = React.useMemo(\n () => (ticks ? [...ticks].sort((a, b) => a.value - b.value) : []),\n [ticks],\n );\n\n // Function to snap value to nearest tick (optimized)\n const snapToNearestTick = React.useCallback(\n (value: number): number => {\n if (!snapToTicks || !sortedTicks.length) return value;\n\n // Binary search for closest tick\n let left = 0;\n let right = sortedTicks.length - 1;\n\n if (value <= sortedTicks[left].value) return sortedTicks[left].value;\n if (value >= sortedTicks[right].value) return sortedTicks[right].value;\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n if (sortedTicks[mid].value === value) return value;\n\n if (sortedTicks[mid].value < value) {\n left = mid + 1;\n } else {\n right = mid - 1;\n }\n }\n\n // Find closest between left and right\n const leftDistance = Math.abs(value - sortedTicks[right].value);\n const rightDistance = Math.abs(value - sortedTicks[left].value);\n\n return leftDistance <= rightDistance ? sortedTicks[right].value : sortedTicks[left].value;\n },\n [snapToTicks, sortedTicks],\n );\n\n // Format value text for accessibility\n const formatValueText = React.useCallback(\n (values: number[]): string => {\n const formatValue = (val: number) => (unit ? `${val} ${unit}` : val.toString());\n\n if (values.length === 1) {\n return `${formatValue(values[0])} out of ${formatValue(max)}`;\n } else if (values.length === 2) {\n return `${formatValue(values[0])} to ${formatValue(values[1])} out of ${formatValue(max)}`;\n } else {\n return `${values.map(formatValue).join(', ')} out of ${formatValue(max)}`;\n }\n },\n [unit, max],\n );\n\n // Memoize tick elements for performance\n const tickElements = React.useMemo(() => {\n if (!ticks) return null;\n\n return ticks.map((tick, index) => ({\n ...tick,\n percentage: ((tick.value - min) / (max - min)) * 100,\n index,\n }));\n }, [ticks, min, max]);\n\n // Live region ref for accessibility announcements (no state = no re-renders)\n const announceRef = React.useRef<HTMLDivElement>(null);\n const announceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { onValueChange } = sliderProps;\n // Handle value changes with snapping\n const handleValueChange = React.useCallback(\n (newValue: number[]) => {\n const finalValue =\n snapToTicks && ticks ? newValue.map((v) => snapToNearestTick(v)) : newValue;\n\n // Update live region for screen readers (direct DOM update, no React state)\n if (announceRef.current) {\n const valueText = formatValueText(finalValue);\n announceRef.current.textContent = valueText;\n\n // Clear after delay to prevent spam\n if (announceTimeoutRef.current) {\n clearTimeout(announceTimeoutRef.current);\n }\n announceTimeoutRef.current = setTimeout(() => {\n if (announceRef.current) {\n announceRef.current.textContent = '';\n }\n }, 1000);\n }\n\n onValueChange?.(finalValue);\n },\n [snapToTicks, ticks, snapToNearestTick, formatValueText, onValueChange],\n );\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (announceTimeoutRef.current) {\n clearTimeout(announceTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div className=\"rt-SliderContainer\">\n {/* Live region for screen reader announcements */}\n <div\n ref={announceRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n style={{\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n }}\n />\n\n <SliderPrimitive.Root\n data-accent-color={color}\n data-radius={radius}\n ref={forwardedRef}\n {...sliderProps}\n step={step}\n onValueChange={handleValueChange}\n asChild={false}\n className={classNames('rt-SliderRoot', className)}\n // Essential ARIA attributes for WCAG 2.2 AA compliance\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={Array.isArray(currentValue) ? currentValue[0] : (currentValue as number)}\n aria-valuetext={formatValueText(currentValue as number[])}\n aria-label={props['aria-label'] || `${isRange ? 'Range' : 'Value'} slider`}\n >\n <SliderPrimitive.Track className=\"rt-SliderTrack\">\n <SliderPrimitive.Range\n className={classNames('rt-SliderRange', { 'rt-high-contrast': props.highContrast })}\n data-inverted={sliderProps.inverted ? '' : undefined}\n />\n </SliderPrimitive.Track>\n {(sliderProps.value ?? sliderProps.defaultValue ?? []).map((value, index) => (\n <SliderPrimitive.Thumb\n key={index}\n className=\"rt-SliderThumb\"\n {...(tabIndex !== undefined ? { tabIndex } : undefined)}\n aria-label={\n isRange\n ? `${index === 0 ? 'Minimum' : index === 1 ? 'Maximum' : `Thumb ${index + 1}`} value: ${unit ? `${value} ${unit}` : value}`\n : `Slider value: ${unit ? `${value} ${unit}` : value}`\n }\n aria-valuetext={unit ? `${value} ${unit}` : value.toString()}\n />\n ))}\n </SliderPrimitive.Root>\n {tickElements && (\n <div className=\"rt-SliderTicks\" role=\"group\" aria-label=\"Slider tick marks\">\n {tickElements.map((tick) => {\n return (\n <button\n key={tick.index}\n className=\"rt-SliderTick\"\n style={{\n left: `${tick.percentage}%`,\n transform: 'translateX(-50%)',\n }}\n onClick={() => {\n const currentValues = sliderProps.value ?? sliderProps.defaultValue ?? [min];\n const newValue = Array.isArray(currentValues)\n ? currentValues.map(() => tick.value)\n : [tick.value];\n\n handleValueChange(newValue);\n }}\n aria-label={`Set to ${tick.label || (unit ? `${tick.value} ${unit}` : tick.value)}`}\n aria-describedby={tick.label ? undefined : `tick-${tick.index}-value`}\n type=\"button\"\n >\n <div className=\"rt-SliderTickMark\" />\n {tick.label && showTickLabels !== false && (\n <div className=\"rt-SliderTickLabel\">{tick.label}</div>\n )}\n {!tick.label && (\n <span id={`tick-${tick.index}-value`} className=\"sr-only\">\n {unit ? `${tick.value} ${unit}` : tick.value}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n});\nSlider.displayName = 'Slider';\n\nexport { Slider };\nexport type { SliderProps };\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['surface', 'soft', 'outline'] as const;\n\nconst sliderPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n showTickLabels: { type: 'boolean', className: 'rt-show-tick-labels' },\n snapToTicks: { type: 'boolean', className: 'rt-snap-to-ticks' },\n ...colorPropDef,\n ...highContrastPropDef,\n ...radiusPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n showTickLabels: PropDef<boolean>;\n snapToTicks: PropDef<boolean>;\n};\n\nexport { sliderPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { strongPropDefs } from './strong.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype StrongElement = React.ElementRef<'strong'>;\ntype StrongOwnProps = GetPropDefTypes<typeof strongPropDefs>;\ninterface StrongProps extends ComponentPropsWithout<'strong', RemovedProps>, StrongOwnProps {}\nconst Strong = React.forwardRef<StrongElement, StrongProps>((props, forwardedRef) => {\n const { asChild, className, ...strongProps } = extractProps(props, strongPropDefs);\n const Comp = asChild ? Slot.Root : 'strong';\n return (\n <Comp {...strongProps} ref={forwardedRef} className={classNames('rt-Strong', className)} />\n );\n});\nStrong.displayName = 'Strong';\n\nexport { Strong };\nexport type { StrongProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst strongPropDefs = {\n ...asChildPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n};\n\nexport { strongPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { switchPropDefs } from './switch.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\n\ntype SwitchElement = React.ElementRef<typeof SwitchPrimitive.Root>;\ntype SwitchOwnProps = GetPropDefTypes<typeof switchPropDefs>;\ninterface SwitchProps\n extends ComponentPropsWithout<\n typeof SwitchPrimitive.Root,\n 'asChild' | 'color' | 'defaultValue' | 'children'\n >,\n MarginProps,\n SwitchOwnProps {}\nconst Switch = React.forwardRef<SwitchElement, SwitchProps>((props, forwardedRef) => {\n const { className, color, panelBackground, material, ...switchProps } = extractProps(\n props,\n switchPropDefs,\n marginPropDefs,\n );\n const effectiveMaterial = material || panelBackground;\n return (\n <SwitchPrimitive.Root\n data-accent-color={color}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n {...switchProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-SwitchRoot', className)}\n >\n <SwitchPrimitive.Thumb\n className={classNames('rt-SwitchThumb', { 'rt-high-contrast': props.highContrast })}\n />\n </SwitchPrimitive.Root>\n );\n});\nSwitch.displayName = 'Switch';\n\nexport { Switch };\nexport type { SwitchProps };\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['surface', 'soft', 'outline'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\nconst switchPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n ...colorPropDef,\n ...highContrastPropDef,\n /**\n * Material type for visual rendering and depth effects\n * Controls how the switch renders its visual elements\n */\n material: { type: 'enum', values: materials, default: undefined },\n /**\n * Panel background type (deprecated)\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n material: PropDef<(typeof materials)[number] | undefined>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\nexport { switchPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { NavigationMenu } from 'radix-ui';\n\nimport { tabNavRootPropDefs } from './tab-nav.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { tabNavLinkPropDefs } from './tab-nav.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TabNavRootElement = React.ElementRef<typeof NavigationMenu.Root>;\ntype TabNavRootElementProps = ComponentPropsWithout<'nav', RemovedProps>;\ntype TabNavOwnProps = GetPropDefTypes<typeof tabNavRootPropDefs>;\ninterface TabNavRootProps\n extends Omit<TabNavRootElementProps, 'defaultValue' | 'dir' | 'color'>,\n MarginProps,\n TabNavOwnProps {}\nconst TabNavRoot = React.forwardRef<TabNavRootElement, TabNavRootProps>((props, forwardedRef) => {\n const { children, className, color, panelBackground, ...rootProps } = extractProps(\n props,\n tabNavRootPropDefs,\n marginPropDefs,\n );\n return (\n <NavigationMenu.Root\n className=\"rt-TabNavRoot\"\n data-accent-color={color}\n {...rootProps}\n asChild={false}\n ref={forwardedRef}\n >\n <NavigationMenu.List\n className={classNames('rt-reset', 'rt-BaseTabList', 'rt-TabNavList', className)}\n data-panel-background={panelBackground}\n >\n {children}\n </NavigationMenu.List>\n </NavigationMenu.Root>\n );\n});\nTabNavRoot.displayName = 'TabNav.Root';\n\ntype TabNavLinkElement = React.ElementRef<typeof NavigationMenu.Link>;\ntype TabNavLinkOwnProps = GetPropDefTypes<typeof tabNavLinkPropDefs>;\ninterface TabNavLinkProps\n extends ComponentPropsWithout<typeof NavigationMenu.Link, RemovedProps | 'onSelect'>,\n TabNavLinkOwnProps {}\nconst TabNavLink = React.forwardRef<TabNavLinkElement, TabNavLinkProps>((props, forwardedRef) => {\n const { asChild, children, className, active, ...linkProps } = props;\n\n return (\n <NavigationMenu.Item className=\"rt-TabNavItem\">\n <NavigationMenu.Link\n {...linkProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseTabListTrigger', 'rt-TabNavLink', className)}\n onSelect={undefined}\n asChild={asChild}\n aria-current={active ? 'page' : undefined}\n data-active={active || undefined}\n >\n {getSubtree({ asChild, children }, (children) => (\n <>\n <span className=\"rt-BaseTabListTriggerInner rt-TabNavLinkInner\">{children}</span>\n <span className=\"rt-BaseTabListTriggerInnerHidden rt-TabNavLinkInnerHidden\">\n {children}\n </span>\n </>\n ))}\n </NavigationMenu.Link>\n </NavigationMenu.Item>\n );\n});\nTabNavLink.displayName = 'TabNav.Link';\n\nexport { TabNavRoot as Root, TabNavLink as Link };\nexport type { TabNavRootProps as RootProps, TabNavLinkProps as LinkProps };\n", "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2'] as const;\nconst wrapValues = ['nowrap', 'wrap', 'wrap-reverse'] as const;\nconst justifyValues = ['start', 'center', 'end'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst baseTabListPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n wrap: {\n type: 'enum',\n className: 'rt-r-fw',\n values: wrapValues,\n responsive: true,\n },\n justify: {\n type: 'enum',\n className: 'rt-r-jc',\n values: justifyValues,\n responsive: true,\n },\n ...colorPropDef,\n ...highContrastPropDef,\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n wrap: PropDef<(typeof wrapValues)[number]>;\n justify: PropDef<(typeof justifyValues)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n};\n\nexport { baseTabListPropDefs };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst tabNavLinkPropDefs = {\n ...asChildPropDef,\n active: { type: 'boolean', default: false },\n} satisfies {\n active: PropDef<boolean>;\n};\n\nexport { baseTabListPropDefs as tabNavRootPropDefs } from './_internal/base-tab-list.props.js';\nexport { tabNavLinkPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { tableRootPropDefs, tableRowPropDefs, tableCellPropDefs } from './table.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getResponsiveClassNames } from '../helpers/get-responsive-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { ScrollArea } from './scroll-area.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TableRootElement = React.ElementRef<'div'>;\ntype TableRootOwnProps = GetPropDefTypes<typeof tableRootPropDefs>;\ninterface TableRootProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n TableRootOwnProps {}\nconst TableRoot = React.forwardRef<TableRootElement, TableRootProps>((props, forwardedRef) => {\n const { layout: layoutPropDef, ...rootPropDefs } = tableRootPropDefs;\n const { className, children, layout, ...rootProps } = extractProps(\n props,\n rootPropDefs,\n marginPropDefs\n );\n const tableLayoutClassNames = getResponsiveClassNames({\n value: layout,\n className: tableRootPropDefs.layout.className,\n propValues: tableRootPropDefs.layout.values,\n });\n return (\n <div ref={forwardedRef} className={classNames('rt-TableRoot', className)} {...rootProps}>\n <ScrollArea>\n <table className={classNames('rt-TableRootTable', tableLayoutClassNames)}>{children}</table>\n </ScrollArea>\n </div>\n );\n});\nTableRoot.displayName = 'Table.Root';\n\ntype TableHeaderElement = React.ElementRef<'thead'>;\ninterface TableHeaderProps extends ComponentPropsWithout<'thead', RemovedProps> {}\nconst TableHeader = React.forwardRef<TableHeaderElement, TableHeaderProps>(\n ({ className, ...props }, forwardedRef) => (\n <thead {...props} ref={forwardedRef} className={classNames('rt-TableHeader', className)} />\n )\n);\nTableHeader.displayName = 'Table.Header';\n\ntype TableBodyElement = React.ElementRef<'tbody'>;\ninterface TableBodyProps extends ComponentPropsWithout<'tbody', RemovedProps> {}\nconst TableBody = React.forwardRef<TableBodyElement, TableBodyProps>(\n ({ className, ...props }, forwardedRef) => (\n <tbody {...props} ref={forwardedRef} className={classNames('rt-TableBody', className)} />\n )\n);\nTableBody.displayName = 'Table.Body';\n\ntype TableRowElement = React.ElementRef<'tr'>;\ntype TableRowOwnProps = GetPropDefTypes<typeof tableRowPropDefs>;\ninterface TableRowProps extends ComponentPropsWithout<'tr', RemovedProps>, TableRowOwnProps {}\nconst TableRow = React.forwardRef<TableRowElement, TableRowProps>((props, forwardedRef) => {\n const { className, ...rowProps } = extractProps(props, tableRowPropDefs);\n return <tr {...rowProps} ref={forwardedRef} className={classNames('rt-TableRow', className)} />;\n});\nTableRow.displayName = 'Table.Row';\n\ntype TableCellElement = React.ElementRef<'td'>;\ntype TableCellOwnProps = GetPropDefTypes<typeof tableCellPropDefs>;\ninterface TableCellProps\n extends ComponentPropsWithout<'td', RemovedProps | 'width'>,\n TableCellOwnProps {}\nconst TableCell = React.forwardRef<TableCellElement, TableCellProps>((props, forwardedRef) => {\n const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n return <td className={classNames('rt-TableCell', className)} ref={forwardedRef} {...cellProps} />;\n});\nTableCell.displayName = 'Table.Cell';\n\ntype TableColumnHeaderCellElement = React.ElementRef<'th'>;\ninterface TableColumnHeaderCellProps\n extends ComponentPropsWithout<'th', RemovedProps>,\n TableCellOwnProps {}\nconst TableColumnHeaderCell = React.forwardRef<\n TableColumnHeaderCellElement,\n TableColumnHeaderCellProps\n>((props, forwardedRef) => {\n const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n return (\n <th\n className={classNames('rt-TableCell', 'rt-TableColumnHeaderCell', className)}\n scope=\"col\"\n ref={forwardedRef}\n {...cellProps}\n />\n );\n});\nTableColumnHeaderCell.displayName = 'Table.ColumnHeaderCell';\n\ntype TableRowHeaderCellElement = React.ElementRef<'th'>;\ninterface TableRowHeaderCellProps\n extends ComponentPropsWithout<'th', RemovedProps>,\n TableCellOwnProps {}\nconst TableRowHeaderCell = React.forwardRef<TableRowHeaderCellElement, TableRowHeaderCellProps>(\n (props, forwardedRef) => {\n const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n return (\n <th\n className={classNames('rt-TableCell', 'rt-TableRowHeaderCell', className)}\n scope=\"row\"\n ref={forwardedRef}\n {...cellProps}\n />\n );\n }\n);\nTableRowHeaderCell.displayName = 'Table.RowHeaderCell';\n\nexport {\n TableRoot as Root,\n TableHeader as Header,\n TableBody as Body,\n TableRow as Row,\n TableCell as Cell,\n TableColumnHeaderCell as ColumnHeaderCell,\n TableRowHeaderCell as RowHeaderCell,\n};\n\nexport type {\n TableRootProps as RootProps,\n TableHeaderProps as HeaderProps,\n TableBodyProps as BodyProps,\n TableRowProps as RowProps,\n TableCellProps as CellProps,\n TableColumnHeaderCellProps as ColumnHeaderCellProps,\n TableRowHeaderCellProps as RowHeaderCellProps,\n};\n", "import { paddingPropDefs } from '../props/padding.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['surface', 'ghost'] as const;\nconst layoutValues = ['auto', 'fixed'] as const;\n\nconst tableRootPropDefs = {\n size: {\n type: 'enum',\n className: 'rt-r-size',\n values: sizes,\n default: '2',\n responsive: true,\n },\n variant: {\n type: 'enum',\n className: 'rt-variant',\n values: variants,\n default: 'ghost',\n },\n layout: {\n type: 'enum',\n className: 'rt-r-tl',\n values: layoutValues,\n responsive: true,\n },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n layout: PropDef<(typeof layoutValues)[number]>;\n};\n\nconst rowAlign = ['start', 'center', 'end', 'baseline'] as const;\n\nconst tableRowPropDefs = {\n align: {\n type: 'enum',\n className: 'rt-r-va',\n values: rowAlign,\n parseValue: parseAlignValue,\n responsive: true,\n },\n} satisfies {\n align: PropDef<(typeof rowAlign)[number]>;\n};\n\nfunction parseAlignValue(value: string) {\n return {\n baseline: 'baseline',\n start: 'top',\n center: 'middle',\n end: 'bottom',\n }[value];\n}\n\nconst justifyValues = ['start', 'center', 'end'] as const;\n\nconst tableCellPropDefs = {\n justify: {\n type: 'enum',\n className: 'rt-r-ta',\n values: justifyValues,\n parseValue: parseJustifyValue,\n responsive: true,\n },\n ...widthPropDefs,\n ...paddingPropDefs,\n} satisfies {\n justify: PropDef<(typeof justifyValues)[number]>;\n};\n\nfunction parseJustifyValue(value: string) {\n return {\n start: 'left',\n center: 'center',\n end: 'right',\n }[value];\n}\n\nexport { tableRootPropDefs, tableRowPropDefs, tableCellPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { tabsListPropDefs } from './tabs.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { tabsContentPropDefs, tabsRootPropDefs } from './tabs.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TabsRootElement = React.ElementRef<typeof TabsPrimitive.Root>;\ntype TabsRootOwnProps = GetPropDefTypes<typeof tabsRootPropDefs>;\ninterface TabsRootProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Root, 'asChild' | 'color' | 'defaultChecked'>,\n MarginProps,\n TabsRootOwnProps {}\nconst TabsRoot = React.forwardRef<TabsRootElement, TabsRootProps>((props, forwardedRef) => {\n const { className, ...rootProps } = extractProps(props, marginPropDefs);\n return (\n <TabsPrimitive.Root\n {...rootProps}\n ref={forwardedRef}\n className={classNames('rt-TabsRoot', className)}\n />\n );\n});\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsListElement = React.ElementRef<typeof TabsPrimitive.List>;\ntype TabsListOwnProps = GetPropDefTypes<typeof tabsListPropDefs>;\ninterface TabsListProps\n extends ComponentPropsWithout<typeof TabsPrimitive.List, RemovedProps>,\n MarginProps,\n TabsListOwnProps {}\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>((props, forwardedRef) => {\n const { className, color, panelBackground, ...listProps } = extractProps(\n props,\n tabsListPropDefs,\n marginPropDefs,\n );\n return (\n <TabsPrimitive.List\n data-accent-color={color}\n data-panel-background={panelBackground}\n {...listProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseTabList', 'rt-TabsList', className)}\n />\n );\n});\nTabsList.displayName = 'Tabs.List';\n\ntype TabsTriggerElement = React.ElementRef<typeof TabsPrimitive.Trigger>;\ninterface TabsTriggerProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Trigger, RemovedProps> {}\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props, forwardedRef) => {\n const { className, children, ...triggerProps } = props;\n return (\n <TabsPrimitive.Trigger\n {...triggerProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseTabListTrigger', 'rt-TabsTrigger', className)}\n >\n <span className=\"rt-BaseTabListTriggerInner rt-TabsTriggerInner\">{children}</span>\n <span className=\"rt-BaseTabListTriggerInnerHidden rt-TabsTriggerInnerHidden\">\n {children}\n </span>\n </TabsPrimitive.Trigger>\n );\n },\n);\nTabsTrigger.displayName = 'Tabs.Trigger';\n\ntype TabsContentElement = React.ElementRef<typeof TabsPrimitive.Content>;\ntype TabsContentOwnProps = GetPropDefTypes<typeof tabsContentPropDefs>;\ninterface TabsContentProps\n extends ComponentPropsWithout<typeof TabsPrimitive.Content, RemovedProps>,\n MarginProps,\n TabsContentOwnProps {}\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props, forwardedRef) => {\n const { className, ...contentProps } = extractProps(props, marginPropDefs);\n return (\n <TabsPrimitive.Content\n {...contentProps}\n ref={forwardedRef}\n className={classNames('rt-TabsContent', className)}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n />\n );\n },\n);\nTabsContent.displayName = 'Tabs.Content';\n\nexport { TabsRoot as Root, TabsList as List, TabsTrigger as Trigger, TabsContent as Content };\nexport type {\n TabsRootProps as RootProps,\n TabsListProps as ListProps,\n TabsTriggerProps as TriggerProps,\n TabsContentProps as ContentProps,\n};\n", "import { asChildPropDef } from '../props/as-child.prop.js';\n\nconst tabsRootPropDefs = {\n ...asChildPropDef,\n};\n\nconst tabsContentPropDefs = {\n ...asChildPropDef,\n};\n\nexport { baseTabListPropDefs as tabsListPropDefs } from './_internal/base-tab-list.props.js';\nexport { tabsRootPropDefs, tabsContentPropDefs };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { textAreaPropDefs } from './text-area.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextAreaElement = React.ElementRef<'textarea'>;\ntype TextAreaOwnProps = GetPropDefTypes<typeof textAreaPropDefs> & {\n defaultValue?: string;\n value?: string;\n};\ninterface TextAreaProps\n extends ComponentPropsWithout<'textarea', RemovedProps | 'size' | 'value'>,\n MarginProps,\n TextAreaOwnProps {}\n\nconst TextArea = React.forwardRef<TextAreaElement, TextAreaProps>((props, forwardedRef) => {\n const { className, color, radius, panelBackground, material, style, ...textAreaProps } =\n extractProps(props, textAreaPropDefs, marginPropDefs);\n const effectiveMaterial = material || panelBackground;\n\n // Generate unique IDs for accessibility\n const errorId = React.useId();\n\n const { 'aria-describedby': ariaDescribedby, 'aria-labelledby': ariaLabelledby } = textAreaProps;\n\n // Determine invalid state\n const isInvalid = textAreaProps.error || textAreaProps.isInvalid;\n\n // Build aria-describedby string\n const describedBy = React.useMemo(() => {\n const parts = [];\n if (textAreaProps.errorMessage) parts.push(errorId);\n if (ariaDescribedby) parts.push(ariaDescribedby);\n return parts.length > 0 ? parts.join(' ') : undefined;\n }, [textAreaProps.errorMessage, ariaDescribedby, errorId]);\n\n // Build aria attributes\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': isInvalid,\n 'aria-describedby': describedBy,\n 'aria-labelledby': ariaLabelledby,\n }),\n [isInvalid, describedBy, ariaLabelledby],\n );\n\n // Filter out our custom props to avoid DOM warnings\n const {\n error,\n errorMessage,\n isInvalid: _isInvalid,\n required,\n 'aria-describedby': _ariaDescribedby,\n 'aria-labelledby': _ariaLabelledby,\n ...nativeTextAreaProps\n } = textAreaProps;\n\n return (\n <div\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n className={classNames('rt-TextAreaRoot', className, {\n 'rt-error': isInvalid,\n })}\n style={style}\n >\n <textarea\n className=\"rt-reset rt-TextAreaInput\"\n ref={forwardedRef}\n {...nativeTextAreaProps}\n {...ariaProps}\n />\n {textAreaProps.errorMessage && (\n <div id={errorId} className=\"rt-TextAreaErrorMessage\" role=\"alert\" aria-live=\"polite\">\n {textAreaProps.errorMessage}\n </div>\n )}\n </div>\n );\n});\n\nTextArea.displayName = 'TextArea';\n\nexport { TextArea };\nexport type { TextAreaProps };\n", "import { colorPropDef } from '../props/color.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft', 'outline', 'ghost'] as const;\nconst resizeValues = ['none', 'vertical', 'horizontal', 'both'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\n\n// prettier-ignore\nconst textAreaPropDefs = {\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n resize: { type: 'enum', className: 'rt-r-resize', values: resizeValues, responsive: true },\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n material: { type: 'enum', values: materials, default: undefined },\n // Error and validation props\n error: { type: 'boolean', default: false },\n errorMessage: { type: 'string', default: undefined },\n isInvalid: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n // Accessibility props\n 'aria-describedby': { type: 'string', default: undefined },\n 'aria-labelledby': { type: 'string', default: undefined },\n ...colorPropDef,\n ...radiusPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n resize: PropDef<(typeof resizeValues)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n material: PropDef<(typeof materials)[number] | undefined>;\n error: PropDef<boolean>;\n errorMessage: PropDef<string | undefined>;\n isInvalid: PropDef<boolean>;\n required: PropDef<boolean>;\n 'aria-describedby': PropDef<string | undefined>;\n 'aria-labelledby': PropDef<string | undefined>;\n};\n\nexport { textAreaPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { composeRefs } from 'radix-ui/internal';\n\nimport { textFieldRootPropDefs, textFieldSlotPropDefs, type TextFieldSlotScrubProps } from './text-field.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { NotInputTextualAttributes } from '../helpers/input-attributes.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextFieldRootElement = React.ElementRef<'input'>;\ntype TextFieldRootOwnProps = GetPropDefTypes<typeof textFieldRootPropDefs> & {\n defaultValue?: string | number;\n value?: string | number;\n type?: 'date' | 'datetime-local' | 'email' | 'hidden' | 'month' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url' | 'week';\n};\ntype TextFieldInputProps = ComponentPropsWithout<'input', NotInputTextualAttributes | 'color' | 'defaultValue' | 'size' | 'type' | 'value'>;\ninterface TextFieldRootProps extends TextFieldInputProps, MarginProps, TextFieldRootOwnProps {}\nconst TextFieldRoot = React.forwardRef<TextFieldRootElement, TextFieldRootProps>((props, forwardedRef) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { children, className, color, radius, panelBackground, material, style, ...inputProps } = extractProps(props, textFieldRootPropDefs, marginPropDefs);\n const effectiveMaterial = material || panelBackground;\n\n // Generate unique IDs for accessibility\n const errorId = React.useId();\n\n // Determine invalid state\n const isInvalid = inputProps.error || inputProps.isInvalid;\n\n const { 'aria-describedby': ariaDescribedby, 'aria-labelledby': ariaLabelledby } = inputProps;\n\n // Build aria-describedby string\n const describedBy = React.useMemo(() => {\n const parts = [];\n if (inputProps.errorMessage) parts.push(errorId);\n if (ariaDescribedby) parts.push(ariaDescribedby);\n return parts.length > 0 ? parts.join(' ') : undefined;\n }, [inputProps.errorMessage, ariaDescribedby, errorId]);\n\n // Build aria attributes\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': isInvalid,\n 'aria-describedby': describedBy,\n 'aria-labelledby': ariaLabelledby,\n }),\n [isInvalid, describedBy, ariaLabelledby],\n );\n\n // Filter out our custom props to avoid DOM warnings\n const { error, errorMessage, isInvalid: _isInvalid, required, 'aria-describedby': _ariaDescribedby, 'aria-labelledby': _ariaLabelledby, ...nativeInputProps } = inputProps;\n\n // Memoized pointer event handler\n const handlePointerDown = React.useCallback((event: React.PointerEvent) => {\n const target = event.target as HTMLElement;\n if (target.closest('input, button, a')) return;\n\n const input = inputRef.current;\n if (!input) return;\n\n // Same selector as in the CSS to find the right slot\n const isRightSlot = target.closest(`\n .rt-TextFieldSlot[data-side='right'],\n .rt-TextFieldSlot:not([data-side='right']) ~ .rt-TextFieldSlot:not([data-side='left'])\n `);\n\n const cursorPosition = isRightSlot ? input.value.length : 0;\n\n requestAnimationFrame(() => {\n // Only some input types support this, browsers will throw an error if not supported\n // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange#:~:text=Note%20that%20according,not%20support%20selection%22.\n try {\n input.setSelectionRange(cursorPosition, cursorPosition);\n } catch {}\n input.focus();\n });\n }, []);\n\n return (\n <div\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n style={style}\n className={classNames('rt-TextFieldRoot', className, {\n 'rt-error': isInvalid,\n })}\n onPointerDown={handlePointerDown}\n >\n <input spellCheck=\"false\" {...nativeInputProps} {...ariaProps} ref={composeRefs(inputRef, forwardedRef)} className=\"rt-reset rt-TextFieldInput\" />\n {children}\n {inputProps.errorMessage && (\n <div id={errorId} className=\"rt-TextFieldErrorMessage\" role=\"alert\" aria-live=\"polite\">\n {inputProps.errorMessage}\n </div>\n )}\n </div>\n );\n});\nTextFieldRoot.displayName = 'TextField.Root';\n\ntype TextFieldSlotElement = React.ElementRef<'div'>;\ntype TextFieldSlotOwnProps = GetPropDefTypes<typeof textFieldSlotPropDefs> & TextFieldSlotScrubProps;\ninterface TextFieldSlotProps extends ComponentPropsWithout<'div', RemovedProps>, TextFieldSlotOwnProps {}\n\n// Detect if we should use pointer capture instead of pointer lock\n// Safari and Firefox show intrusive browser warnings with pointer lock\nconst usePointerCapture = (() => {\n if (typeof navigator === 'undefined') return false;\n const ua = navigator.userAgent;\n const isSafari = /^((?!chrome|android).)*safari/i.test(ua);\n const isFirefox = /firefox/i.test(ua);\n return isSafari || isFirefox;\n})();\n\nconst TextFieldSlot = React.forwardRef<TextFieldSlotElement, TextFieldSlotProps>((props, forwardedRef) => {\n // Extract scrub props first (not part of PropDef system)\n const { scrub, scrubValue, scrubStep = 1, scrubSensitivity = 1, scrubMin, scrubMax, scrubShiftMultiplier = 10, scrubAltMultiplier = 0.1, onScrub, ...restProps } = props;\n\n // Then extract styling props\n const { className, color, side, ...slotProps } = extractProps(restProps, textFieldSlotPropDefs);\n\n const slotRef = React.useRef<HTMLDivElement>(null);\n const [isScrubbing, setIsScrubbing] = React.useState(false);\n // Virtual cursor position - X wraps around viewport, Y follows mouse\n const [cursorPosition, setCursorPosition] = React.useState({ x: 0, y: 0 });\n\n // Track accumulated sub-step movement for precision\n const accumulatedMovement = React.useRef(0);\n // Track current value for clamping (initialized to scrubValue when scrubbing starts)\n const currentValue = React.useRef(0);\n // Track virtual X position for wrap-around (separate from rendered position)\n const virtualX = React.useRef(0);\n // Track pointer ID for capture mode\n const pointerIdRef = React.useRef<number | null>(null);\n // Track last X position for capture mode (movementX calculation)\n const lastXRef = React.useRef(0);\n\n // Store scrub config in refs so document handlers can access latest values\n const scrubConfigRef = React.useRef({\n scrubValue,\n scrubStep,\n scrubSensitivity,\n scrubMin,\n scrubMax,\n scrubShiftMultiplier,\n scrubAltMultiplier,\n onScrub,\n });\n scrubConfigRef.current = {\n scrubValue,\n scrubStep,\n scrubSensitivity,\n scrubMin,\n scrubMax,\n scrubShiftMultiplier,\n scrubAltMultiplier,\n onScrub,\n };\n\n const handlePointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (!scrub) return;\n\n // Don't start scrubbing if clicking on interactive elements\n const target = event.target as HTMLElement;\n if (target.closest('input, button, a')) return;\n\n event.preventDefault();\n accumulatedMovement.current = 0;\n // Initialize to current value so min/max clamping works correctly\n currentValue.current = scrubValue ?? 0;\n\n // Initialize virtual cursor at actual mouse position\n virtualX.current = event.clientX;\n setCursorPosition({ x: event.clientX, y: event.clientY });\n\n const slot = slotRef.current;\n if (!slot) return;\n\n if (usePointerCapture) {\n // Safari/Firefox: Use pointer capture (no browser warning)\n pointerIdRef.current = event.pointerId;\n lastXRef.current = event.clientX;\n slot.setPointerCapture(event.pointerId);\n setIsScrubbing(true);\n } else {\n // Chrome: Use pointer lock for infinite movement\n slot.requestPointerLock();\n }\n },\n [scrub, scrubValue],\n );\n\n // Handle pointer lock state changes (Chrome only)\n React.useEffect(() => {\n if (usePointerCapture) return;\n\n const handlePointerLockChange = () => {\n const isLocked = document.pointerLockElement === slotRef.current;\n setIsScrubbing(isLocked);\n if (!isLocked) {\n // Fire callback with isChanging = false when scrubbing ends\n scrubConfigRef.current.onScrub?.(0, false);\n accumulatedMovement.current = 0;\n currentValue.current = 0;\n }\n };\n\n document.addEventListener('pointerlockchange', handlePointerLockChange);\n return () => {\n document.removeEventListener('pointerlockchange', handlePointerLockChange);\n };\n }, []);\n\n // Shared scrub calculation logic\n const processScrubMovement = React.useCallback((movementX: number, movementY: number, shiftKey: boolean, altKey: boolean) => {\n const config = scrubConfigRef.current;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Update virtual position with wrap-around at viewport edges\n virtualX.current += movementX;\n if (virtualX.current > viewportWidth) {\n virtualX.current = virtualX.current % viewportWidth;\n } else if (virtualX.current < 0) {\n virtualX.current = viewportWidth + (virtualX.current % viewportWidth);\n }\n\n // Also track Y with wrap-around\n setCursorPosition((prev) => {\n let newY = prev.y + movementY;\n if (newY > viewportHeight) {\n newY = newY % viewportHeight;\n } else if (newY < 0) {\n newY = viewportHeight + (newY % viewportHeight);\n }\n return { x: virtualX.current, y: newY };\n });\n\n // Accumulate movement for sensitivity calculation\n accumulatedMovement.current += movementX;\n\n // Calculate how many steps we've moved\n const stepsFromMovement = accumulatedMovement.current / config.scrubSensitivity;\n\n if (Math.abs(stepsFromMovement) >= 1) {\n // Determine modifier multiplier\n let multiplier = 1;\n if (shiftKey) {\n multiplier = config.scrubShiftMultiplier;\n } else if (altKey) {\n multiplier = config.scrubAltMultiplier;\n }\n\n // Calculate delta\n const wholeSteps = Math.trunc(stepsFromMovement);\n const delta = wholeSteps * config.scrubStep * multiplier;\n\n // Apply min/max clamping if bounds are set\n let clampedDelta = delta;\n if (config.scrubMin !== undefined || config.scrubMax !== undefined) {\n const newValue = currentValue.current + delta;\n const clampedValue = Math.max(config.scrubMin ?? -Infinity, Math.min(config.scrubMax ?? Infinity, newValue));\n clampedDelta = clampedValue - currentValue.current;\n currentValue.current = clampedValue;\n } else {\n currentValue.current += delta;\n }\n\n // Fire callback with clamped delta (isChanging = true during drag)\n if (clampedDelta !== 0) {\n config.onScrub?.(clampedDelta, true);\n }\n\n // Keep the fractional remainder for smooth sub-pixel accumulation\n accumulatedMovement.current = (stepsFromMovement - wholeSteps) * config.scrubSensitivity;\n }\n }, []);\n\n // End scrubbing helper\n const endScrubbing = React.useCallback(() => {\n scrubConfigRef.current.onScrub?.(0, false);\n accumulatedMovement.current = 0;\n currentValue.current = 0;\n pointerIdRef.current = null;\n setIsScrubbing(false);\n }, []);\n\n // Handle pointer capture mode events (Safari/Firefox)\n const handlePointerMove = React.useCallback(\n (event: React.PointerEvent) => {\n if (!isScrubbing || !usePointerCapture) return;\n\n const movementX = event.clientX - lastXRef.current;\n lastXRef.current = event.clientX;\n\n processScrubMovement(movementX, event.movementY, event.shiftKey, event.altKey);\n },\n [isScrubbing, processScrubMovement],\n );\n\n const handlePointerUp = React.useCallback(\n (event: React.PointerEvent) => {\n if (!usePointerCapture || pointerIdRef.current !== event.pointerId) return;\n\n const slot = slotRef.current;\n if (slot && pointerIdRef.current !== null) {\n slot.releasePointerCapture(pointerIdRef.current);\n }\n endScrubbing();\n },\n [endScrubbing],\n );\n\n const handleLostPointerCapture = React.useCallback(() => {\n if (usePointerCapture && isScrubbing) {\n endScrubbing();\n }\n }, [isScrubbing, endScrubbing]);\n\n // Attach document-level listeners for pointer lock mode (Chrome)\n React.useEffect(() => {\n if (!isScrubbing || usePointerCapture) return;\n\n const handleMouseMove = (event: MouseEvent) => {\n processScrubMovement(event.movementX, event.movementY, event.shiftKey, event.altKey);\n };\n\n const handleMouseUp = () => {\n // Exit pointer lock to end scrubbing\n document.exitPointerLock();\n };\n\n // Use mousemove for pointer lock (pointermove doesn't work well with pointer lock)\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n // Disable text selection during scrubbing\n document.body.style.userSelect = 'none';\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.userSelect = '';\n };\n }, [isScrubbing, processScrubMovement]);\n\n // Hide native cursor and disable text selection during pointer capture scrubbing\n React.useEffect(() => {\n if (!isScrubbing || !usePointerCapture) return;\n\n // Create a style element to hide cursor globally during scrub\n const style = document.createElement('style');\n style.textContent = '* { cursor: none !important; user-select: none !important; }';\n document.head.appendChild(style);\n\n return () => {\n document.head.removeChild(style);\n };\n }, [isScrubbing]);\n\n // Render virtual cursor via portal to body so it's not clipped\n // Using a data URI of ew-resize cursor for a native look\n const virtualCursor = isScrubbing\n ? ReactDOM.createPortal(\n <img\n className=\"rt-TextFieldSlotScrubCursor\"\n src=\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='black' stroke='white' stroke-width='1' d='M0 12 L5 7 L5 10 L19 10 L19 7 L24 12 L19 17 L19 14 L5 14 L5 17 Z'/%3E%3C/svg%3E\"\n alt=\"\"\n style={{\n position: 'fixed',\n left: cursorPosition.x,\n top: cursorPosition.y,\n transform: 'translate(-50%, -50%)',\n pointerEvents: 'none',\n zIndex: 99999,\n width: 24,\n height: 24,\n }}\n aria-hidden=\"true\"\n />,\n document.body,\n )\n : null;\n\n return (\n <div\n data-accent-color={color}\n data-side={side}\n data-scrub={scrub || undefined}\n data-scrubbing={isScrubbing || undefined}\n {...slotProps}\n ref={composeRefs(slotRef, forwardedRef)}\n className={classNames('rt-TextFieldSlot', className)}\n onPointerDown={scrub ? handlePointerDown : undefined}\n onPointerMove={scrub ? handlePointerMove : undefined}\n onPointerUp={scrub ? handlePointerUp : undefined}\n onLostPointerCapture={scrub ? handleLostPointerCapture : undefined}\n >\n {slotProps.children}\n {virtualCursor}\n </div>\n );\n});\nTextFieldSlot.displayName = 'TextField.Slot';\n\nexport { TextFieldRoot as Root, TextFieldSlot as Slot };\nexport type { TextFieldRootProps as RootProps, TextFieldSlotProps as SlotProps };\n", "'use client';\n\nimport * as React from 'react';\nimport { useCallbackRef } from 'radix-ui/internal';\nimport { flushSync } from 'react-dom';\n\nimport { AccessibleIcon } from './accessible-icon.js';\nimport { Box } from './box.js';\nimport { Button } from './button.js';\nimport { Flex } from './flex.js';\nimport { Grid } from './grid.js';\nimport { Heading } from './heading.js';\nimport { IconButton } from './icon-button.js';\nimport { Kbd } from './kbd.js';\nimport * as Popover from './popover.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Text } from './text.js';\nimport { Tooltip } from './tooltip.js';\nimport { Theme, useThemeContext, type ThemeContextValue } from './theme.js';\nimport { inert } from '../helpers/inert.js';\nimport { getMatchingGrayColor } from '../helpers/get-matching-gray-color.js';\nimport { themePropDefs } from './theme.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface ThemePanelProps extends Omit<ThemePanelImplProps, keyof ThemePanelImplPrivateProps> {\n onAppearanceChange?: (value: 'light' | 'dark') => void;\n defaultOpen?: boolean;\n}\n\nconst keyboardInputElement = `\n [contenteditable],\n [role=\"combobox\"],\n [role=\"listbox\"],\n [role=\"menu\"],\n input:not([type=\"radio\"], [type=\"checkbox\"]),\n select,\n textarea\n `;\n\nconst ThemePanel = React.forwardRef<ThemePanelImplElement, ThemePanelProps>(\n ({ defaultOpen = true, ...props }, forwardedRef) => {\n const [open, setOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const previouslyFocusedElementRef = React.useRef<HTMLElement | null>(null);\n\n // quickly show/hide using \"T\" keypress\n React.useEffect(() => {\n function handleKeydown(event: KeyboardEvent) {\n const isModifierActive = event.altKey || event.ctrlKey || event.shiftKey || event.metaKey;\n const isKeyboardInputActive = document.activeElement?.closest(keyboardInputElement);\n const isKeyT = event.key?.toUpperCase() === 'T' && !isModifierActive;\n if (isKeyT && !isKeyboardInputActive) {\n let isOpen = false;\n flushSync(() => {\n setOpen((open) => {\n isOpen = !open;\n return isOpen;\n });\n });\n if (isOpen) {\n previouslyFocusedElementRef.current = document.activeElement as HTMLElement | null;\n triggerRef.current?.focus();\n } else {\n previouslyFocusedElementRef.current?.focus();\n }\n }\n }\n document.addEventListener('keydown', handleKeydown);\n return () => document.removeEventListener('keydown', handleKeydown);\n }, []);\n\n return (\n <ThemePanelImpl\n {...props}\n ref={forwardedRef}\n triggerRef={triggerRef}\n open={open}\n shortcut={\n <Tooltip content=\"Press T to show/hide the Theme Panel\" side=\"bottom\" sideOffset={6}>\n <Kbd asChild size=\"3\" tabIndex={0} className=\"rt-ThemePanelShortcut\">\n <button\n type=\"button\"\n onClick={() => setOpen((open) => !open)}\n ref={triggerRef}\n aria-label=\"Toggle the Theme Panel\"\n >\n T\n </button>\n </Kbd>\n </Tooltip>\n }\n />\n );\n },\n);\nThemePanel.displayName = 'ThemePanel';\n\ntype ThemePanelImplElement = React.ElementRef<'div'>;\ninterface ThemePanelImplPrivateProps {\n open: boolean;\n shortcut: React.ReactNode;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n}\ninterface ThemePanelImplProps\n extends ComponentPropsWithout<'div', RemovedProps>, ThemePanelImplPrivateProps {\n onAppearanceChange?: (value: 'light' | 'dark') => void;\n}\nconst ThemePanelImpl = React.forwardRef<ThemePanelImplElement, ThemePanelImplProps>(\n (props, forwardedRef) => {\n const { open, onAppearanceChange, shortcut, triggerRef, ...panelProps } = props;\n const themeContext = useThemeContext();\n return (\n <Theme asChild radius=\"medium\" scaling=\"100%\">\n <Flex\n direction=\"column\"\n position=\"fixed\"\n top=\"0\"\n right=\"0\"\n mr={{ initial: '2', sm: '4' }}\n mt={{ initial: '2', sm: '4' }}\n width={{ initial: '360px' }}\n maxHeight={{\n initial: 'calc(100svh - var(--space-2) - var(--space-2))',\n sm: 'calc(100svh - var(--space-4) - var(--space-4))',\n }}\n maxWidth={{\n initial: 'calc(100svw - var(--space-2) - var(--space-2))',\n sm: 'calc(100svw - var(--space-4) - var(--space-4))',\n }}\n inert={open ? undefined : inert}\n {...panelProps}\n ref={forwardedRef}\n style={{\n zIndex: 999999999,\n overflow: 'hidden',\n borderRadius: 'var(--radius-4)',\n backgroundColor: 'var(--color-panel-solid)',\n transformOrigin: 'top center',\n transitionProperty: 'transform, box-shadow',\n transitionDuration: '200ms',\n transitionTimingFunction: open ? 'ease-out' : 'ease-in',\n transform: open ? 'none' : 'translateX(105%)',\n boxShadow: open ? 'var(--shadow-5)' : 'var(--shadow-2)',\n ...props.style,\n }}\n >\n <ScrollArea>\n <Box flexGrow=\"1\" p={{ initial: '4', xs: '5' }} position=\"relative\">\n {!!shortcut && (\n <Box position=\"absolute\" top=\"0\" right=\"0\" m=\"2\">\n {shortcut}\n </Box>\n )}\n <ThemePanelContent onAppearanceChange={onAppearanceChange} context={themeContext} />\n </Box>\n </ScrollArea>\n </Flex>\n </Theme>\n );\n },\n);\nThemePanelImpl.displayName = 'ThemePanelImpl';\n\ntype ThemePanelContentElement = React.ElementRef<typeof Flex>;\ninterface ThemePanelContentProps extends ComponentPropsWithout<\n typeof Flex,\n RemovedProps | 'direction'\n> {\n onAppearanceChange?: (value: 'light' | 'dark') => void;\n context?: ThemeContextValue;\n}\nconst ThemePanelContent = React.forwardRef<ThemePanelContentElement, ThemePanelContentProps>(\n (props, forwardedRef) => {\n const {\n onAppearanceChange: onAppearanceChangeProp,\n context: contextProp,\n ...contentProps\n } = props;\n\n const themeContext = useThemeContext();\n\n const {\n appearance,\n onAppearanceChange,\n accentColor,\n onAccentColorChange,\n grayColor,\n onGrayColorChange,\n panelBackground,\n onPanelBackgroundChange,\n radius,\n onRadiusChange,\n scaling,\n onScalingChange,\n } = contextProp ?? themeContext;\n\n const [resolvedAppearance, setResolvedAppearance] = React.useState<'light' | 'dark' | null>(\n appearance === 'inherit' ? null : appearance,\n );\n const hasOnAppearanceChangeProp = onAppearanceChangeProp !== undefined;\n const handleAppearanceChangeProp = useCallbackRef(onAppearanceChangeProp);\n const handleAppearanceChange = React.useCallback(\n (value: 'light' | 'dark') => {\n const cleanup = disableAnimation();\n\n if (appearance !== 'inherit') {\n onAppearanceChange(value);\n return;\n }\n\n if (hasOnAppearanceChangeProp) {\n handleAppearanceChangeProp(value);\n } else {\n setResolvedAppearance(value);\n updateRootAppearanceClass(value);\n }\n\n cleanup();\n },\n [appearance, onAppearanceChange, hasOnAppearanceChangeProp, handleAppearanceChangeProp],\n );\n\n const autoMatchedGray = getMatchingGrayColor(accentColor);\n const resolvedGrayColor = grayColor === 'auto' ? autoMatchedGray : grayColor;\n\n const [copyState, setCopyState] = React.useState<'idle' | 'copying' | 'copied'>('idle');\n async function handleCopyThemeConfig() {\n const theme = {\n appearance: appearance === themePropDefs.appearance.default ? undefined : appearance,\n accentColor: accentColor === themePropDefs.accentColor.default ? undefined : accentColor,\n grayColor: grayColor === themePropDefs.grayColor.default ? undefined : grayColor,\n panelBackground:\n panelBackground === themePropDefs.panelBackground.default ? undefined : panelBackground,\n radius: radius === themePropDefs.radius.default ? undefined : radius,\n scaling: scaling === themePropDefs.scaling.default ? undefined : scaling,\n } satisfies GetPropDefTypes<typeof themePropDefs>;\n\n const props = Object.keys(theme)\n .filter((key) => theme[key as keyof typeof theme] !== undefined)\n .map((key) => `${key}=\"${theme[key as keyof typeof theme]}\"`)\n .join(' ');\n\n const textToCopy = props ? `<Theme ${props}>` : '<Theme>';\n\n setCopyState('copying');\n await navigator.clipboard.writeText(textToCopy);\n setCopyState('copied');\n setTimeout(() => setCopyState('idle'), 2000);\n }\n\n // quickly toggle appearance using \"D\" keypress\n React.useEffect(() => {\n function handleKeydown(event: KeyboardEvent) {\n const isModifierActive = event.altKey || event.ctrlKey || event.shiftKey || event.metaKey;\n const isKeyboardInputActive = document.activeElement?.closest(keyboardInputElement);\n const isKeyD = event.key?.toUpperCase() === 'D' && !isModifierActive;\n if (isKeyD && !isKeyboardInputActive) {\n handleAppearanceChange(resolvedAppearance === 'light' ? 'dark' : 'light');\n }\n }\n document.addEventListener('keydown', handleKeydown);\n return () => document.removeEventListener('keydown', handleKeydown);\n }, [handleAppearanceChange, resolvedAppearance]);\n\n React.useEffect(() => {\n const root = document.documentElement;\n const body = document.body;\n\n function update() {\n const hasDarkClass =\n root.classList.contains('dark') ||\n root.classList.contains('dark-theme') ||\n body.classList.contains('dark') ||\n body.classList.contains('dark-theme');\n\n if (appearance === 'inherit') {\n setResolvedAppearance(hasDarkClass ? 'dark' : 'light');\n } else {\n setResolvedAppearance(appearance);\n }\n }\n\n const classNameObserver = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.attributeName === 'class') {\n update();\n }\n });\n });\n\n update();\n\n // Observe <html> and <body> for `class` changes only when the appearance is inherited from them\n if (appearance === 'inherit') {\n classNameObserver.observe(root, { attributes: true });\n classNameObserver.observe(body, { attributes: true });\n }\n\n return () => classNameObserver.disconnect();\n }, [appearance]);\n\n return (\n <Flex direction=\"column\" gap=\"5\" {...contentProps} ref={forwardedRef}>\n <Heading size={{ initial: '3', sm: '5' }} trim=\"both\" as=\"h2\">\n Theme\n </Heading>\n <Flex direction=\"column\" gap=\"5\">\n {/* Accent color */}\n <ThemePanelSection>\n <ThemePanelHeading id=\"accent-color-title\">Accent color</ThemePanelHeading>\n <Flex wrap=\"wrap\" gap=\"2\" role=\"group\" aria-labelledby=\"accent-color-title\">\n {themePropDefs.accentColor.values.map((color) => (\n <Box asChild key={color}>\n <label\n className=\"rt-ThemePanelSwatch\"\n aria-label={upperFirst(color)}\n style={{ backgroundColor: `var(--${color}-9)` }}\n >\n <Tooltip\n content={`${upperFirst(color)}${\n accentColor === 'gray' && resolvedGrayColor !== 'gray'\n ? ` (${upperFirst(resolvedGrayColor)})`\n : ''\n }`}\n >\n <input\n className=\"rt-ThemePanelSwatchInput\"\n type=\"radio\"\n name=\"accentColor\"\n value={color}\n checked={accentColor === color}\n onChange={(event) =>\n onAccentColorChange(event.target.value as typeof accentColor)\n }\n />\n </Tooltip>\n </label>\n </Box>\n ))}\n </Flex>\n </ThemePanelSection>\n\n {/* Gray color */}\n <ThemePanelSection>\n <ThemePanelHeading id=\"gray-color-title\">Gray color</ThemePanelHeading>\n <Flex wrap=\"wrap\" gap=\"2\" role=\"group\" aria-labelledby=\"gray-color-title\">\n {themePropDefs.grayColor.values.map((gray) => (\n <Flex key={gray} asChild align=\"center\" justify=\"center\">\n <label\n className=\"rt-ThemePanelSwatch\"\n aria-label={upperFirst(gray)}\n style={{\n backgroundColor:\n gray === 'auto'\n ? `var(--${autoMatchedGray}-9)`\n : gray === 'gray'\n ? 'var(--gray-9)'\n : `var(--${gray}-9)`,\n // we override --gray so pure gray doesn't exist anymore\n // recover something as close as possible by desaturating\n filter: gray === 'gray' ? 'saturate(0)' : undefined,\n }}\n >\n <Tooltip\n content={`${upperFirst(gray)}${\n gray === 'auto' ? ` (${upperFirst(autoMatchedGray)})` : ''\n }`}\n >\n <input\n className=\"rt-ThemePanelSwatchInput\"\n type=\"radio\"\n name=\"grayColor\"\n value={gray}\n checked={grayColor === gray}\n onChange={(event) =>\n onGrayColorChange(event.target.value as typeof grayColor)\n }\n />\n </Tooltip>\n </label>\n </Flex>\n ))}\n </Flex>\n </ThemePanelSection>\n\n {/* Appearance */}\n <ThemePanelSection>\n <ThemePanelHeading id=\"appearance-title\">Appearance</ThemePanelHeading>\n <Grid columns=\"2\" gap=\"2\" role=\"group\" aria-labelledby=\"appearance-title\">\n {(['light', 'dark'] as const).map((value) => (\n <label key={value} className=\"rt-ThemePanelRadioCard\">\n <input\n className=\"rt-ThemePanelRadioCardInput\"\n type=\"radio\"\n name=\"appearance\"\n value={value}\n checked={resolvedAppearance === value}\n onChange={(event) =>\n handleAppearanceChange(event.target.value as 'light' | 'dark')\n }\n />\n <Flex align=\"center\" justify=\"center\" height=\"32px\" gap=\"2\">\n {value === 'light' ? (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ margin: '0 -1px' }}\n >\n <path\n d=\"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n ) : (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ margin: '0 -1px' }}\n >\n <path\n d=\"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n )}\n <Text size=\"1\" weight=\"medium\">\n {upperFirst(value)}\n </Text>\n </Flex>\n </label>\n ))}\n </Grid>\n </ThemePanelSection>\n\n {/* Radius */}\n <ThemePanelSection>\n <ThemePanelHeading id=\"radius-title\">Radius</ThemePanelHeading>\n <Flex gap=\"2\" role=\"group\" aria-labelledby=\"radius-title\" wrap=\"wrap\">\n {themePropDefs.radius.values.map((value) => (\n <Flex key={value} direction=\"column\" align=\"center\">\n <label className=\"rt-ThemePanelRadioCard\">\n <input\n className=\"rt-ThemePanelRadioCardInput\"\n type=\"radio\"\n name=\"radius\"\n id={`theme-panel-radius-${value}`}\n value={value}\n checked={radius === value}\n onChange={(event) => onRadiusChange(event.target.value as typeof radius)}\n />\n <Theme asChild radius={value}>\n <Box\n m=\"3\"\n width={{ initial: '24px', sm: '32px' }}\n height={{ initial: '24px', sm: '32px' }}\n style={{\n borderTopLeftRadius: value === 'full' ? '80%' : 'var(--radius-5)',\n backgroundImage:\n 'linear-gradient(to bottom right, var(--accent-3), var(--accent-4))',\n borderTop: '2px solid var(--accent-a8)',\n borderLeft: '2px solid var(--accent-a8)',\n }}\n />\n </Theme>\n </label>\n <Box asChild pt=\"2\">\n <Text asChild size=\"1\" color=\"gray\">\n <label htmlFor={`theme-panel-radius-${value}`}>{upperFirst(value)}</label>\n </Text>\n </Box>\n </Flex>\n ))}\n </Flex>\n </ThemePanelSection>\n\n {/* Scaling */}\n <ThemePanelSection>\n <ThemePanelHeading id=\"scaling-title\">Scaling</ThemePanelHeading>\n <Grid\n columns={{\n initial: 'repeat(3, 1fr)',\n sm: '5',\n }}\n gap=\"2\"\n role=\"group\"\n aria-labelledby=\"scaling-title\"\n >\n {themePropDefs.scaling.values.map((value) => (\n <label key={value} className=\"rt-ThemePanelRadioCard\" aria-label={`Scaling ${value}`}>\n <input\n className=\"rt-ThemePanelRadioCardInput\"\n type=\"radio\"\n name=\"scaling\"\n value={value}\n checked={scaling === value}\n onChange={(event) => onScalingChange(event.target.value as typeof scaling)}\n />\n\n <Flex align=\"center\" justify=\"center\" height=\"32px\">\n <Theme asChild scaling={value}>\n <Flex align=\"center\" justify=\"center\">\n <Text size=\"1\" weight=\"medium\">\n {upperFirst(value)}\n </Text>\n </Flex>\n </Theme>\n </Flex>\n </label>\n ))}\n </Grid>\n </ThemePanelSection>\n\n {/* Panel background */}\n <ThemePanelSection>\n <Flex align=\"center\" gap=\"2\">\n <ThemePanelHeading id=\"panel-background-title\">Panel background</ThemePanelHeading>\n <Popover.Root>\n <Popover.Trigger>\n <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n <AccessibleIcon label=\"Learn more about panel background options\">\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </AccessibleIcon>\n </IconButton>\n </Popover.Trigger>\n <Popover.Content\n size=\"1\"\n width=\"220px\"\n maxWidth=\"90svw\"\n minWidth=\"0\"\n side=\"top\"\n align=\"center\"\n >\n <Text as=\"p\" size=\"1\">\n Whether Card and Table panels are translucent, showing some of the background\n behind them.\n </Text>\n </Popover.Content>\n </Popover.Root>\n </Flex>\n <Grid\n columns={{ initial: '1', sm: '2' }}\n rows={{ initial: '2', sm: '1' }}\n gap=\"2\"\n role=\"group\"\n aria-labelledby=\"panel-background-title\"\n >\n {themePropDefs.panelBackground.values.map((value) => (\n <label key={value} className=\"rt-ThemePanelRadioCard\">\n <input\n className=\"rt-ThemePanelRadioCardInput\"\n type=\"radio\"\n name=\"panelBackground\"\n value={value}\n checked={panelBackground === value}\n onChange={(event) =>\n onPanelBackgroundChange(event.target.value as typeof panelBackground)\n }\n />\n <Flex align=\"center\" justify=\"center\" height=\"32px\" gap=\"2\">\n {value === 'solid' ? (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ margin: '0 -2px' }}\n >\n <path\n d=\"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n ) : (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ margin: '0 -2px' }}\n >\n <path\n opacity=\".05\"\n d=\"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".1\"\n d=\"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".15\"\n d=\"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".2\"\n d=\"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".25\"\n d=\"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".3\"\n d=\"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".35\"\n d=\"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".4\"\n d=\"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".45\"\n d=\"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n opacity=\".5\"\n d=\"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n <path\n d=\"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n )}\n <Text size=\"1\" weight=\"medium\">\n {upperFirst(value)}\n </Text>\n </Flex>\n </label>\n ))}\n </Grid>\n </ThemePanelSection>\n </Flex>\n <Button style={{ width: '100%' }} onClick={handleCopyThemeConfig}>\n {copyState === 'copied' ? 'Copied' : 'Copy Theme'}\n </Button>\n </Flex>\n );\n },\n);\nThemePanelContent.displayName = 'ThemePanelContent';\n\nfunction ThemePanelSection(\n props: Omit<React.ComponentPropsWithoutRef<typeof Flex>, 'asChild' | 'direction' | 'gap'>,\n) {\n return (\n <Flex direction=\"column\" gap=\"3\" asChild {...props}>\n <section>{props.children}</section>\n </Flex>\n );\n}\n\nfunction ThemePanelHeading(props: React.ComponentPropsWithoutRef<typeof Heading>) {\n return <Heading as=\"h3\" size={{ initial: '1', sm: '2' }} {...props} />;\n}\n\n// https://github.com/pacocoursey/next-themes/blob/main/packages/next-themes/src/index.tsx#L285\nfunction disableAnimation() {\n const css = document.createElement('style');\n css.appendChild(\n document.createTextNode(\n `*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n ),\n );\n document.head.appendChild(css);\n\n return () => {\n // Force restyle\n (() => window.getComputedStyle(document.body))();\n\n // Wait for next tick before removing\n setTimeout(() => {\n document.head.removeChild(css);\n }, 1);\n };\n}\n\nfunction upperFirst(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nfunction updateRootAppearanceClass(appearance: 'light' | 'dark') {\n const root = document.documentElement;\n const hasLightTheme = root.classList.contains('light-theme');\n const hasDarkTheme = root.classList.contains('dark-theme');\n const hasLight = root.classList.contains('light');\n const hasDark = root.classList.contains('dark');\n\n if (hasLightTheme || hasDarkTheme) {\n root.classList.remove('light-theme', 'dark-theme');\n root.style.colorScheme = appearance;\n root.classList.add(`${appearance}-theme`);\n }\n\n if (hasLight || hasDark) {\n root.classList.remove('light', 'dark');\n root.style.colorScheme = appearance;\n root.classList.add(appearance);\n }\n\n if (!hasLightTheme && !hasDarkTheme && !hasLight && !hasDark) {\n root.style.colorScheme = appearance;\n root.classList.add(appearance);\n }\n}\n\nexport { ThemePanel, ThemePanelContent };\nexport type { ThemePanelProps, ThemePanelContentProps };\n", "import * as React from 'react';\nimport { Toggle } from 'radix-ui';\nimport { Button } from './button.js';\nimport { useToggleState } from '../hooks/use-toggle-state.js';\n\n/**\n * ToggleButton props that extend Button with toggle-specific functionality\n *\n * The ToggleButton component provides a button that can be pressed/unpressed\n * with proper accessibility announcements and state management.\n */\ninterface ToggleButtonProps extends React.ComponentPropsWithoutRef<typeof Button> {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Callback when pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n /** Default pressed state for uncontrolled usage */\n defaultPressed?: boolean;\n}\n\ntype ToggleButtonElement = React.ElementRef<typeof Button>;\n\n/**\n * ToggleButton component for buttons that can be pressed/unpressed\n *\n * The ToggleButton component extends Button with toggle functionality using\n * Radix UI's Toggle primitive. It provides proper accessibility announcements,\n * controlled/uncontrolled state management, and seamless integration with\n * the existing Button component.\n *\n * Key features:\n * - Controlled and uncontrolled state management\n * - Live accessibility announcements for screen readers\n * - Automatic state validation and warnings\n * - Seamless integration with Button props and styling\n * - Proper ARIA attributes for toggle functionality\n *\n * @example\n * ```tsx\n * // Uncontrolled toggle button\n * <ToggleButton defaultPressed={false}>\n * Toggle Me\n * </ToggleButton>\n *\n * // Controlled toggle button\n * const [pressed, setPressed] = React.useState(false);\n * <ToggleButton\n * pressed={pressed}\n * onPressedChange={setPressed}\n * >\n * {pressed ? 'On' : 'Off'}\n * </ToggleButton>\n *\n * // Toggle button with all Button props\n * <ToggleButton\n * variant=\"solid\"\n * size=\"3\"\n * color=\"blue\"\n * pressed={isActive}\n * onPressedChange={setIsActive}\n * >\n * {isActive ? 'Active' : 'Inactive'}\n * </ToggleButton>\n * ```\n */\nconst ToggleButton = React.forwardRef<ToggleButtonElement, ToggleButtonProps>(({ pressed, onPressedChange, defaultPressed, children, ...buttonProps }, forwardedRef) => {\n /**\n * Extract accessible name from button content for announcements.\n * This ensures screen readers announce meaningful state changes.\n */\n const getAccessibleName = React.useCallback(() => {\n if (typeof children === 'string') return children;\n if (React.isValidElement(children) && typeof (children.props as any)?.children === 'string') {\n return (children.props as any).children;\n }\n return 'Toggle button';\n }, [children]);\n\n // Use shared toggle state hook for accessibility announcements and warnings\n const { handlePressedChange } = useToggleState({\n pressed,\n onPressedChange,\n getAccessibleName,\n componentName: 'ToggleButton',\n });\n\n // Render the toggle button using Radix UI's Toggle primitive\n // This provides proper ARIA attributes and keyboard navigation\n return (\n <Toggle.Root pressed={pressed} onPressedChange={handlePressedChange} defaultPressed={defaultPressed} asChild>\n <Button {...buttonProps} ref={forwardedRef}>\n {children}\n </Button>\n </Toggle.Root>\n );\n});\nToggleButton.displayName = 'ToggleButton';\n\nexport { ToggleButton };\nexport type { ToggleButtonProps };\n", "import * as React from 'react';\nimport { useLiveAnnouncer } from './use-live-announcer.js';\n\n/**\n * Options for the useToggleState hook\n */\ninterface UseToggleStateOptions {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Callback when pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n /** Function to get the accessible name for announcements */\n getAccessibleName: () => string;\n /** Component name for warning messages */\n componentName: string;\n}\n\n/**\n * Hook for shared toggle button state management.\n * Provides accessibility announcements and controlled/uncontrolled warnings.\n *\n * @param options - Configuration options for the toggle state\n * @returns Object containing the handlePressedChange callback\n *\n * @example\n * ```tsx\n * const getAccessibleName = React.useCallback(() => 'Toggle button', []);\n *\n * const { handlePressedChange } = useToggleState({\n * pressed,\n * onPressedChange,\n * getAccessibleName,\n * componentName: 'ToggleButton',\n * });\n * ```\n */\nexport function useToggleState({ pressed, onPressedChange, getAccessibleName, componentName }: UseToggleStateOptions) {\n const announce = useLiveAnnouncer();\n\n // Track if we've already warned about controlled without handler\n const warnedRef = React.useRef(false);\n\n /**\n * Memoized handler for state changes with accessibility announcements.\n * Announces the new state immediately for screen readers.\n */\n const handlePressedChange = React.useCallback(\n (newPressed: boolean) => {\n const accessibleName = getAccessibleName();\n // Announce the state change for screen readers\n announce(`${accessibleName} ${newPressed ? 'pressed' : 'unpressed'}`);\n // Call the user's change handler\n onPressedChange?.(newPressed);\n },\n [announce, onPressedChange, getAccessibleName],\n );\n\n // Development-only warning for controlled/uncontrolled pattern\n // Only warns once to avoid console spam\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'development' && pressed !== undefined && onPressedChange === undefined && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n `${componentName}: You provided a \\`pressed\\` prop without an \\`onPressedChange\\` handler. ` +\n 'This will result in a read-only toggle button. If you want the button to be interactive, ' +\n 'you should provide an `onPressedChange` handler.',\n );\n }\n }, [pressed, onPressedChange, componentName]);\n\n return { handlePressedChange };\n}\n", "import * as React from 'react';\n\n/**\n * Reference counter to track how many components are using the live region.\n * Only remove the live region when no components are using it.\n */\nlet liveRegionRefCount = 0;\n\n/**\n * Hook for making live announcements to screen readers\n * Creates a hidden aria-live region for announcing dynamic content changes\n */\nexport function useLiveAnnouncer() {\n // Track the timeout so we can clean it up on unmount\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Create aria-live region if it doesn't exist\n React.useEffect(() => {\n let liveRegion = document.getElementById('rt-live-announcer');\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = 'rt-live-announcer';\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.setAttribute('aria-atomic', 'true');\n liveRegion.style.cssText = `\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n `;\n document.body.appendChild(liveRegion);\n }\n\n // Increment ref count when component mounts\n liveRegionRefCount++;\n\n return () => {\n // Decrement ref count when component unmounts\n liveRegionRefCount--;\n\n // Clean up timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only remove the live region if no components are using it\n if (liveRegionRefCount === 0) {\n const region = document.getElementById('rt-live-announcer');\n if (region) {\n region.remove();\n }\n }\n };\n }, []);\n\n const announce = React.useCallback((message: string) => {\n const liveRegion = document.getElementById('rt-live-announcer');\n if (liveRegion) {\n // Clear any pending timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Clear previous announcements\n liveRegion.textContent = '';\n\n // Add new announcement with a small delay to ensure it's announced\n timeoutRef.current = setTimeout(() => {\n liveRegion.textContent = message;\n }, 100);\n }\n }, []);\n\n return announce;\n}\n", "import * as React from 'react';\nimport { Toggle } from 'radix-ui';\nimport { IconButton } from './icon-button.js';\nimport { BaseButton } from './_internal/base-button.js';\nimport { useToggleState } from '../hooks/use-toggle-state.js';\nimport type { IconButtonProps } from './icon-button.js';\n\ntype ToggleIconButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Extract toggle-specific props from Radix Toggle\n * These props control the toggle state and behavior\n */\ntype ToggleProps = React.ComponentPropsWithoutRef<typeof Toggle.Root>;\n\n/**\n * Required accessibility props for icon buttons (same as IconButton)\n * Icon buttons must have an accessible name to meet WCAG guidelines\n *\n * Three ways to provide accessibility:\n * 1. aria-label: Direct descriptive text\n * 2. aria-labelledby: Reference to a label element\n * 3. children: Visible text content (fallback)\n */\ntype AccessibilityProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string }\n | { 'aria-label'?: never; 'aria-labelledby'?: never; children: React.ReactNode };\n\n/**\n * Combine IconButton props with Toggle-specific props\n * Includes tooltip props from IconButton for comprehensive functionality\n */\ninterface ToggleIconButtonProps extends Omit<IconButtonProps, 'as'> {\n /** Controlled pressed state */\n pressed?: ToggleProps['pressed'];\n /** Callback when pressed state changes */\n onPressedChange?: ToggleProps['onPressedChange'];\n /** Default pressed state for uncontrolled usage */\n defaultPressed?: ToggleProps['defaultPressed'];\n}\n\n/**\n * Intersection with accessibility props to ensure compliance\n * This type ensures all ToggleIconButton instances have proper accessibility\n */\ntype ToggleIconButtonPropsWithAccessibility = ToggleIconButtonProps & AccessibilityProps;\n\n/**\n * ToggleIconButton component for icon buttons that can be pressed/unpressed\n *\n * The ToggleIconButton component extends IconButton with toggle functionality\n * using Radix UI's Toggle primitive. It provides proper accessibility announcements,\n * controlled/uncontrolled state management, and seamless integration with\n * the existing IconButton component.\n *\n * Key features:\n * - Controlled and uncontrolled state management\n * - Live accessibility announcements for screen readers\n * - Enforced accessibility requirements (aria-label, aria-labelledby, or children)\n * - Automatic state validation and warnings\n * - Seamless integration with IconButton props and styling\n * - Proper ARIA attributes for toggle functionality\n * - Built-in tooltip support from IconButton\n *\n * @example\n * ```tsx\n * // Uncontrolled toggle icon button\n * <ToggleIconButton defaultPressed={false} aria-label=\"Toggle notifications\">\n * <Bell />\n * </ToggleIconButton>\n *\n * // Controlled toggle icon button\n * const [pressed, setPressed] = React.useState(false);\n * <ToggleIconButton\n * pressed={pressed}\n * onPressedChange={setPressed}\n * aria-label=\"Toggle notifications\"\n * >\n * <Bell />\n * </ToggleIconButton>\n *\n * // Toggle icon button with tooltip\n * <ToggleIconButton\n * variant=\"solid\"\n * size=\"3\"\n * color=\"blue\"\n * pressed={isActive}\n * onPressedChange={setIsActive}\n * aria-label=\"Toggle feature\"\n * tooltip=\"Toggle this feature on/off\"\n * >\n * <Star />\n * </ToggleIconButton>\n *\n * // Toggle icon button with aria-labelledby\n * <ToggleIconButton\n * aria-labelledby=\"notifications-label\"\n * pressed={notificationsEnabled}\n * onPressedChange={setNotificationsEnabled}\n * >\n * <Bell />\n * </ToggleIconButton>\n * <span id=\"notifications-label\">Toggle notifications</span>\n * ```\n */\nconst ToggleIconButton = React.forwardRef<ToggleIconButtonElement, ToggleIconButtonPropsWithAccessibility>(({ pressed, onPressedChange, defaultPressed, ...iconButtonProps }, forwardedRef) => {\n // Extract specific props for stable dependency array\n const { 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, children } = iconButtonProps;\n\n // Cache the label lookup from aria-labelledby to avoid repeated DOM queries\n const cachedLabelRef = React.useRef<string | null>(null);\n\n // Clear cached label when ariaLabelledBy changes\n React.useEffect(() => {\n cachedLabelRef.current = null;\n }, [ariaLabelledBy]);\n\n /**\n * Extract accessible name from various sources for announcements.\n * This ensures screen readers announce meaningful state changes.\n * Priority: aria-label > aria-labelledby > children > fallback\n */\n const getAccessibleName = React.useCallback(() => {\n // First priority: direct aria-label\n if (ariaLabel) return ariaLabel;\n\n // Second priority: referenced label element (cached)\n if (ariaLabelledBy) {\n if (cachedLabelRef.current === null) {\n const labelElement = document.getElementById(ariaLabelledBy);\n cachedLabelRef.current = labelElement?.textContent || 'Toggle icon button';\n }\n return cachedLabelRef.current;\n }\n\n // Third priority: visible text children\n if (typeof children === 'string') return children;\n if (React.isValidElement(children) && typeof (children.props as any)?.children === 'string') {\n return (children.props as any).children;\n }\n\n // Fallback for edge cases\n return 'Toggle icon button';\n }, [ariaLabel, ariaLabelledBy, children]);\n\n // Use shared toggle state hook for accessibility announcements and warnings\n const { handlePressedChange } = useToggleState({\n pressed,\n onPressedChange,\n getAccessibleName,\n componentName: 'ToggleIconButton',\n });\n\n // Render the toggle icon button using Radix UI's Toggle primitive\n // This provides proper ARIA attributes and keyboard navigation\n // The IconButton component handles accessibility validation internally\n return (\n <Toggle.Root pressed={pressed} onPressedChange={handlePressedChange} defaultPressed={defaultPressed} asChild>\n <IconButton {...iconButtonProps} ref={forwardedRef} />\n </Toggle.Root>\n );\n});\nToggleIconButton.displayName = 'ToggleIconButton';\n\nexport { ToggleIconButton };\nexport type { ToggleIconButtonPropsWithAccessibility as ToggleIconButtonProps };\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Card } from './card.js';\nimport { Flex } from './flex.js';\nimport { Heading } from './heading.js';\n\nimport type { CardProps } from './card.js';\nimport type { FlexProps } from './flex.js';\n\n// ============================================================================\n// Toolbar Root\n// ============================================================================\n\ntype ToolbarRootElement = React.ElementRef<'div'>;\ntype Anchor = 'top' | 'bottom' | 'left' | 'right';\ntype SpaceScale = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\ninterface ToolbarRootProps extends Omit<CardProps, 'asChild'> {\n /**\n * Which edge to anchor to. Sets position: sticky and the appropriate edge.\n * @default \"top\"\n */\n anchor?: Anchor;\n /**\n * Floating mode adds margin from edges for a detached look with absolute positioning.\n * When false (default), uses inset mode with negative margins to go edge-to-edge inside Cards.\n * @default false\n */\n floating?: boolean;\n /**\n * Margin offset from edges when floating. Uses space scale values.\n * @default \"2\"\n */\n offset?: SpaceScale;\n}\n\nconst ToolbarRoot = React.forwardRef<ToolbarRootElement, ToolbarRootProps>(\n (props, forwardedRef) => {\n const {\n anchor = 'top',\n floating = false,\n offset = '2',\n size = '1',\n variant = 'ghost',\n material,\n className,\n style,\n children,\n ...restProps\n } = props;\n\n const isHorizontal = anchor === 'top' || anchor === 'bottom';\n const internalRef = React.useRef<HTMLDivElement>(null);\n\n // Merge refs\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n\n // Expose height/width as CSS variable on parent element\n React.useEffect(() => {\n const element = internalRef.current;\n if (!element) return;\n\n const parent = element.parentElement;\n if (!parent) return;\n\n const update = () => {\n let dimension = isHorizontal ? element.offsetHeight : element.offsetWidth;\n\n // For floating mode, include the margin in the total space\n if (floating) {\n const computedStyle = getComputedStyle(element);\n const margin = parseFloat(computedStyle.marginTop) || 0;\n dimension += margin * 2;\n }\n\n if (isHorizontal) {\n parent.style.setProperty('--rt-toolbar-height', `${dimension}px`);\n } else {\n parent.style.setProperty('--rt-toolbar-width', `${dimension}px`);\n }\n };\n\n update();\n\n const resizeObserver = new ResizeObserver(update);\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [isHorizontal, floating]);\n\n const computedStyle = floating\n ? { margin: `var(--space-${offset})`, ...style }\n : style;\n\n return (\n <Card\n ref={mergedRef}\n size={size}\n variant={variant}\n material={material}\n data-anchor={anchor}\n data-floating={floating || undefined}\n className={classNames('rt-Toolbar', className)}\n style={computedStyle}\n {...restProps}\n >\n <div className=\"rt-ToolbarInner\">\n {children}\n </div>\n </Card>\n );\n },\n);\nToolbarRoot.displayName = 'Toolbar.Root';\n\n// ============================================================================\n// Toolbar Left (for horizontal) / Start (alias)\n// ============================================================================\n\ntype ToolbarSectionElement = React.ElementRef<'div'>;\ntype ToolbarSectionProps = FlexProps;\n\nconst ToolbarLeft = React.forwardRef<ToolbarSectionElement, ToolbarSectionProps>(\n ({ gap = '2', align = 'center', className, children, ...props }, forwardedRef) => (\n <Flex\n ref={forwardedRef}\n align={align}\n gap={gap}\n className={classNames('rt-ToolbarSection', 'rt-ToolbarLeft', className)}\n {...props}\n >\n {children}\n </Flex>\n ),\n);\nToolbarLeft.displayName = 'Toolbar.Left';\n\n// ============================================================================\n// Toolbar Center\n// ============================================================================\n\nconst ToolbarCenter = React.forwardRef<ToolbarSectionElement, ToolbarSectionProps>(\n ({ gap = '2', align = 'center', justify = 'center', className, children, ...props }, forwardedRef) => (\n <Flex\n ref={forwardedRef}\n align={align}\n justify={justify}\n gap={gap}\n className={classNames('rt-ToolbarSection', 'rt-ToolbarCenter', className)}\n {...props}\n >\n {children}\n </Flex>\n ),\n);\nToolbarCenter.displayName = 'Toolbar.Center';\n\n// ============================================================================\n// Toolbar Right (for horizontal) / End (alias)\n// ============================================================================\n\nconst ToolbarRight = React.forwardRef<ToolbarSectionElement, ToolbarSectionProps>(\n ({ gap = '2', align = 'center', justify = 'end', className, children, ...props }, forwardedRef) => (\n <Flex\n ref={forwardedRef}\n align={align}\n justify={justify}\n gap={gap}\n className={classNames('rt-ToolbarSection', 'rt-ToolbarRight', className)}\n {...props}\n >\n {children}\n </Flex>\n ),\n);\nToolbarRight.displayName = 'Toolbar.Right';\n\n// ============================================================================\n// Toolbar Title\n// ============================================================================\n\ntype ToolbarTitleElement = React.ElementRef<typeof Heading>;\ntype ToolbarTitleProps = React.ComponentPropsWithoutRef<typeof Heading>;\n\nconst ToolbarTitle = React.forwardRef<ToolbarTitleElement, ToolbarTitleProps>(\n ({ className, size = '2', weight = 'medium', truncate = true, children, ...props }, forwardedRef) => (\n <Heading\n ref={forwardedRef}\n size={size}\n weight={weight}\n truncate={truncate}\n className={classNames('rt-ToolbarTitle', className)}\n {...props}\n >\n {children}\n </Heading>\n ),\n);\nToolbarTitle.displayName = 'Toolbar.Title';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nconst Toolbar = ToolbarRoot as typeof ToolbarRoot & {\n Left: typeof ToolbarLeft;\n Center: typeof ToolbarCenter;\n Right: typeof ToolbarRight;\n Title: typeof ToolbarTitle;\n};\n\nToolbar.Left = ToolbarLeft;\nToolbar.Center = ToolbarCenter;\nToolbar.Right = ToolbarRight;\nToolbar.Title = ToolbarTitle;\n\nexport {\n Toolbar,\n ToolbarRoot as Root,\n ToolbarLeft as Left,\n ToolbarCenter as Center,\n ToolbarRight as Right,\n ToolbarTitle as Title,\n};\nexport type {\n ToolbarRootProps as RootProps,\n ToolbarSectionProps as LeftProps,\n ToolbarSectionProps as CenterProps,\n ToolbarSectionProps as RightProps,\n ToolbarTitleProps as TitleProps,\n};\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nimport { userCardPropDefs } from './user-card.props.js';\nimport { Avatar } from './avatar.js';\nimport { Card } from './card.js';\nimport { Text } from './text.js';\nimport { Flex } from './flex.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { useThemeContext } from './theme.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype UserCardOwnProps = GetPropDefTypes<typeof userCardPropDefs>;\n\ntype UserCardElement = React.ElementRef<'div'>;\ninterface UserCardProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n UserCardOwnProps {}\n\nconst UserCard = React.forwardRef<UserCardElement, UserCardProps>((props, forwardedRef) => {\n const themeContext = useThemeContext();\n const resolvedPanelBackground = props.panelBackground ?? themeContext.panelBackground;\n\n const {\n asChild,\n children,\n className,\n src,\n fallback,\n name,\n description,\n avatarVariant,\n radius,\n color,\n panelBackground,\n flush,\n ...restProps\n } = extractProps(props, userCardPropDefs, marginPropDefs);\n\n // Size mappings for avatar and text\n const sizeMap = {\n '1': { avatar: '1', name: '1', description: '0' },\n '2': { avatar: '2', name: '2', description: '1' },\n '3': { avatar: '3', name: '3', description: '2' },\n '4': { avatar: '4', name: '4', description: '3' },\n } as const;\n\n const currentSize = props.size || '2';\n const sizes = sizeMap[currentSize as keyof typeof sizeMap];\n\n const content = (\n <Flex align=\"center\" gap=\"3\">\n <Avatar\n size={sizes.avatar as any}\n variant={avatarVariant}\n radius={radius}\n src={src}\n fallback={fallback!}\n color={color}\n highContrast={props.highContrast}\n />\n <Flex direction=\"column\" gap=\"0\" style={{ minWidth: 0 }}>\n <Text size={sizes.name as any} weight=\"medium\" truncate>\n {name}\n </Text>\n {description && (\n <Text size={sizes.description as any} color=\"gray\" truncate>\n {description}\n </Text>\n )}\n </Flex>\n </Flex>\n );\n\n return (\n <Card\n {...restProps}\n asChild={asChild}\n size={props.size}\n variant={props.variant}\n panelBackground={resolvedPanelBackground}\n flush={flush}\n ref={forwardedRef}\n className={classNames('rt-UserCard', className)}\n >\n {getSubtree({ asChild, children }, content)}\n </Card>\n );\n});\n\nUserCard.displayName = 'UserCard';\n\nexport { UserCard };\nexport type { UserCardProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = ['ghost', 'surface', 'classic'] as const;\nconst avatarVariants = ['solid', 'soft', 'surface', 'outline'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\n\nconst userCardPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n\n // Content props\n src: { type: 'string' },\n fallback: { type: 'ReactNode', required: true },\n name: { type: 'string', required: true },\n description: { type: 'string' },\n\n // Avatar styling\n avatarVariant: { type: 'enum', values: avatarVariants, default: 'soft' },\n ...radiusPropDef,\n\n // Card styling\n ...accentColorPropDef,\n ...highContrastPropDef,\n panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },\n flush: { type: 'boolean', default: false },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n src: PropDef<string>;\n fallback: PropDef<React.ReactNode>;\n name: PropDef<string>;\n description: PropDef<string>;\n avatarVariant: PropDef<(typeof avatarVariants)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;\n flush: PropDef<boolean>;\n};\n\nexport { userCardPropDefs };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { useMenuContext, menuSizeToItemHeight } from './_internal/menu-context.js';\n\n/**\n * VirtualMenu - A virtualized menu component for rendering large lists efficiently.\n *\n * Uses TanStack Virtual to render only visible items.\n * Works inside any container (DropdownMenu.Content, Popover.Content, etc.)\n *\n * @example\n * // Simple usage with itemLabel\n * <VirtualMenu\n * items={items}\n * itemLabel={(item) => item.name}\n * onSelect={handleSelect}\n * />\n *\n * @example\n * // Custom rendering with renderItem\n * const UserItem = React.memo(({ item, ...props }) => (\n * <VirtualMenu.Item {...props}>\n * <Avatar src={item.avatar} />\n * {item.name}\n * </VirtualMenu.Item>\n * ));\n *\n * <VirtualMenu items={users} renderItem={UserItem} onSelect={handleSelect} />\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Props passed to custom renderItem components */\ninterface VirtualMenuRenderItemProps<T> {\n /** The item data */\n item: T;\n /** Index in the items array */\n index: number;\n /** Whether this item is currently highlighted */\n isHighlighted: boolean;\n /** Unique ID for accessibility */\n id: string;\n /** Positioning styles - must be applied */\n style: React.CSSProperties;\n /** Tab index for focus management */\n tabIndex: number;\n /** Data attribute for CSS styling */\n 'data-highlighted': true | undefined;\n /** Data attribute for event delegation */\n 'data-index': number;\n /** Mouse enter handler */\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => void;\n /** Mouse leave handler */\n onMouseLeave: () => void;\n /** Click handler */\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\n /** Keyboard handler for Enter/Space activation */\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ninterface VirtualMenuProps<T> {\n /** Array of items to render */\n items: T[];\n /**\n * Simple label accessor for basic text items.\n * Can be a property key or a function.\n * @example\n * itemLabel=\"name\"\n * itemLabel={(item) => item.name}\n */\n itemLabel?: keyof T | ((item: T) => React.ReactNode);\n /**\n * Custom component for rendering items.\n * Must be memoized (React.memo) for optimal performance.\n * @example\n * const MyItem = React.memo(({ item, ...props }) => (\n * <VirtualMenu.Item {...props}>{item.name}</VirtualMenu.Item>\n * ));\n * <VirtualMenu items={items} renderItem={MyItem} />\n */\n renderItem?: React.ComponentType<VirtualMenuRenderItemProps<T>>;\n /**\n * Menu size - controls item height.\n * Automatically inherited from parent DropdownMenu.Content/ContextMenu.Content.\n * Only set manually when using VirtualMenu outside of a menu context.\n * @default '2' (or inherited from context)\n */\n size?: '1' | '2';\n /**\n * Estimated height of each item in pixels.\n * Can be a number (same for all) or a function (per-item).\n * Usually not needed - height is automatically derived from size prop/context.\n * Use this only for custom item heights (e.g., variable height items).\n */\n estimatedItemSize?: number | ((index: number) => number);\n /** Number of items to render outside visible area */\n overscan?: number;\n /** Callback when an item is selected */\n onSelect?: (item: T, index: number) => void;\n /** Additional class name */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n /** Accessible label for the menu */\n 'aria-label'?: string;\n}\n\n// ============================================================================\n// Internal Memoized Item Component\n// ============================================================================\n\ninterface SimpleItemProps {\n label: React.ReactNode;\n isHighlighted: boolean;\n id: string;\n style: React.CSSProperties;\n tabIndex: number;\n 'data-highlighted': true | undefined;\n 'data-index': number;\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave: () => void;\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void;\n}\n\nconst SimpleItem = React.memo(\n function SimpleItem({\n label,\n isHighlighted: _isHighlighted,\n id,\n style,\n tabIndex,\n 'data-highlighted': dataHighlighted,\n 'data-index': dataIndex,\n onMouseEnter,\n onMouseLeave,\n onClick,\n onKeyDown,\n }: SimpleItemProps) {\n return (\n <div\n id={id}\n role=\"menuitem\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-VirtualMenuItem')}\n style={style}\n tabIndex={tabIndex}\n data-highlighted={dataHighlighted}\n data-index={dataIndex}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n {label}\n </div>\n );\n },\n (prev, next) => {\n // Custom comparison - only re-render if these change\n if (prev.label !== next.label) return false;\n if (prev['data-highlighted'] !== next['data-highlighted']) return false;\n if (prev.style.height !== next.style.height) return false;\n if (prev.style.transform !== next.style.transform) return false;\n if (prev.tabIndex !== next.tabIndex) return false;\n if (prev.id !== next.id) return false;\n // Event handlers are stable, skip comparison\n return true;\n },\n);\n\n// ============================================================================\n// VirtualMenu Component\n// ============================================================================\n\nfunction VirtualMenuRoot<T>({\n items,\n itemLabel,\n renderItem: RenderItem,\n size: sizeProp,\n estimatedItemSize: estimatedItemSizeProp,\n overscan = 5,\n onSelect,\n className,\n style,\n 'aria-label': ariaLabel,\n}: VirtualMenuProps<T>) {\n const menuId = React.useId();\n const parentRef = React.useRef<HTMLDivElement>(null);\n const [highlightedIndex, setHighlightedIndex] = React.useState<number>(-1);\n const { isInsideMenu, size: contextSize } = useMenuContext();\n\n // Resolve size: prop > context > default '2'\n const resolvedSize = sizeProp ?? contextSize ?? '2';\n \n // Resolve item height: explicit prop > derived from size\n const estimatedItemSize = estimatedItemSizeProp ?? menuSizeToItemHeight[resolvedSize];\n\n // Validate props\n if (!itemLabel && !RenderItem) {\n throw new Error('VirtualMenu requires either itemLabel or renderItem prop');\n }\n\n // Normalize itemLabel to a function\n const getLabel = React.useMemo(() => {\n if (!itemLabel) return null;\n if (typeof itemLabel === 'function') return itemLabel;\n return (item: T) => item[itemLabel] as React.ReactNode;\n }, [itemLabel]);\n\n // Derive safe highlighted index\n const safeHighlightedIndex = React.useMemo(() => {\n if (items.length === 0) return -1;\n if (highlightedIndex < 0) return -1;\n return Math.min(highlightedIndex, items.length - 1);\n }, [highlightedIndex, items.length]);\n\n // Normalize estimatedItemSize to a function\n const getItemSize = React.useMemo(\n () =>\n typeof estimatedItemSize === 'function'\n ? estimatedItemSize\n : () => estimatedItemSize,\n [estimatedItemSize],\n );\n\n const virtualizer = useVirtualizer({\n count: items.length,\n getScrollElement: () => parentRef.current,\n estimateSize: getItemSize,\n overscan,\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n\n // Refs for stable handler references\n const itemsRef = React.useRef(items);\n const onSelectRef = React.useRef(onSelect);\n itemsRef.current = items;\n onSelectRef.current = onSelect;\n\n const scrollToIndexRef = React.useRef(virtualizer.scrollToIndex);\n scrollToIndexRef.current = virtualizer.scrollToIndex;\n\n const highlightedIndexRef = React.useRef(safeHighlightedIndex);\n highlightedIndexRef.current = safeHighlightedIndex;\n\n // Stable event handlers\n const handleItemMouseEnter = React.useCallback((e: React.MouseEvent<HTMLElement>) => {\n const index = e.currentTarget.dataset.index;\n if (index != null) {\n setHighlightedIndex(Number(index));\n }\n }, []);\n\n const handleItemClick = React.useCallback((e: React.MouseEvent<HTMLElement>) => {\n const index = e.currentTarget.dataset.index;\n if (index != null) {\n const idx = Number(index);\n const currentItems = itemsRef.current;\n if (idx >= 0 && idx < currentItems.length) {\n onSelectRef.current?.(currentItems[idx], idx);\n }\n }\n }, []);\n\n const noop = React.useCallback(() => {}, []);\n\n // Item-level keyboard handler for Enter/Space activation (satisfies a11y lint rule)\n const handleItemKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n const index = e.currentTarget.dataset.index;\n if (index != null) {\n const idx = Number(index);\n const currentItems = itemsRef.current;\n if (idx >= 0 && idx < currentItems.length) {\n onSelectRef.current?.(currentItems[idx], idx);\n }\n }\n }\n }, []);\n\n // Keyboard navigation\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n const currentItems = itemsRef.current;\n const currentHighlightedIndex = highlightedIndexRef.current;\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const nextIndex =\n currentHighlightedIndex < currentItems.length - 1 ? currentHighlightedIndex + 1 : 0;\n setHighlightedIndex(nextIndex);\n scrollToIndexRef.current(nextIndex, { align: 'auto' });\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prevIndex =\n currentHighlightedIndex > 0 ? currentHighlightedIndex - 1 : currentItems.length - 1;\n setHighlightedIndex(prevIndex);\n scrollToIndexRef.current(prevIndex, { align: 'auto' });\n break;\n }\n case 'Home': {\n e.preventDefault();\n setHighlightedIndex(0);\n scrollToIndexRef.current(0, { align: 'start' });\n break;\n }\n case 'End': {\n e.preventDefault();\n const lastIndex = currentItems.length - 1;\n setHighlightedIndex(lastIndex);\n scrollToIndexRef.current(lastIndex, { align: 'end' });\n break;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n if (currentHighlightedIndex >= 0 && currentHighlightedIndex < currentItems.length) {\n onSelectRef.current?.(currentItems[currentHighlightedIndex], currentHighlightedIndex);\n }\n break;\n }\n case 'Tab': {\n e.preventDefault();\n break;\n }\n case 'Escape': {\n (e.currentTarget as HTMLElement).blur();\n break;\n }\n }\n }, []);\n\n // Item ID generator\n const getItemId = React.useCallback(\n (index: number) => `${menuId}-item-${index}`,\n [menuId],\n );\n\n // Memoize styles\n const rootStyle = React.useMemo(\n () => ({\n overflow: 'auto' as const,\n position: 'relative' as const,\n ...style,\n }),\n [style],\n );\n\n const totalSize = virtualizer.getTotalSize();\n const viewportStyle = React.useMemo(\n () => ({\n height: `${totalSize}px`,\n width: '100%' as const,\n position: 'relative' as const,\n }),\n [totalSize],\n );\n\n return (\n <div\n ref={parentRef}\n role={isInsideMenu ? 'group' : 'menu'}\n aria-label={ariaLabel}\n aria-activedescendant={safeHighlightedIndex >= 0 ? getItemId(safeHighlightedIndex) : undefined}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={classNames('rt-VirtualMenuRoot', className)}\n style={rootStyle}\n >\n <div className=\"rt-VirtualMenuViewport\" style={viewportStyle}>\n {virtualItems.map((virtualRow) => {\n const item = items[virtualRow.index];\n const index = virtualRow.index;\n const isHighlighted = safeHighlightedIndex === index;\n\n const itemStyle: React.CSSProperties = {\n height: virtualRow.size,\n transform: `translateY(${virtualRow.start}px)`,\n };\n\n const commonProps = {\n id: getItemId(index),\n isHighlighted,\n style: itemStyle,\n tabIndex: isHighlighted ? 0 : -1,\n 'data-highlighted': isHighlighted ? true as const : undefined,\n 'data-index': index,\n onMouseEnter: handleItemMouseEnter,\n onMouseLeave: noop,\n onClick: handleItemClick,\n onKeyDown: handleItemKeyDown,\n };\n\n // Use renderItem if provided, otherwise use SimpleItem with itemLabel\n if (RenderItem) {\n return (\n <RenderItem\n key={virtualRow.key}\n item={item}\n index={index}\n {...commonProps}\n />\n );\n }\n\n return (\n <SimpleItem\n key={virtualRow.key}\n label={getLabel!(item)}\n {...commonProps}\n />\n );\n })}\n </div>\n </div>\n );\n}\n\nVirtualMenuRoot.displayName = 'VirtualMenu';\n\n// ============================================================================\n// VirtualMenu.Item Component (for custom renderItem usage)\n// ============================================================================\n\ninterface VirtualMenuItemProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n /** Data attribute for highlight styling */\n 'data-highlighted'?: true | undefined;\n /** Data attribute for event delegation */\n 'data-index'?: number;\n}\n\nconst VirtualMenuItemInner = React.forwardRef<HTMLDivElement, VirtualMenuItemProps>(\n ({ className, children, ...props }, forwardedRef) => {\n return (\n <div\n ref={forwardedRef}\n role=\"menuitem\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-VirtualMenuItem', className)}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nVirtualMenuItemInner.displayName = 'VirtualMenu.Item';\n\n// Memoized with custom comparison\nconst VirtualMenuItem = React.memo(VirtualMenuItemInner, (prevProps, nextProps) => {\n const prevStyle = prevProps.style as React.CSSProperties | undefined;\n const nextStyle = nextProps.style as React.CSSProperties | undefined;\n if (prevStyle?.height !== nextStyle?.height) return false;\n if (prevStyle?.transform !== nextStyle?.transform) return false;\n if (prevProps['data-highlighted'] !== nextProps['data-highlighted']) return false;\n if (prevProps.tabIndex !== nextProps.tabIndex) return false;\n if (prevProps.id !== nextProps.id) return false;\n if (prevProps.className !== nextProps.className) return false;\n if (prevProps.children !== nextProps.children) return false;\n return true;\n});\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nconst VirtualMenu = Object.assign(VirtualMenuRoot, {\n Item: VirtualMenuItem,\n});\n\nexport { VirtualMenu };\nexport type { VirtualMenuProps, VirtualMenuItemProps, VirtualMenuRenderItemProps };\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from './slot.js';\nimport * as Accordion from '@radix-ui/react-accordion';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport * as Popover from './popover.js';\n\nimport { sidebarPropDefs } from './sidebar.props.js';\nimport { useThemeContext } from './theme.js';\n// import { IconButton } from './icon-button.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Separator } from './separator.js';\nimport { ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { Kbd } from './kbd.js';\nimport { Badge } from './badge.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { BadgeProps } from './badge.js';\n\n// Badge configuration type for sidebar menu buttons\ntype BadgeConfig = {\n content: React.ReactNode;\n variant?: BadgeProps['variant'];\n size?: BadgeProps['size'];\n color?: BadgeProps['color'];\n highContrast?: BadgeProps['highContrast'];\n radius?: BadgeProps['radius'];\n};\n\n// Internal presentational context (not exported) for size/menu variant\ntype SidebarVisualContextValue = {\n size: '1' | '2' | '3';\n menuVariant: 'solid' | 'soft';\n presentation?: 'thin' | 'expanded';\n color?: string;\n};\nconst SidebarVisualContext = React.createContext<SidebarVisualContextValue | null>(null);\nfunction useSidebarVisual() {\n return React.useContext(SidebarVisualContext);\n}\n\n// Sidebar is now independent of Shell - no integration needed\n\n// Main Sidebar component\ntype SidebarOwnProps = GetPropDefTypes<typeof sidebarPropDefs>;\ninterface SidebarProps extends ComponentPropsWithout<'div', RemovedProps>, SidebarOwnProps {\n /**\n * Presentational mode independent of Shell.\n * 'thin' renders a rail-style sidebar, 'expanded' renders a panel-style sidebar.\n * If both `presentation` and `layout` are provided, `presentation` takes precedence.\n */\n presentation?: 'thin' | 'expanded';\n}\n\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>((props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n const {\n size = sidebarPropDefs.size.default,\n variant = sidebarPropDefs.variant.default,\n menuVariant = sidebarPropDefs.menuVariant.default,\n layout = sidebarPropDefs.layout.default,\n presentation,\n // type = sidebarPropDefs.type.default,\n // side = sidebarPropDefs.side.default,\n // collapsible = sidebarPropDefs.collapsible.default,\n panelBackground,\n color,\n highContrast = sidebarPropDefs.highContrast.default,\n } = props;\n\n const { className, children, ...rootProps } = extractProps(props, sidebarPropDefs);\n // Remove internal-only props from DOM\n const { asChild: _, panelBackground: __, presentation: ___, ...safeRootProps } = rootProps;\n const resolvedColor = color || themeContext.accentColor;\n\n // Resolve layout (default to 'panel'). `presentation` takes precedence over `layout`.\n const resolvedLayout = presentation === 'thin' ? 'rail' : presentation === 'expanded' ? 'panel' : layout || 'panel';\n\n // Update context with current props - we'll pass the resolved values\n const resolvedSize = typeof size === 'object' ? size.initial || '2' : size;\n const visualContextValue = React.useMemo(\n () => ({ size: resolvedSize, menuVariant, presentation, color: resolvedColor }),\n [resolvedSize, menuVariant, presentation, resolvedColor],\n );\n return (\n <div {...safeRootProps} ref={forwardedRef} data-accent-color={resolvedColor} className={classNames('rt-SidebarRoot', className)}>\n <SidebarVisualContext.Provider value={visualContextValue}>\n <div\n className={classNames('rt-SidebarContainer', `rt-variant-${variant}`, `rt-r-size-${resolvedSize}`, `rt-menu-variant-${menuVariant}`, resolvedLayout && `rt-layout-${resolvedLayout}`)}\n data-accent-color={resolvedColor}\n data-high-contrast={highContrast || undefined}\n data-panel-background={panelBackground}\n data-presentation={presentation}\n data-layout={resolvedLayout}\n >\n {children}\n </div>\n </SidebarVisualContext.Provider>\n </div>\n );\n});\nSidebar.displayName = 'Sidebar.Root';\n\n// Sidebar content area\ninterface SidebarContentProps extends React.ComponentPropsWithoutRef<'div'> {\n id?: string;\n role?: 'navigation' | 'none';\n 'aria-label'?: string;\n}\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, children, role = 'navigation', 'aria-label': ariaLabel = 'Main navigation', id, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <ScrollArea type=\"hover\">\n <div\n {...props}\n ref={forwardedRef}\n id={id}\n role={role}\n aria-label={ariaLabel}\n className={classNames('rt-BaseMenuContent', 'rt-SidebarContent', `rt-r-size-${size}`, `rt-menu-variant-${menuVariant}`, className)}\n >\n <div className=\"rt-BaseMenuViewport\">{children}</div>\n </div>\n </ScrollArea>\n );\n },\n);\nSidebarContent.displayName = 'Sidebar.Content';\n\n// Sidebar header\ninterface SidebarHeaderProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Whether to use the default flex container layout.\n * @default true\n */\n asContainer?: boolean;\n}\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(({ className, asContainer = true, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <div\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-SidebarHeader',\n `rt-r-size-${size}`,\n `rt-menu-variant-${menuVariant}`,\n {\n 'rt-SidebarHeader--container': asContainer,\n },\n className,\n )}\n />\n );\n});\nSidebarHeader.displayName = 'Sidebar.Header';\n\n// Sidebar footer\ninterface SidebarFooterProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Whether to use the default flex container layout.\n * @default true\n */\n asContainer?: boolean;\n}\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(({ className, asContainer = true, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const size = visual?.size ?? '2';\n const menuVariant = visual?.menuVariant ?? 'soft';\n\n return (\n <div\n {...props}\n ref={forwardedRef}\n className={classNames(\n 'rt-SidebarFooter',\n `rt-r-size-${size}`,\n `rt-menu-variant-${menuVariant}`,\n {\n 'rt-SidebarFooter--container': asContainer,\n },\n className,\n )}\n />\n );\n});\nSidebarFooter.displayName = 'Sidebar.Footer';\n\n// Sidebar trigger button\n// removed Trigger in presentational-only Sidebar\n\n// Removed SidebarInset - not needed\n\n// Sidebar separator\ninterface SidebarSeparatorProps extends ComponentPropsWithout<typeof Separator, RemovedProps> {}\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, SidebarSeparatorProps>(({ className, ...props }, forwardedRef) => (\n <Separator {...props} ref={forwardedRef} className={classNames('rt-SidebarSeparator', className)} />\n));\nSidebarSeparator.displayName = 'Sidebar.Separator';\n\n// Menu components - reusing dropdown menu structure\ninterface SidebarMenuProps extends React.ComponentPropsWithoutRef<'ul'> {}\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, SidebarMenuProps>(({ className, ...props }, forwardedRef) => (\n <ul {...props} ref={forwardedRef} role=\"menu\" className={classNames('rt-SidebarMenu', className)} />\n));\nSidebarMenu.displayName = 'Sidebar.Menu';\n\ninterface SidebarMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {}\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, SidebarMenuItemProps>(({ className, ...props }, forwardedRef) => (\n <li {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuItem', className)} />\n));\nSidebarMenuItem.displayName = 'Sidebar.MenuItem';\n\ninterface SidebarMenuButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n isActive?: boolean;\n shortcut?: React.ReactNode;\n badge?: string | BadgeConfig;\n}\n\n// Extracted to module scope to avoid re-creation on every render\nfunction separateIconsAndLabels(node: React.ReactNode): { icons: React.ReactNode[]; labels: React.ReactNode[] } {\n const icons: React.ReactNode[] = [];\n const labels: React.ReactNode[] = [];\n\n React.Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n labels.push(<span key={labels.length} className=\"rt-SidebarMenuLabel\">{child}</span>);\n } else if (React.isValidElement(child)) {\n const el = child as React.ReactElement<any>;\n if (el.type === 'svg' || (el.props && el.props.icon) || (typeof el.type === 'function' && ((el.type as any).displayName?.includes('Icon') || (el.type as any).name?.includes('Icon')))) {\n icons.push(child);\n } else {\n labels.push(child);\n }\n } else if (child) {\n labels.push(child);\n }\n });\n\n return { icons, labels };\n}\n\nfunction wrapTextNodes(node: React.ReactNode): React.ReactNode {\n if (typeof node === 'string' || typeof node === 'number') {\n return <span className=\"rt-SidebarMenuLabel\">{node}</span>;\n }\n if (Array.isArray(node)) {\n return node.map((child, index) => <React.Fragment key={index}>{wrapTextNodes(child)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const el = node as React.ReactElement<any>;\n const className: string = (el.props && (el.props as any).className) || '';\n const isAlreadyLabel = typeof el.type === 'string' && className.split(' ').includes('rt-SidebarMenuLabel');\n if (isAlreadyLabel) return el;\n const newChildren = wrapTextNodes((el.props as any)?.children);\n return React.cloneElement(el, { ...(el.props as any) }, newChildren);\n }\n return node;\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ asChild = false, isActive = false, shortcut, badge, className, children, onKeyDown, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const sidebarSize = visual?.size ?? '2';\n const isThinMode = visual?.presentation === 'thin';\n\n const Comp = asChild ? Slot : 'button';\n\n const { onClick } = props;\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (onClick) onClick(event as any);\n break;\n case 'ArrowDown': {\n event.preventDefault();\n // Focus next menu item\n const nextItem = (event.currentTarget as HTMLElement).nextElementSibling?.querySelector('[role=\"menuitem\"]') as HTMLElement;\n if (nextItem) nextItem.focus();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n // Focus previous menu item\n const prevItem = (event.currentTarget as HTMLElement).previousElementSibling?.querySelector('[role=\"menuitem\"]') as HTMLElement;\n if (prevItem) prevItem.focus();\n break;\n }\n }\n onKeyDown?.(event);\n },\n [onClick, onKeyDown],\n );\n\n // Memoize child processing to avoid re-traversal on every render\n const processedChildren = React.useMemo(() => wrapTextNodes(children), [children]);\n\n // For thin mode, separate icons into a wrapper for targeted background styling\n const { icons, labels } = React.useMemo(\n () => isThinMode ? separateIconsAndLabels(children) : { icons: [] as React.ReactNode[], labels: [] as React.ReactNode[] },\n [isThinMode, children],\n );\n\n // When rendering asChild, Slot expects a single child element. We still want to\n // append optional badge/shortcut inside that element so they render with Link.\n const slottedChildren = React.useMemo(() => {\n if (!asChild) return null;\n try {\n const onlyChild = React.Children.only(processedChildren as React.ReactElement<any>) as React.ReactElement<any>;\n const originalInnerChildren = (onlyChild.props as any)?.children;\n const enhancedInnerChildren = (\n <>\n {originalInnerChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Badge size={sidebarSize} variant=\"soft\">\n {badge}\n </Badge>\n ) : (\n <Badge size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} highContrast={badge.highContrast} radius={badge.radius}>\n {badge.content}\n </Badge>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n );\n return React.cloneElement(onlyChild, { ...(onlyChild.props as any) }, enhancedInnerChildren);\n } catch {\n // Fallback: if multiple children were passed incorrectly, just return processedChildren\n return processedChildren as React.ReactNode;\n }\n }, [asChild, processedChildren, badge, shortcut, sidebarSize]);\n\n return (\n <Comp\n {...props}\n ref={forwardedRef}\n role=\"menuitem\"\n aria-current={isActive ? 'page' : undefined}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', className)}\n data-active={isActive || undefined}\n onKeyDown={handleKeyDown}\n >\n {asChild ? (\n slottedChildren\n ) : isThinMode && icons.length > 0 ? (\n <>\n <span className=\"rt-SidebarMenuIconWrapper\">{icons}</span>\n {labels.map((label, index) => (\n <React.Fragment key={index}>\n {typeof label === 'string' || typeof label === 'number' ? (\n <span className=\"rt-SidebarMenuLabel\">{label}</span>\n ) : (\n label\n )}\n </React.Fragment>\n ))}\n </>\n ) : (\n <>\n {processedChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Badge size={sidebarSize} variant=\"soft\">\n {badge}\n </Badge>\n ) : (\n <Badge size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} highContrast={badge.highContrast} radius={badge.radius}>\n {badge.content}\n </Badge>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n )}\n </Comp>\n );\n },\n);\nSidebarMenuButton.displayName = 'Sidebar.MenuButton';\n\n// Sub-menu components: Accordion in expanded, Dropdown in thin\nconst SidebarSubMenuModeContext = React.createContext<'accordion' | 'dropdown'>('accordion');\ninterface SidebarMenuSubProps extends React.ComponentPropsWithoutRef<'div'> {\n defaultOpen?: boolean;\n}\n\nconst SidebarMenuSub = React.forwardRef<HTMLDivElement, SidebarMenuSubProps>(({ defaultOpen = false, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode: 'accordion' | 'dropdown' = visual?.presentation === 'thin' ? 'dropdown' : 'accordion';\n\n if (mode === 'dropdown') {\n return (\n <div {...props} ref={forwardedRef}>\n <DropdownMenu.Root>\n <SidebarSubMenuModeContext.Provider value=\"dropdown\">{children}</SidebarSubMenuModeContext.Provider>\n </DropdownMenu.Root>\n </div>\n );\n }\n\n return (\n <div {...props} ref={forwardedRef}>\n <SidebarSubMenuModeContext.Provider value=\"accordion\">\n <Accordion.Root type=\"single\" collapsible defaultValue={defaultOpen ? 'item' : undefined}>\n <Accordion.Item value=\"item\">{children}</Accordion.Item>\n </Accordion.Root>\n </SidebarSubMenuModeContext.Provider>\n </div>\n );\n});\nSidebarMenuSub.displayName = 'Sidebar.MenuSub';\n\ninterface SidebarMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {\n asChild?: boolean;\n}\n\nconst SidebarMenuSubTrigger = React.forwardRef<React.ElementRef<typeof Accordion.Trigger>, SidebarMenuSubTriggerProps>(\n ({ asChild = false, className, children, ...props }, forwardedRef) => {\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n return (\n <DropdownMenu.Trigger>\n <button\n {...(props as any)}\n ref={forwardedRef as any}\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {children}\n </button>\n </DropdownMenu.Trigger>\n );\n }\n\n return (\n <Accordion.Header asChild>\n <div>\n <Accordion.Trigger\n {...props}\n ref={forwardedRef}\n asChild={asChild}\n role=\"menuitem\"\n aria-haspopup=\"true\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <ThickChevronRightIcon className={classNames('rt-BaseMenuSubTriggerIcon', 'rt-SidebarMenuSubTriggerIcon')} />\n </>\n )}\n </Accordion.Trigger>\n </div>\n </Accordion.Header>\n );\n },\n);\nSidebarMenuSubTrigger.displayName = 'Sidebar.MenuSubTrigger';\n\ninterface SidebarMenuSubContentProps extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}\n\nconst SidebarMenuSubContent = React.forwardRef<React.ElementRef<typeof Accordion.Content>, SidebarMenuSubContentProps>(({ className, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n const unwrapMenuButton = (node: React.ReactNode): React.ReactNode => {\n if (Array.isArray(node)) {\n return node.map((n, i) => <React.Fragment key={i}>{unwrapMenuButton(n)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const typeDisplay = (node.type as any)?.displayName;\n if (typeDisplay === 'Sidebar.MenuButton') {\n return (node.props as any)?.children;\n }\n const child = (node.props as any)?.children;\n if (child !== undefined) {\n return React.cloneElement(node as any, { ...(node.props as any), children: unwrapMenuButton(child) });\n }\n }\n return node;\n };\n\n const normalized = React.Children.map(children as React.ReactNode, (child, index) => {\n if (React.isValidElement(child) && (child.type as any)?.displayName === 'Sidebar.MenuItem') {\n const itemChildren = (child.props as any)?.children;\n const content = unwrapMenuButton(itemChildren);\n return (\n <DropdownMenu.Item key={index} asChild>\n {content as any}\n </DropdownMenu.Item>\n );\n }\n // Fallback: wrap raw nodes too for consistent menu styling\n return (\n <DropdownMenu.Item key={index} asChild>\n {unwrapMenuButton(child) as any}\n </DropdownMenu.Item>\n );\n });\n\n // DropdownMenu only supports sizes 1 and 2, so map size 3 to 2\n const dropdownSize = visual?.size === '3' ? '2' : visual?.size;\n return (\n <DropdownMenu.Content size={dropdownSize} variant={visual?.menuVariant} className={classNames(className)}>\n <DropdownMenu.Group>{normalized}</DropdownMenu.Group>\n </DropdownMenu.Content>\n );\n }\n\n return (\n <Accordion.Content {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuSubContent', className)}>\n <div className=\"rt-SidebarMenuSubList\">{children}</div>\n </Accordion.Content>\n );\n});\nSidebarMenuSubContent.displayName = 'Sidebar.MenuSubContent';\n\n// Group components\ninterface SidebarGroupProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-BaseMenuGroup', 'rt-SidebarGroup', className)} />\n));\nSidebarGroup.displayName = 'Sidebar.Group';\n\ninterface SidebarGroupLabelProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(({ asChild = false, className, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'div';\n\n return <Comp {...props} ref={forwardedRef} role=\"group\" className={classNames('rt-BaseMenuLabel', 'rt-SidebarGroupLabel', className)} />;\n});\nSidebarGroupLabel.displayName = 'Sidebar.GroupLabel';\n\ninterface SidebarGroupContentProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, SidebarGroupContentProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarGroupContent', className)} />\n));\nSidebarGroupContent.displayName = 'Sidebar.GroupContent';\n\n// Search component: inline input in expanded, popover trigger in thin\ninterface SidebarSearchProps extends React.ComponentPropsWithoutRef<'div'> {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n children?: React.ReactNode;\n}\n\nconst SearchIcon = ({ className }: { className?: string }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst ClearIcon = ({ className }: { className?: string }) => (\n <svg className={className} width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\nconst SidebarSearch = React.forwardRef<HTMLDivElement, SidebarSearchProps>(\n ({ value, onValueChange, placeholder = 'Search...', children, className, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const isThin = visual?.presentation === 'thin';\n const inputRef = React.useRef<HTMLInputElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const searchId = React.useId();\n const resultsId = `${searchId}-results`;\n\n // Stable refs for values used in callbacks \u2014 avoids recreating handlers on every keystroke\n const valueRef = React.useRef(value);\n valueRef.current = value;\n const onValueChangeRef = React.useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n // Derive a clean aria-label from placeholder (strip trailing dots/ellipsis)\n const searchLabel = placeholder.replace(/\\.+$/, '');\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && valueRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onValueChangeRef.current('');\n inputRef.current?.focus();\n }\n },\n [],\n );\n\n // Arrow key navigation within the popover (input \u2194 results)\n const handlePopoverKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = popoverRef.current;\n if (!container) return;\n\n const resultsGroup = container.querySelector('[role=\"group\"]');\n if (!resultsGroup) return;\n\n const items = Array.from(\n resultsGroup.querySelectorAll<HTMLElement>('a, button'),\n );\n if (items.length === 0) return;\n\n const active = document.activeElement as HTMLElement;\n const isOnInput = active === inputRef.current;\n const currentIndex = items.indexOf(active);\n\n // Typing while a result is focused \u2192 redirect focus to input\n if (\n e.key.length === 1 &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey &&\n !isOnInput &&\n currentIndex !== -1\n ) {\n inputRef.current?.focus();\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (isOnInput || currentIndex === -1) {\n items[0]?.focus();\n } else if (currentIndex < items.length - 1) {\n items[currentIndex + 1]?.focus();\n }\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (currentIndex <= 0) {\n inputRef.current?.focus();\n } else {\n items[currentIndex - 1]?.focus();\n }\n break;\n }\n case 'Home': {\n // Only intercept when focused on a result, not the input (where Home moves cursor)\n if (!isOnInput) {\n e.preventDefault();\n items[0]?.focus();\n }\n break;\n }\n case 'End': {\n if (!isOnInput) {\n e.preventDefault();\n items[items.length - 1]?.focus();\n }\n break;\n }\n }\n },\n [],\n );\n\n if (isThin) {\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--thin', className)}>\n <Popover.Root>\n <Popover.Trigger>\n <button\n type=\"button\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarSearchTrigger')}\n aria-label={searchLabel}\n >\n <span className=\"rt-SidebarMenuIconWrapper\">\n <SearchIcon />\n </span>\n <span className=\"rt-SidebarMenuLabel\">Search</span>\n </button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" size=\"2\" width=\"280px\" aria-label={searchLabel}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- keyDown manages arrow-key navigation between input and results, which is accessibility-enhancing */}\n <div\n ref={popoverRef}\n className=\"rt-SidebarSearchPopover\"\n role=\"search\"\n onKeyDown={handlePopoverKeyDown}\n >\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n aria-controls={children ? resultsId : undefined}\n // eslint-disable-next-line jsx-a11y/no-autofocus -- intentional: popover opens on user action, focusing the input is expected UX\n autoFocus\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n {children && (\n <div id={resultsId} role=\"group\" aria-label=\"Search results\">\n {children}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n }\n\n // Expanded mode: inline input\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--expanded', className)} role=\"search\">\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nSidebarSearch.displayName = 'Sidebar.Search';\n\n// Export all components following shadcn's pattern\nexport {\n Sidebar as Root,\n SidebarContent as Content,\n SidebarHeader as Header,\n SidebarFooter as Footer,\n SidebarSeparator as Separator,\n SidebarMenu as Menu,\n SidebarMenuItem as MenuItem,\n SidebarMenuButton as MenuButton,\n SidebarMenuSub as MenuSub,\n SidebarMenuSubTrigger as MenuSubTrigger,\n SidebarMenuSubContent as MenuSubContent,\n SidebarGroup as Group,\n SidebarGroupLabel as GroupLabel,\n SidebarGroupContent as GroupContent,\n SidebarSearch as Search,\n};\n\n/**\n * Enhanced Sidebar Header and Footer Usage Examples:\n *\n * 1. Simple default container (backwards compatible):\n * <Sidebar.Header>\n * <Logo />\n * <span>App Name</span>\n * </Sidebar.Header>\n *\n * 2. Custom flex layout:\n * <Sidebar.Header className=\"rt-justify-between rt-gap-3\">\n * <Logo />\n * <Sidebar.MenuButton>\n * <SettingsIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Header>\n *\n * 3. Column layout for multiple rows:\n * <Sidebar.Header className=\"rt-flex-col rt-gap-2\" asContainer={false}>\n * <div className=\"rt-flex rt-items-center rt-gap-2\">\n * <Logo />\n * <span>App Name</span>\n * </div>\n * <Sidebar.MenuButton>\n * <UserAvatar />\n * <span>John Doe</span>\n * </Sidebar.MenuButton>\n * </Sidebar.Header>\n *\n * 4. Interactive footer with menu button:\n * <Sidebar.Footer>\n * <Sidebar.MenuButton>\n * <UserIcon />\n * <span>Settings</span>\n * <ChevronUpIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Footer>\n *\n * 5. Custom footer layout:\n * <Sidebar.Footer className=\"rt-justify-between\">\n * <span>v1.0.0</span>\n * <Sidebar.MenuButton>\n * <HelpIcon />\n * </Sidebar.MenuButton>\n * </Sidebar.Footer>\n *\n * Available utility classes:\n * - Layout: rt-flex-row, rt-flex-col\n * - Alignment: rt-items-center, rt-items-start, rt-items-end\n * - Justification: rt-justify-between, rt-justify-center, rt-justify-start, rt-justify-end\n * - Gap: rt-gap-1, rt-gap-2, rt-gap-3, rt-gap-4\n */\n\nexport type { SidebarProps as RootProps, SidebarContentProps as ContentProps, SidebarHeaderProps as HeaderProps, SidebarFooterProps as FooterProps, BadgeConfig };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\n// Re-export base menu props for sidebar menu components\nexport {\n baseMenuContentPropDefs as sidebarContentPropDefs,\n baseMenuItemPropDefs as sidebarItemPropDefs,\n baseMenuCheckboxItemPropDefs as sidebarCheckboxItemPropDefs,\n baseMenuRadioItemPropDefs as sidebarRadioItemPropDefs,\n} from './_internal/base-menu.props.js';\n\n// Sidebar container props\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['soft', 'outline', 'surface', 'ghost'] as const;\nconst menuVariants = ['solid', 'soft'] as const;\nconst types = ['sidebar'] as const;\nconst sides = ['left', 'right'] as const;\nconst collapsibleModes = ['offcanvas', 'icon', 'none'] as const;\nconst layouts = ['rail', 'panel'] as const;\n\nconst sidebarPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'outline' },\n menuVariant: {\n type: 'enum',\n className: 'rt-menu-variant',\n values: menuVariants,\n default: 'soft',\n },\n type: { type: 'enum', className: 'rt-type', values: types, default: 'sidebar' },\n side: { type: 'enum', className: 'rt-side', values: sides, default: 'left' },\n collapsible: {\n type: 'enum',\n className: 'rt-collapsible',\n values: collapsibleModes,\n default: 'offcanvas',\n },\n layout: { type: 'enum', className: 'rt-layout', values: layouts, default: undefined },\n panelBackground: { type: 'enum', values: ['solid', 'translucent'], default: undefined },\n ...colorPropDef,\n ...highContrastPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n menuVariant: PropDef<(typeof menuVariants)[number]>;\n type: PropDef<(typeof types)[number]>;\n side: PropDef<(typeof sides)[number]>;\n collapsible: PropDef<(typeof collapsibleModes)[number]>;\n layout: PropDef<(typeof layouts)[number]>;\n panelBackground: PropDef<'solid' | 'translucent'>;\n};\n\nexport { sidebarPropDefs };\n", "/**\n * Shell Component - Layout Engine + Chrome\n *\n * Philosophy:\n * - Shell = layout engine + chrome\n * - Manages layout state: expanded/collapsed, fixed/overlay, sizes\n * - Does not manage content/navigation state\n * - Provides unstyled primitives (slots, triggers)\n * - Enforces composition rules (Rail \u2194 Panel dependency, Sidebar exclusivity)\n *\n * Core Slots:\n * - Header: global top bar\n * - Rail: slim nav strip\n * - Panel: sidebar next to rail\n * - Sidebar: alternative to Rail+Panel (exclusive)\n * - Content: main work area\n * - Inspector: right-side panel\n * - Bottom: bottom panel\n *\n * Composition Rules:\n * - Rail + Panel: valid together (Rail collapse \u2192 Panel collapse)\n * - Sidebar: cannot coexist with Rail or Panel\n * - Content: always required\n * - Inspector/Bottom: optional, independent\n */\n'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from './sheet.js';\nimport { VisuallyHidden } from './visually-hidden.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from './shell.hooks.js';\nimport { PaneResizeContext } from './_internal/shell-resize.js';\nimport { PaneHandle, PanelHandle } from './_internal/shell-handles.js';\nimport { omitPaneProps, extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './_internal/shell-prop-helpers.js';\nimport { Sidebar } from './_internal/shell-sidebar.js';\nimport { Bottom } from './_internal/shell-bottom.js';\nimport { Inspector } from './_internal/shell-inspector.js';\nimport type { PresentationValue, ResponsivePresentation, PaneMode, SidebarMode, PaneSizePersistence, Breakpoint, PaneTarget, Responsive, PaneBaseProps, CSSPropertiesWithVars } from './shell.types.js';\nimport { normalizeToPx } from '../helpers/normalize-to-px.js';\nimport { useBreakpoint } from '../hooks/use-breakpoint.js';\nimport {\n ShellProvider,\n useShell,\n LeftModeContext,\n useLeftMode,\n PanelModeContext,\n usePanelMode,\n SidebarModeContext,\n useSidebarMode,\n InspectorModeContext,\n useInspectorMode,\n BottomModeContext,\n useBottomMode,\n PresentationContext,\n PeekContext,\n usePeek,\n ActionsContext,\n useShellActions,\n CompositionContext,\n InsetContext,\n useInset,\n type InsetPaneId,\n} from './shell.context.js';\n\n// Shell context is provided via ShellProvider (see shell.context.tsx)\n\n// Pane resize context moved to ./_internal/shell-resize\n\n// Local PaneHandle moved to ./_internal/shell-handles\n// Removed local PaneHandle implementation; using internal PaneHandle\n\n// Composed Handle wrappers per pane\n// Handles moved to ./_internal/shell-handles\n\n// Hook to resolve responsive presentation\n// useResponsivePresentation moved to shell.hooks.ts\n\n// Hook to resolve responsive mode defaults\n// Removed: defaultMode responsiveness\n\n// useBreakpoint hook moved to ../hooks/use-breakpoint.ts\n\n// Reducer-based pane state management to simplify cascading rules\ntype PaneState = {\n leftMode: PaneMode;\n panelMode: PaneMode;\n sidebarMode: SidebarMode;\n inspectorMode: PaneMode;\n bottomMode: PaneMode;\n};\n\ntype PaneAction =\n | { type: 'SET_LEFT_MODE'; mode: PaneMode }\n | { type: 'SET_PANEL_MODE'; mode: PaneMode }\n | { type: 'SET_SIDEBAR_MODE'; mode: SidebarMode }\n | { type: 'SET_INSPECTOR_MODE'; mode: PaneMode }\n | { type: 'SET_BOTTOM_MODE'; mode: PaneMode }\n | { type: 'TOGGLE_PANE'; target: PaneTarget }\n | { type: 'EXPAND_PANE'; target: PaneTarget }\n | { type: 'COLLAPSE_PANE'; target: PaneTarget };\n\nconst SHELL_SLOT = Symbol('rtShellSlot');\n\nfunction assignShellSlot<T extends React.ComponentType<any>>(component: T, slot: string): T {\n (component as any)[SHELL_SLOT] = slot;\n return component;\n}\n\n/**\n * Check if an element matches a component by type or displayName.\n * Uses displayName comparison to handle minification scenarios.\n */\nconst isShellComponentType = (el: React.ReactElement, comp: React.ComponentType & { displayName?: string }): boolean =>\n React.isValidElement(el) && (el.type === comp || (el as any).type?.displayName === comp.displayName);\n\n// Tag imported slot components so isType remains stable after minification\nassignShellSlot(Sidebar as any, 'Shell.Sidebar');\nassignShellSlot(Inspector as any, 'Shell.Inspector');\nassignShellSlot(Bottom as any, 'Shell.Bottom');\n\nfunction paneReducer(state: PaneState, action: PaneAction): PaneState {\n switch (action.type) {\n case 'SET_LEFT_MODE': {\n if (action.mode === 'collapsed') {\n if (state.leftMode === 'collapsed' && state.panelMode === 'collapsed') return state;\n return { ...state, leftMode: 'collapsed', panelMode: 'collapsed' };\n }\n if (state.leftMode === action.mode) return state;\n return { ...state, leftMode: action.mode };\n }\n case 'SET_PANEL_MODE': {\n if (action.mode === 'expanded' && state.leftMode !== 'expanded') {\n return { ...state, leftMode: 'expanded', panelMode: 'expanded' };\n }\n if (state.panelMode === action.mode) return state;\n return { ...state, panelMode: action.mode };\n }\n case 'SET_SIDEBAR_MODE':\n if (state.sidebarMode === action.mode) return state;\n return { ...state, sidebarMode: action.mode };\n case 'SET_INSPECTOR_MODE':\n if (state.inspectorMode === action.mode) return state;\n return { ...state, inspectorMode: action.mode };\n case 'SET_BOTTOM_MODE':\n if (state.bottomMode === action.mode) return state;\n return { ...state, bottomMode: action.mode };\n case 'TOGGLE_PANE': {\n switch (action.target) {\n case 'left':\n case 'rail':\n return { ...state, leftMode: state.leftMode === 'expanded' ? 'collapsed' : 'expanded', panelMode: state.leftMode === 'expanded' ? 'collapsed' : state.panelMode };\n case 'panel': {\n if (state.leftMode === 'collapsed') {\n return { ...state, leftMode: 'expanded', panelMode: 'expanded' };\n }\n return { ...state, panelMode: state.panelMode === 'expanded' ? 'collapsed' : 'expanded' };\n }\n case 'sidebar': {\n const next: SidebarMode = state.sidebarMode === 'collapsed' ? 'expanded' : state.sidebarMode === 'expanded' ? 'collapsed' : 'expanded';\n return { ...state, sidebarMode: next };\n }\n case 'inspector':\n return { ...state, inspectorMode: state.inspectorMode === 'expanded' ? 'collapsed' : 'expanded' };\n case 'bottom':\n return { ...state, bottomMode: state.bottomMode === 'expanded' ? 'collapsed' : 'expanded' };\n default:\n return state;\n }\n }\n case 'EXPAND_PANE': {\n switch (action.target) {\n case 'left':\n case 'rail':\n if (state.leftMode === 'expanded') return state;\n return { ...state, leftMode: 'expanded' };\n case 'panel':\n if (state.leftMode === 'expanded' && state.panelMode === 'expanded') return state;\n return { ...state, leftMode: 'expanded', panelMode: 'expanded' };\n case 'sidebar':\n if (state.sidebarMode === 'expanded') return state;\n return { ...state, sidebarMode: 'expanded' };\n case 'inspector':\n if (state.inspectorMode === 'expanded') return state;\n return { ...state, inspectorMode: 'expanded' };\n case 'bottom':\n if (state.bottomMode === 'expanded') return state;\n return { ...state, bottomMode: 'expanded' };\n default:\n return state;\n }\n }\n case 'COLLAPSE_PANE': {\n switch (action.target) {\n case 'left':\n case 'rail':\n if (state.leftMode === 'collapsed' && state.panelMode === 'collapsed') return state;\n return { ...state, leftMode: 'collapsed', panelMode: 'collapsed' };\n case 'panel':\n if (state.panelMode === 'collapsed') return state;\n return { ...state, panelMode: 'collapsed' };\n case 'sidebar':\n if (state.sidebarMode === 'collapsed') return state;\n return { ...state, sidebarMode: 'collapsed' };\n case 'inspector':\n if (state.inspectorMode === 'collapsed') return state;\n return { ...state, inspectorMode: 'collapsed' };\n case 'bottom':\n if (state.bottomMode === 'collapsed') return state;\n return { ...state, bottomMode: 'collapsed' };\n default:\n return state;\n }\n }\n }\n return state;\n}\n\n// Root Component\ninterface ShellRootProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n height?: 'full' | 'auto' | string | number;\n}\n\nconst Root = React.forwardRef<HTMLDivElement, ShellRootProps>(({ className, children, height = 'full', ...props }, ref) => {\n const { breakpoint: currentBreakpoint, ready: currentBreakpointReady } = useBreakpoint();\n\n // Store hasPanelDefaultOpen for use in passthrough props (computed once during lazy init)\n const hasPanelDefaultOpenRef = React.useRef<boolean>(false);\n\n // Pane state management via reducer with lazy initialization\n // This computation only runs once on mount, not on every render\n const [paneState, dispatchPane] = React.useReducer(paneReducer, children, (initialChildren) => {\n const childArray = React.Children.toArray(initialChildren) as React.ReactElement[];\n\n // Compute initial defaults from immediate children (one-time, uncontrolled defaults)\n const hasPanelDefaultOpen = childArray.some(\n (el) => React.isValidElement(el) && (el as any).type?.displayName === 'Shell.Panel' && Boolean((el as any).props?.defaultOpen),\n );\n // Store for use in passthrough props\n hasPanelDefaultOpenRef.current = hasPanelDefaultOpen;\n\n // Rail defaults to open (true) unless explicitly set to false\n // Supports responsive objects: { initial: false, md: true }\n const railEl = childArray.find((el) => React.isValidElement(el) && (el as any).type?.displayName === 'Shell.Rail');\n const railDefaultOpen = railEl ? (railEl as any).props?.defaultOpen : undefined;\n const hasRailDefaultOpen = (() => {\n if (!railEl) return false;\n if (railDefaultOpen === undefined) return true; // Default to open\n if (typeof railDefaultOpen === 'boolean') return railDefaultOpen;\n // Responsive object - use 'initial' value, or first defined value, or default true\n if (typeof railDefaultOpen === 'object') {\n return railDefaultOpen.initial ?? Object.values(railDefaultOpen)[0] ?? true;\n }\n return true;\n })();\n\n const hasInspectorDefaultOpen = childArray.some(\n (el) => React.isValidElement(el) && (el as any).type?.displayName === 'Shell.Inspector' && Boolean((el as any).props?.defaultOpen),\n );\n const hasInspectorOpenControlled = childArray.some(\n (el) =>\n React.isValidElement(el) &&\n (el as any).type?.displayName === 'Shell.Inspector' &&\n typeof (el as any).props?.open !== 'undefined' &&\n Boolean((el as any).props?.open),\n );\n\n // Detect Panel controlled open state for initial reducer state\n const hasPanelOpenControlled = childArray.some((el) => {\n if (!React.isValidElement(el) || (el as any).type?.displayName !== 'Shell.Panel') return false;\n const openProp = (el as any).props?.open;\n if (typeof openProp === 'undefined') return false;\n if (typeof openProp === 'boolean') return openProp;\n // Responsive object - check 'initial' or first truthy value\n if (typeof openProp === 'object' && openProp !== null) {\n return openProp.initial ?? Object.values(openProp)[0] ?? false;\n }\n return false;\n });\n\n // Detect Sidebar initial state from props\n const getSidebarInitialState = (): SidebarMode => {\n const sidebarEl = childArray.find((el) => React.isValidElement(el) && (el as any).type?.displayName === 'Shell.Sidebar');\n if (!sidebarEl) return 'expanded';\n const sidebarProps = (sidebarEl as any).props;\n // Check controlled state first\n if (typeof sidebarProps?.state !== 'undefined') {\n if (typeof sidebarProps.state === 'string') return sidebarProps.state as SidebarMode;\n // Responsive object - use 'initial' breakpoint or first defined value\n if (typeof sidebarProps.state === 'object') {\n return (sidebarProps.state.initial ?? Object.values(sidebarProps.state)[0] ?? 'expanded') as SidebarMode;\n }\n }\n // Check defaultState\n if (typeof sidebarProps?.defaultState !== 'undefined') {\n if (typeof sidebarProps.defaultState === 'string') return sidebarProps.defaultState as SidebarMode;\n if (typeof sidebarProps.defaultState === 'object') {\n return (sidebarProps.defaultState.initial ?? Object.values(sidebarProps.defaultState)[0] ?? 'expanded') as SidebarMode;\n }\n }\n return 'expanded';\n };\n\n // Detect Bottom initial state from props\n const getBottomInitialState = (): PaneMode => {\n const bottomEl = childArray.find((el) => React.isValidElement(el) && (el as any).type?.displayName === 'Shell.Bottom');\n if (!bottomEl) return 'collapsed';\n const bottomProps = (bottomEl as any).props;\n // Check controlled open first\n if (typeof bottomProps?.open !== 'undefined') {\n if (typeof bottomProps.open === 'boolean') return bottomProps.open ? 'expanded' : 'collapsed';\n // Responsive object - use 'initial' breakpoint or first defined value\n if (typeof bottomProps.open === 'object') {\n const val = bottomProps.open.initial ?? Object.values(bottomProps.open)[0];\n return val ? 'expanded' : 'collapsed';\n }\n }\n // Check defaultOpen\n if (typeof bottomProps?.defaultOpen !== 'undefined') {\n return bottomProps.defaultOpen ? 'expanded' : 'collapsed';\n }\n return 'collapsed';\n };\n\n return {\n leftMode: hasPanelDefaultOpen || hasPanelOpenControlled || hasRailDefaultOpen ? 'expanded' : ('collapsed' as PaneMode),\n panelMode: hasPanelDefaultOpen || hasPanelOpenControlled ? 'expanded' : ('collapsed' as PaneMode),\n sidebarMode: getSidebarInitialState(),\n inspectorMode: hasInspectorDefaultOpen || hasInspectorOpenControlled ? 'expanded' : ('collapsed' as PaneMode),\n bottomMode: getBottomInitialState(),\n };\n });\n const setLeftMode = React.useCallback((mode: PaneMode) => dispatchPane({ type: 'SET_LEFT_MODE', mode }), []);\n const setPanelMode = React.useCallback((mode: PaneMode) => dispatchPane({ type: 'SET_PANEL_MODE', mode }), []);\n const setSidebarMode = React.useCallback((mode: SidebarMode) => dispatchPane({ type: 'SET_SIDEBAR_MODE', mode }), []);\n const setInspectorMode = React.useCallback((mode: PaneMode) => dispatchPane({ type: 'SET_INSPECTOR_MODE', mode }), []);\n const setBottomMode = React.useCallback((mode: PaneMode) => dispatchPane({ type: 'SET_BOTTOM_MODE', mode }), []);\n\n // Removed: defaultMode responsiveness and manual change tracking\n\n // Composition detection\n const [hasLeft, setHasLeft] = React.useState(false);\n const [hasSidebar, setHasSidebar] = React.useState(false);\n\n // Customizable sidebar toggle sequencing\n const sidebarToggleComputerRef = React.useRef<(current: SidebarMode) => SidebarMode>((current) => (current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed'));\n const setSidebarToggleComputer = React.useCallback((fn: (current: SidebarMode) => SidebarMode) => {\n sidebarToggleComputerRef.current = fn;\n }, []);\n\n // Reducer handles left\u2192panel cascade; no effect needed\n\n // Composition validation\n React.useLayoutEffect(() => {\n if (hasSidebar && hasLeft) {\n console.warn('Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.');\n }\n }, [hasSidebar, hasLeft]);\n\n // Left presentation + defaults from children\n const [devLeftPres, setDevLeftPres] = React.useState<PresentationValue | undefined>(undefined);\n const onLeftPres = React.useCallback((p: PresentationValue) => setDevLeftPres(p), []);\n const railDefaultSizeRef = React.useRef<number>(64);\n const panelDefaultSizeRef = React.useRef<number>(288);\n const onRailDefaults = React.useCallback((size: number) => {\n railDefaultSizeRef.current = size;\n }, []);\n const onPanelDefaults = React.useCallback((size: number) => {\n panelDefaultSizeRef.current = size;\n }, []);\n\n // Determine children presence for left composition\n const hasLeftChildren = React.useMemo(() => {\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n return childArray.some((el) => isShellComponentType(el, Rail) || isShellComponentType(el, Panel));\n }, [children]);\n\n const hasSidebarChildren = React.useMemo(() => {\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n return childArray.some((el) => isShellComponentType(el, Sidebar));\n }, [children]);\n\n // Keep a ref to sidebar mode so togglePane doesn't depend on it,\n // preventing ActionsContext churn on every sidebar mode change\n const sidebarModeRef = React.useRef(paneState.sidebarMode);\n sidebarModeRef.current = paneState.sidebarMode;\n\n const togglePane = React.useCallback(\n (target: PaneTarget) => {\n if (target === 'sidebar') {\n const next = sidebarToggleComputerRef.current(sidebarModeRef.current as SidebarMode);\n setSidebarMode(next);\n return;\n }\n dispatchPane({ type: 'TOGGLE_PANE', target });\n },\n [setSidebarMode],\n );\n\n const expandPane = React.useCallback(\n (target: PaneTarget) => {\n if (target === 'sidebar') return setSidebarMode('expanded');\n dispatchPane({ type: 'EXPAND_PANE', target });\n },\n [setSidebarMode],\n );\n\n const collapsePane = React.useCallback(\n (target: PaneTarget) => {\n if (target === 'sidebar') return setSidebarMode('collapsed');\n dispatchPane({ type: 'COLLAPSE_PANE', target });\n },\n [setSidebarMode],\n );\n\n const baseContextValue = React.useMemo(\n () => ({\n leftMode: paneState.leftMode,\n setLeftMode,\n panelMode: paneState.panelMode,\n setPanelMode,\n sidebarMode: paneState.sidebarMode,\n setSidebarMode,\n inspectorMode: paneState.inspectorMode,\n setInspectorMode,\n bottomMode: paneState.bottomMode,\n setBottomMode,\n hasLeft,\n setHasLeft,\n hasSidebar,\n setHasSidebar,\n currentBreakpoint,\n currentBreakpointReady,\n leftResolvedPresentation: devLeftPres,\n togglePane,\n expandPane,\n collapsePane,\n setSidebarToggleComputer,\n onLeftPres,\n onRailDefaults,\n onPanelDefaults,\n }),\n [\n paneState.leftMode,\n setLeftMode,\n paneState.panelMode,\n setPanelMode,\n paneState.sidebarMode,\n setSidebarMode,\n paneState.inspectorMode,\n setInspectorMode,\n paneState.bottomMode,\n setBottomMode,\n hasLeft,\n hasSidebar,\n currentBreakpoint,\n currentBreakpointReady,\n devLeftPres,\n togglePane,\n expandPane,\n collapsePane,\n setSidebarToggleComputer,\n onLeftPres,\n onRailDefaults,\n onPanelDefaults,\n ],\n );\n\n // Organize children by type \u2014 single pass instead of 7 filter calls\n const { headerEls, railEls, panelEls, sidebarEls, contentEls, inspectorEls, bottomEls } = React.useMemo(() => {\n const result = {\n headerEls: [] as React.ReactElement[],\n railEls: [] as React.ReactElement[],\n panelEls: [] as React.ReactElement[],\n sidebarEls: [] as React.ReactElement[],\n contentEls: [] as React.ReactElement[],\n inspectorEls: [] as React.ReactElement[],\n bottomEls: [] as React.ReactElement[],\n };\n for (const el of React.Children.toArray(children) as React.ReactElement[]) {\n if (isShellComponentType(el, Header)) result.headerEls.push(el);\n else if (isShellComponentType(el, Rail)) result.railEls.push(el);\n else if (isShellComponentType(el, Panel)) result.panelEls.push(el);\n else if (isShellComponentType(el, Sidebar)) result.sidebarEls.push(el);\n else if (isShellComponentType(el, Content)) result.contentEls.push(el);\n else if (isShellComponentType(el, Inspector)) result.inspectorEls.push(el);\n else if (isShellComponentType(el, Bottom)) result.bottomEls.push(el);\n }\n return result;\n }, [children]);\n\n // Controlled sync in Root: mirror first Rail/Panel open if provided\n const firstRailOpen = (railEls[0] as any)?.props?.open;\n const resolvedFirstRailOpen = React.useMemo(() => {\n if (typeof firstRailOpen === 'undefined') return undefined;\n if (typeof firstRailOpen === 'boolean') return firstRailOpen;\n if (typeof firstRailOpen !== 'object' || firstRailOpen === null) return Boolean(firstRailOpen);\n\n const responsive = firstRailOpen as Partial<Record<Breakpoint, boolean>>;\n if (responsive[currentBreakpoint] !== undefined) return responsive[currentBreakpoint];\n\n const fallbackOrder: Breakpoint[] = ['xl', 'lg', 'md', 'sm', 'xs', 'initial'];\n const startIdx = fallbackOrder.indexOf(currentBreakpoint);\n for (let i = startIdx + 1; i < fallbackOrder.length; i++) {\n const bp = fallbackOrder[i];\n if (responsive[bp] !== undefined) return responsive[bp];\n }\n return undefined;\n }, [firstRailOpen, currentBreakpoint]);\n\n const firstPanelOpen = (panelEls[0] as any)?.props?.open;\n const resolvedFirstPanelOpen = React.useMemo(() => {\n if (typeof firstPanelOpen === 'undefined') return undefined;\n if (typeof firstPanelOpen === 'boolean') return firstPanelOpen;\n if (typeof firstPanelOpen !== 'object' || firstPanelOpen === null) return Boolean(firstPanelOpen);\n\n const responsive = firstPanelOpen as Partial<Record<Breakpoint, boolean>>;\n if (responsive[currentBreakpoint] !== undefined) return responsive[currentBreakpoint];\n\n const fallbackOrder: Breakpoint[] = ['xl', 'lg', 'md', 'sm', 'xs', 'initial'];\n const startIdx = fallbackOrder.indexOf(currentBreakpoint);\n for (let i = startIdx + 1; i < fallbackOrder.length; i++) {\n const bp = fallbackOrder[i];\n if (responsive[bp] !== undefined) return responsive[bp];\n }\n return undefined;\n }, [firstPanelOpen, currentBreakpoint]);\n\n const controlSeqRef = React.useRef(0);\n const lastRailChangeRef = React.useRef(0);\n const lastPanelChangeRef = React.useRef(0);\n const lastRailOpenRef = React.useRef<boolean | undefined>(resolvedFirstRailOpen);\n const lastPanelOpenRef = React.useRef<boolean | undefined>(resolvedFirstPanelOpen);\n\n React.useLayoutEffect(() => {\n if (resolvedFirstRailOpen === undefined) {\n lastRailOpenRef.current = undefined;\n return;\n }\n if (lastRailOpenRef.current === resolvedFirstRailOpen) return;\n lastRailOpenRef.current = resolvedFirstRailOpen;\n lastRailChangeRef.current = ++controlSeqRef.current;\n }, [resolvedFirstRailOpen]);\n\n React.useLayoutEffect(() => {\n if (resolvedFirstPanelOpen === undefined) {\n lastPanelOpenRef.current = undefined;\n return;\n }\n if (lastPanelOpenRef.current === resolvedFirstPanelOpen) return;\n lastPanelOpenRef.current = resolvedFirstPanelOpen;\n lastPanelChangeRef.current = ++controlSeqRef.current;\n }, [resolvedFirstPanelOpen]);\n\n React.useLayoutEffect(() => {\n if (typeof resolvedFirstRailOpen === 'undefined') return;\n setLeftMode(resolvedFirstRailOpen ? 'expanded' : 'collapsed');\n }, [resolvedFirstRailOpen, setLeftMode]);\n\n const railOnOpenChange = (railEls[0] as any)?.props?.onOpenChange as\n | ((open: boolean, meta: { reason: 'init' | 'toggle' | 'responsive' | 'panel' }) => void)\n | undefined;\n const panelOnOpenChange = (panelEls[0] as any)?.props?.onOpenChange as\n | ((open: boolean, meta: { reason: 'toggle' | 'left' | 'init' | 'responsive' }) => void)\n | undefined;\n const lastConflictRef = React.useRef<{ railSeq: number; panelSeq: number; action: 'open-rail' | 'close-panel' } | null>(null);\n\n React.useLayoutEffect(() => {\n if (resolvedFirstRailOpen !== false || resolvedFirstPanelOpen !== true) {\n lastConflictRef.current = null;\n return;\n }\n\n const panelWins = lastPanelChangeRef.current > lastRailChangeRef.current;\n const action: 'open-rail' | 'close-panel' = panelWins ? 'open-rail' : 'close-panel';\n const lastConflict = lastConflictRef.current;\n if (lastConflict && lastConflict.railSeq === lastRailChangeRef.current && lastConflict.panelSeq === lastPanelChangeRef.current && lastConflict.action === action) {\n return;\n }\n lastConflictRef.current = { railSeq: lastRailChangeRef.current, panelSeq: lastPanelChangeRef.current, action };\n\n if (panelWins) {\n railOnOpenChange?.(true, { reason: 'panel' });\n } else {\n panelOnOpenChange?.(false, { reason: 'left' });\n }\n }, [resolvedFirstRailOpen, resolvedFirstPanelOpen, railOnOpenChange, panelOnOpenChange]);\n\n const leftControlledOpen = resolvedFirstRailOpen;\n\n const heightStyle = React.useMemo(() => {\n if (height === 'full') return { height: '100vh' };\n if (height === 'auto') return { height: 'auto' };\n if (typeof height === 'string') return { height };\n if (typeof height === 'number') return { height: `${height}px` };\n return {};\n }, [height]);\n\n // Peek state (layout-only overlay without mode changes)\n const [peekTarget, setPeekTarget] = React.useState<PaneTarget | null>(null);\n const peekPane = React.useCallback((target: PaneTarget) => setPeekTarget(target), []);\n const clearPeek = React.useCallback(() => setPeekTarget(null), []);\n\n // Memoized slice context values to avoid notifying unrelated consumers\n const presentationCtxValue = React.useMemo(() => ({ currentBreakpoint, currentBreakpointReady, leftResolvedPresentation: devLeftPres }), [currentBreakpoint, currentBreakpointReady, devLeftPres]);\n const leftModeCtxValue = React.useMemo(() => ({ leftMode: paneState.leftMode, setLeftMode }), [paneState.leftMode, setLeftMode]);\n const panelModeCtxValue = React.useMemo(() => ({ panelMode: paneState.panelMode, setPanelMode }), [paneState.panelMode, setPanelMode]);\n const sidebarModeCtxValue = React.useMemo(() => ({ sidebarMode: paneState.sidebarMode, setSidebarMode }), [paneState.sidebarMode, setSidebarMode]);\n const inspectorModeCtxValue = React.useMemo(() => ({ inspectorMode: paneState.inspectorMode, setInspectorMode }), [paneState.inspectorMode, setInspectorMode]);\n const bottomModeCtxValue = React.useMemo(() => ({ bottomMode: paneState.bottomMode, setBottomMode }), [paneState.bottomMode, setBottomMode]);\n const compositionCtxValue = React.useMemo(() => ({ hasLeft, setHasLeft, hasSidebar, setHasSidebar }), [hasLeft, setHasLeft, hasSidebar, setHasSidebar]);\n\n // Inset state management\n const [insetPanes, setInsetPanes] = React.useState<Set<InsetPaneId>>(new Set());\n const registerInset = React.useCallback((id: InsetPaneId) => {\n setInsetPanes((prev) => {\n if (prev.has(id)) return prev;\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n }, []);\n const unregisterInset = React.useCallback((id: InsetPaneId) => {\n setInsetPanes((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n const hasAnyInset = insetPanes.size > 0;\n const insetCtxValue = React.useMemo(\n () => ({ insetPanes, registerInset, unregisterInset, hasAnyInset }),\n [insetPanes, registerInset, unregisterInset, hasAnyInset],\n );\n const peekCtxValue = React.useMemo(() => ({ peekTarget, setPeekTarget, peekPane, clearPeek }), [peekTarget, setPeekTarget, peekPane, clearPeek]);\n const actionsCtxValue = React.useMemo(() => ({ togglePane, expandPane, collapsePane, setSidebarToggleComputer }), [togglePane, expandPane, collapsePane, setSidebarToggleComputer]);\n\n // Memoized full context value for ShellProvider to prevent unnecessary effect re-runs\n const shellContextValue = React.useMemo(\n () => ({\n ...baseContextValue,\n leftControlledOpen,\n peekTarget,\n setPeekTarget,\n peekPane,\n clearPeek,\n }),\n [baseContextValue, leftControlledOpen, peekTarget, setPeekTarget, peekPane, clearPeek],\n );\n\n // Memoize the Left content to avoid recreating the IIFE on every render\n const leftContent = React.useMemo(() => {\n if (!hasLeftChildren || hasSidebarChildren) return null;\n const firstRail = railEls[0] as any;\n const firstPanel = panelEls[0] as any;\n const leftInset = Boolean(firstRail?.props?.inset) || Boolean(firstPanel?.props?.inset);\n const passthroughProps = firstRail\n ? {\n // Notification passthrough used by Left; not spread to DOM in Left\n onOpenChange: firstRail.props?.onOpenChange,\n open: firstRail.props?.open,\n defaultOpen: firstRail.props?.defaultOpen,\n presentation: firstRail.props?.presentation,\n collapsible: firstRail.props?.collapsible,\n onExpand: firstRail.props?.onExpand,\n onCollapse: firstRail.props?.onCollapse,\n inset: leftInset,\n }\n : { defaultOpen: hasPanelDefaultOpenRef.current ? true : undefined, inset: leftInset };\n return (\n <Left {...(passthroughProps as any)}>\n {railEls}\n {panelEls}\n </Left>\n );\n }, [hasLeftChildren, hasSidebarChildren, railEls, panelEls]);\n\n return (\n <div {...props} ref={ref} className={classNames('rt-ShellRoot', className)} style={{ ...heightStyle, ...props.style }}>\n <ShellProvider value={shellContextValue}>\n <PresentationContext.Provider value={presentationCtxValue}>\n <LeftModeContext.Provider value={leftModeCtxValue}>\n <PanelModeContext.Provider value={panelModeCtxValue}>\n <SidebarModeContext.Provider value={sidebarModeCtxValue}>\n <InspectorModeContext.Provider value={inspectorModeCtxValue}>\n <BottomModeContext.Provider value={bottomModeCtxValue}>\n <CompositionContext.Provider value={compositionCtxValue}>\n <PeekContext.Provider value={peekCtxValue}>\n <ActionsContext.Provider value={actionsCtxValue}>\n <InsetContext.Provider value={insetCtxValue}>\n {headerEls}\n <div\n className=\"rt-ShellBody\"\n data-peek-target={peekTarget ?? undefined}\n data-has-inset={hasAnyInset || undefined}\n style={\n peekTarget === 'rail' || peekTarget === 'panel'\n ? ({\n '--peek-rail-width': `${railDefaultSizeRef.current}px`,\n } as CSSPropertiesWithVars)\n : undefined\n }\n >\n {leftContent ?? sidebarEls}\n {contentEls}\n {inspectorEls}\n </div>\n {bottomEls}\n </InsetContext.Provider>\n </ActionsContext.Provider>\n </PeekContext.Provider>\n </CompositionContext.Provider>\n </BottomModeContext.Provider>\n </InspectorModeContext.Provider>\n </SidebarModeContext.Provider>\n </PanelModeContext.Provider>\n </LeftModeContext.Provider>\n </PresentationContext.Provider>\n </ShellProvider>\n </div>\n );\n}) as PanelComponent;\nRoot.displayName = 'Shell.Root';\n\n// Header\ninterface ShellHeaderProps extends React.ComponentPropsWithoutRef<'header'> {\n height?: number;\n}\n\nconst Header = React.forwardRef<HTMLElement, ShellHeaderProps>(({ className, height = 64, style, ...props }, ref) => (\n <header\n {...props}\n ref={ref}\n className={classNames('rt-ShellHeader', className)}\n style={{\n ...style,\n '--shell-header-height': `${height}px`,\n } as CSSPropertiesWithVars}\n />\n));\nHeader.displayName = 'Shell.Header';\n\n// Pane Props Interface (shared by Panel, Sidebar, Inspector, Bottom)\ntype PaneProps = PaneBaseProps;\n\n// Left container (auto-created for Rail+Panel)\ninterface LeftProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n // New: passthrough from Rail\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, meta: { reason: 'init' | 'toggle' | 'panel' | 'responsive' }) => void;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n mode?: never;\n defaultMode?: never;\n onModeChange?: never;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n}\n\n// Rail (special case)\ntype LeftOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' | 'panel' };\n\ntype RailControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: LeftOpenChangeMeta) => void; defaultOpen?: never };\ntype RailUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: LeftOpenChangeMeta) => void; open?: never };\n\ntype RailProps = React.ComponentPropsWithoutRef<'div'> & {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n /** When true, adds margin to Rail+Panel and triggers gray backdrop on Shell. */\n inset?: boolean;\n} & (RailControlledProps | RailUncontrolledProps);\n\n// Left container - behaves like Inspector but contains Rail+Panel\nconst LEFT_DOM_OMIT_PROPS = ['open', 'defaultOpen', 'onOpenChange', 'mode', 'defaultMode', 'onModeChange'] as const;\n\nconst Left = React.forwardRef<HTMLDivElement, LeftProps>((initialProps, ref) => {\n const { className, presentation = { initial: 'fixed', sm: 'fixed' }, collapsible: _collapsible = true, onExpand, onCollapse, children, style, inset, ...restProps } = initialProps;\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useEffect(() => {\n if (inset) {\n registerInset('left');\n return () => unregisterInset('left');\n }\n }, [inset, registerInset, unregisterInset]);\n const propsOpen = restProps.open;\n const propsDefaultOpen = restProps.defaultOpen;\n const propsOnOpenChange = restProps.onOpenChange;\n const domProps = omitPaneProps(restProps, LEFT_DOM_OMIT_PROPS);\n const shell = useShell();\n const { setHasLeft } = shell;\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n // Publish resolved presentation so Root can gate peeking in overlay\n React.useEffect(() => {\n shell.onLeftPres?.(resolvedPresentation);\n }, [shell, resolvedPresentation]);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n\n // Register with shell\n React.useEffect(() => {\n setHasLeft(true);\n return () => setHasLeft(false);\n }, [setHasLeft]);\n\n const lastLeftModeRef = React.useRef<PaneMode | null>(null);\n const lastResolvedLeftControlledRef = React.useRef<PaneMode | undefined>(undefined);\n const normalizedLeftControlled = React.useMemo(() => {\n if (typeof propsOpen === 'undefined') return undefined;\n return propsOpen ? 'expanded' : 'collapsed';\n }, [propsOpen]);\n const normalizedLeftDefault = React.useMemo(() => mapResponsiveBooleanToPaneMode(propsDefaultOpen), [propsDefaultOpen]);\n\n // Stable refs for notification callbacks to avoid effect dep churn\n const propsOnOpenChangeRef = React.useRef(propsOnOpenChange);\n const propsOpenRef = React.useRef(propsOpen);\n React.useLayoutEffect(() => {\n propsOnOpenChangeRef.current = propsOnOpenChange;\n propsOpenRef.current = propsOpen;\n });\n\n const { resolvedControlled: resolvedLeftControlled } = useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedLeftControlled,\n defaultValue: normalizedLeftDefault,\n currentValue: shell.leftMode,\n setValue: shell.setLeftMode,\n breakpointReady: shell.currentBreakpointReady,\n onInit: (initial) => propsOnOpenChangeRef.current?.(initial === 'expanded', { reason: 'init' }),\n });\n\n // Emit mode changes for user/internal transitions.\n // In controlled mode, skip when the mode matches the controlled prop (prop-driven sync).\n const prevPanelModeRef = React.useRef<PaneMode | null>(null);\n React.useEffect(() => {\n const prevLeftMode = lastLeftModeRef.current;\n const prevPanelMode = prevPanelModeRef.current;\n\n const prevResolvedControlled = lastResolvedLeftControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedLeftControlled;\n\n if (prevLeftMode !== null && prevLeftMode !== shell.leftMode) {\n const isControlled = typeof propsOpenRef.current !== 'undefined';\n const controlledTarget = resolvedLeftControlled === undefined ? undefined : resolvedLeftControlled === 'expanded';\n const nextOpen = shell.leftMode === 'expanded';\n\n // In controlled mode, only notify when internal mode diverges from the\n // controlled prop \u2014 that means a trigger/cascade changed it, not a prop sync.\n if (!isControlled || (!controlledChanged && nextOpen !== controlledTarget)) {\n let reason: LeftOpenChangeMeta['reason'] = 'toggle';\n const panelDrivenOpen = prevPanelMode !== null && prevPanelMode !== shell.panelMode && prevLeftMode === 'collapsed' && shell.leftMode === 'expanded' && shell.panelMode === 'expanded';\n if (panelDrivenOpen) {\n reason = 'panel';\n }\n propsOnOpenChangeRef.current?.(nextOpen, { reason });\n }\n }\n\n lastLeftModeRef.current = shell.leftMode;\n prevPanelModeRef.current = shell.panelMode;\n lastResolvedLeftControlledRef.current = resolvedLeftControlled;\n }, [shell.leftMode, shell.panelMode, resolvedLeftControlled]);\n\n // Emit expand/collapse events.\n // Use callback refs to avoid re-running effect when inline callbacks change,\n // matching the pattern used by Inspector and Bottom.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevLeftModeForCallbackRef = React.useRef<PaneMode | null>(null);\n const hasLeftInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = shell.leftMode;\n\n if (!shell.currentBreakpointReady) {\n prevLeftModeForCallbackRef.current = currentMode;\n return;\n }\n\n if (!hasLeftInitializedRef.current) {\n hasLeftInitializedRef.current = true;\n prevLeftModeForCallbackRef.current = currentMode;\n return;\n }\n\n const prevMode = prevLeftModeForCallbackRef.current;\n\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevLeftModeForCallbackRef.current = currentMode;\n }\n }, [shell.leftMode, shell.currentBreakpointReady]);\n\n const _isExpanded = shell.leftMode === 'expanded';\n\n // Left is not resizable; width derives from Rail/Panel.\n\n if (isOverlay) {\n const open = shell.leftMode === 'expanded';\n // Compute overlay width from child Rail/Panel expanded sizes\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const railEl = childArray.find((el) => isShellComponentType(el, Rail));\n const panelEl = childArray.find((el) => isShellComponentType(el, Panel));\n const railSize = typeof (railEl as any)?.props?.expandedSize === 'number' ? (railEl as any).props.expandedSize : 64;\n const panelSize = typeof (panelEl as any)?.props?.expandedSize === 'number' ? (panelEl as any).props.expandedSize : 288;\n const hasRail = Boolean(railEl);\n const hasPanel = Boolean(panelEl);\n const overlayPx = (hasRail ? railSize : 0) + (shell.panelMode === 'expanded' && hasPanel ? panelSize : 0);\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setLeftMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n aria-label=\"Navigation\"\n aria-describedby={undefined}\n width={{\n initial: `${overlayPx}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n <div className=\"rt-ShellLeft\">{children}</div>\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n if (isStacked) {\n const open = shell.leftMode === 'expanded';\n // Compute floating width from child Rail/Panel expanded sizes (like overlay)\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const railEl = childArray.find((el) => isShellComponentType(el, Rail));\n const panelEl = childArray.find((el) => isShellComponentType(el, Panel));\n const _railSize = typeof (railEl as any)?.props?.expandedSize === 'number' ? (railEl as any).props.expandedSize : 64;\n const _panelSize = typeof (panelEl as any)?.props?.expandedSize === 'number' ? (panelEl as any).props.expandedSize : 288;\n const _hasRail = Boolean(railEl);\n const _hasPanel = Boolean(panelEl);\n const _includePanel = _hasPanel && (shell.panelMode === 'expanded' || shell.peekTarget === 'panel');\n\n // Strip control props from DOM spread\n return (\n <div\n {...domProps}\n ref={setRef}\n className={classNames('rt-ShellLeft', className)}\n data-mode={shell.leftMode}\n data-peek={shell.peekTarget === 'left' || shell.peekTarget === 'rail' || shell.peekTarget === 'panel' || undefined}\n data-presentation={resolvedPresentation}\n data-inset={inset || undefined}\n style={{\n ...style,\n }}\n data-open={open || undefined}\n >\n {children}\n </div>\n );\n }\n\n // Strip control/legacy props from DOM spread\n return (\n <div\n {...domProps}\n ref={setRef}\n className={classNames('rt-ShellLeft', className)}\n data-mode={shell.leftMode}\n data-peek={shell.peekTarget === 'left' || shell.peekTarget === 'rail' || shell.peekTarget === 'panel' || undefined}\n data-presentation={resolvedPresentation}\n data-inset={inset || undefined}\n style={{\n ...style,\n }}\n >\n {children}\n </div>\n );\n});\nLeft.displayName = 'Shell.Left';\nassignShellSlot(Left as any, 'Shell.Left');\n\nconst Rail = React.forwardRef<HTMLDivElement, RailProps>((initialProps, ref) => {\n const { className, presentation, expandedSize = 64, collapsible, onExpand, onCollapse, children, style, open, defaultOpen, onOpenChange, inset: _inset, ...domProps } = initialProps;\n const shell = useShell();\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Rail: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n }\n\n // Warn on controlled/uncontrolled mode switch\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Rail: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n // Register expanded size with Left container\n React.useEffect(() => {\n shell.onRailDefaults?.(expandedSize);\n }, [shell, expandedSize]);\n\n const isExpanded = shell.leftMode === 'expanded';\n\n // Strip unknown open/defaultOpen props from DOM by not spreading them\n return (\n <div\n {...domProps}\n ref={ref}\n className={classNames('rt-ShellRail', className)}\n data-mode={shell.leftMode}\n data-peek={(shell.currentBreakpointReady && shell.leftResolvedPresentation !== 'overlay' && shell.peekTarget === 'rail') || undefined}\n style={{\n ...style,\n '--rail-size': `${expandedSize}px`,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellRailContent\" data-visible={(shell.currentBreakpointReady && (isExpanded || (shell.leftResolvedPresentation !== 'overlay' && shell.peekTarget === 'rail'))) || undefined}>\n {children}\n </div>\n </div>\n );\n});\nRail.displayName = 'Shell.Rail';\nassignShellSlot(Rail as any, 'Shell.Rail');\n\n// Panel\ntype HandleComponent = React.ForwardRefExoticComponent<React.ComponentPropsWithoutRef<'div'> & React.RefAttributes<HTMLDivElement>>;\n\ntype PanelOpenChangeMeta = { reason: 'toggle' | 'left' | 'init' | 'responsive' };\ntype PanelControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: PanelOpenChangeMeta) => void; defaultOpen?: never };\ntype PanelUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: PanelOpenChangeMeta) => void; open?: never };\n\ntype PanelSizeControlledProps = { size: number | string; defaultSize?: never };\ntype PanelSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\n\ntype PanelSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype PanelPublicProps = Omit<PaneProps, 'presentation' | 'defaultMode'> &\n (PanelControlledProps | PanelUncontrolledProps) &\n (PanelSizeControlledProps | PanelSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: PanelSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin to Rail+Panel and triggers gray backdrop on Shell. */\n inset?: boolean;\n };\ntype PanelComponent = React.ForwardRefExoticComponent<PanelPublicProps & React.RefAttributes<HTMLDivElement>> & {\n Handle: HandleComponent;\n};\n\ntype _SidebarComponent = React.ForwardRefExoticComponent<\n (Omit<PaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n state?: Responsive<SidebarMode>;\n defaultState?: SidebarMode;\n onStateChange?: (mode: SidebarMode) => void;\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n }) &\n React.RefAttributes<HTMLDivElement>\n> & { Handle: HandleComponent };\n\ntype _InspectorComponent = React.ForwardRefExoticComponent<PaneProps & React.RefAttributes<HTMLDivElement>> & { Handle: HandleComponent };\n\ntype _BottomComponent = React.ForwardRefExoticComponent<PaneProps & React.RefAttributes<HTMLDivElement>> & { Handle: HandleComponent };\n\nconst PANEL_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof PanelPublicProps)[];\n\nconst Panel = assignShellSlot(\n React.forwardRef<HTMLDivElement, PanelPublicProps>((initialProps, ref) => {\n const {\n className,\n defaultOpen,\n open,\n onOpenChange,\n size,\n defaultSize,\n expandedSize = 288,\n minSize,\n maxSize,\n resizable,\n collapsible = true,\n onExpand: _onExpand,\n onCollapse: _onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const panelDomProps = extractPaneDomProps(initialProps, PANEL_DOM_PROP_KEYS);\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useLayoutEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n if (!onSizeChange) return () => {};\n if (sizeUpdate === 'debounce') {\n const fn = (s: number, meta: PanelSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n onSizeChange?.(s, meta);\n debounceTimeoutRef.current = null;\n }, sizeUpdateMs);\n };\n return fn;\n }\n if (sizeUpdate === 'throttle') {\n let last = 0;\n return (s: number, meta: PanelSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= sizeUpdateMs) {\n last = now;\n onSizeChange?.(s, meta);\n }\n };\n }\n return (s: number, meta: PanelSizeChangeMeta) => onSizeChange?.(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n const shell = useShell();\n const prevPanelModeRef = React.useRef<PaneMode | null>(null);\n const prevLeftModeRef = React.useRef<PaneMode | null>(null);\n const lastResolvedPanelControlledRef = React.useRef<PaneMode | undefined>(undefined);\n // Dev-only runtime guard\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Panel: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Panel: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Normalize responsive open/defaultOpen to PaneMode\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n\n // Stable ref for onOpenChange to avoid effect dep churn\n const onOpenChangeRef = React.useRef(onOpenChange);\n React.useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n });\n\n // Use responsive initial state hook for proper breakpoint handling\n const { resolvedControlled: resolvedPanelControlled } = useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: shell.panelMode,\n setValue: (mode) => {\n // Ensure Left is expanded when Panel is expanded unless Rail is controlled closed\n if (mode === 'expanded' && shell.leftMode !== 'expanded' && shell.leftControlledOpen !== false) {\n shell.setLeftMode('expanded');\n }\n shell.setPanelMode(mode);\n },\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChangeRef.current?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof open === 'undefined') {\n onOpenChangeRef.current?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Dev-only warning if switching controlled/uncontrolled between renders\n const wasControlledRef = React.useRef<boolean | null>(null);\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Panel: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n React.useEffect(() => {\n shell.onPanelDefaults?.(expandedSize);\n }, [shell, expandedSize]);\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === PanelHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === PanelHandle));\n\n const isOverlay = shell.leftResolvedPresentation === 'overlay';\n\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'horizontal'), []);\n\n // Derive a default persistence adapter from paneId if none provided\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:panel:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Panel: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Panel: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n // Load persisted size if configured (only in fixed presentation)\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--panel-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // In overlay, ensure panel uses the fixed expandedSize, ignoring any persisted size\n React.useEffect(() => {\n if (!localRef.current) return;\n if (isOverlay) {\n localRef.current.style.setProperty('--panel-size', `${expandedSize}px`);\n }\n }, [isOverlay, expandedSize]);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n // Clamp to min/max if provided\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--panel-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // Intentionally run only on mount - defaultSize is an uncontrolled initial value\n // that should not trigger re-application when props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined') return;\n const px = normalizeSizeToPx(size);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--panel-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [size, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n // Ensure Left container width is auto whenever Panel is expanded in fixed presentation\n React.useEffect(() => {\n if (!localRef.current) return;\n if (shell.leftResolvedPresentation !== 'overlay' && shell.leftMode === 'expanded' && shell.panelMode === 'expanded') {\n const leftEl = (localRef.current.parentElement as HTMLElement) || null;\n try {\n leftEl?.style.removeProperty('width');\n } catch (e) {\n // Style manipulation can fail in edge cases (e.g., detached elements)\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Shell.Panel] Style cleanup warning:', e);\n }\n }\n }\n }, [shell.leftResolvedPresentation, shell.leftMode, shell.panelMode]);\n\n const isExpanded = shell.leftMode === 'expanded' && shell.panelMode === 'expanded';\n\n // Notify on internal toggles and left cascade.\n // In controlled mode, skip when the mode matches the controlled prop (prop-driven sync).\n React.useEffect(() => {\n const prevPanel = prevPanelModeRef.current;\n const prevLeft = prevLeftModeRef.current;\n const prevResolvedControlled = lastResolvedPanelControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedPanelControlled;\n if (prevPanel !== null && prevPanel !== shell.panelMode) {\n const nextOpen = shell.panelMode === 'expanded';\n const isControlled = typeof open !== 'undefined';\n const controlledTarget = resolvedPanelControlled === undefined ? undefined : resolvedPanelControlled === 'expanded';\n\n if (!isControlled || (!controlledChanged && nextOpen !== controlledTarget)) {\n let reason: PanelOpenChangeMeta['reason'] = 'toggle';\n if (prevLeft !== shell.leftMode && shell.leftMode === 'collapsed' && !nextOpen) {\n reason = 'left';\n }\n onOpenChangeRef.current?.(nextOpen, { reason });\n }\n }\n prevPanelModeRef.current = shell.panelMode;\n prevLeftModeRef.current = shell.leftMode;\n lastResolvedPanelControlledRef.current = resolvedPanelControlled;\n }, [shell.panelMode, shell.leftMode, open, resolvedPanelControlled]);\n\n // Provide resizer handle when fixed (not overlay)\n const handleEl =\n resizable && shell.leftResolvedPresentation !== 'overlay' && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--panel-size',\n minSize: typeof minSize === 'number' ? minSize : 100,\n maxSize: typeof maxSize === 'number' ? maxSize : 800,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart: (size) => {\n // Ensure Left container is not stuck with a fixed width in stacked\n const panelEl = localRef.current as HTMLElement | null;\n const leftEl = panelEl?.parentElement as HTMLElement | null;\n try {\n leftEl?.style.removeProperty('width');\n } catch (e) {\n // Style manipulation can fail in edge cases\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Shell.Panel] Resize start style cleanup warning:', e);\n }\n }\n onResizeStart?.(size);\n },\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'panel',\n collapsible: Boolean(collapsible),\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setPanelMode('collapsed'),\n requestToggle: () => shell.togglePane('panel'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n return (\n <div\n {...panelDomProps}\n ref={setRef}\n className={classNames('rt-ShellPanel', className)}\n data-mode={shell.panelMode}\n data-visible={(shell.currentBreakpointReady && (isExpanded || (shell.leftResolvedPresentation !== 'overlay' && shell.peekTarget === 'panel'))) || undefined}\n data-peek={(shell.currentBreakpointReady && shell.leftResolvedPresentation !== 'overlay' && shell.peekTarget === 'panel') || undefined}\n style={{\n ...style,\n '--panel-size': `${expandedSize}px`,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellPanelContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n }),\n 'Shell.Panel',\n) as PanelComponent;\nPanel.displayName = 'Shell.Panel';\nPanel.Handle = PanelHandle;\n\n// Sidebar moved to ./_internal/shell-sidebar\n\n// Content (always required)\ninterface ShellContentProps extends React.ComponentPropsWithoutRef<'main'> {\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n}\n\nconst Content = React.forwardRef<HTMLElement, ShellContentProps>(({ className, inset, ...props }, ref) => {\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useEffect(() => {\n if (inset) {\n registerInset('content');\n return () => unregisterInset('content');\n }\n }, [inset, registerInset, unregisterInset]);\n\n return <main {...props} ref={ref} className={classNames('rt-ShellContent', className)} data-inset={inset || undefined} />;\n});\nContent.displayName = 'Shell.Content';\nassignShellSlot(Content as any, 'Shell.Content');\n\n// Inspector moved to ./_internal/shell-inspector\n\n// Bottom\n// Bottom moved to ./_internal/shell-bottom\n// (Bottom implementation extracted)\n\n// Trigger\n// PaneTarget type moved to shell.types.ts\ntype TriggerAction = 'toggle' | 'expand' | 'collapse';\n\ninterface TriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n target: PaneTarget;\n action?: TriggerAction;\n /**\n * Whether to show peek preview on hover when the target pane is collapsed.\n * Defaults to false.\n */\n peekOnHover?: boolean;\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, TriggerProps>(({ target, action = 'toggle', peekOnHover, onClick, onMouseEnter, onMouseLeave, children, ...props }, ref) => {\n // Slice hooks \u2014 Trigger only re-renders when its target pane's slice changes,\n // not on every unrelated shell state update (peek, composition, presentation, etc.)\n const { leftMode } = useLeftMode();\n const { panelMode } = usePanelMode();\n const { sidebarMode } = useSidebarMode();\n const { inspectorMode } = useInspectorMode();\n const { bottomMode } = useBottomMode();\n const { peekTarget, clearPeek, peekPane } = usePeek();\n const { togglePane, expandPane, collapsePane } = useShellActions();\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n // Clear any active peek on this target before toggling to avoid sticky peek state\n if (peekTarget === target) {\n clearPeek();\n }\n\n switch (action) {\n case 'toggle':\n togglePane(target);\n break;\n case 'expand':\n expandPane(target);\n break;\n case 'collapse':\n collapsePane(target);\n break;\n }\n },\n [peekTarget, clearPeek, togglePane, expandPane, collapsePane, target, action, onClick],\n );\n\n const isCollapsed = (() => {\n switch (target) {\n case 'left':\n case 'rail':\n return leftMode === 'collapsed';\n case 'panel':\n return leftMode === 'collapsed' || panelMode === 'collapsed';\n case 'sidebar':\n return sidebarMode === 'collapsed';\n case 'inspector':\n return inspectorMode === 'collapsed';\n case 'bottom':\n return bottomMode === 'collapsed';\n }\n })();\n\n const handleMouseEnter = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(event);\n if (!peekOnHover || !isCollapsed) return;\n peekPane(target);\n },\n [onMouseEnter, peekOnHover, isCollapsed, peekPane, target],\n );\n\n const handleMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseLeave?.(event);\n if (!peekOnHover) return;\n if (peekTarget === target) {\n clearPeek();\n }\n },\n [onMouseLeave, peekOnHover, peekTarget, clearPeek, target],\n );\n\n return (\n <button\n {...props}\n ref={ref}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n data-shell-trigger={target}\n data-shell-action={action}\n aria-expanded={!isCollapsed}\n >\n {children}\n </button>\n );\n});\nTrigger.displayName = 'Shell.Trigger';\n\n// Exports\nexport {\n Root,\n Header,\n Left,\n Rail,\n Panel,\n Sidebar,\n Content,\n Inspector,\n Bottom,\n Trigger,\n useShell,\n useSidebarMode,\n useResponsivePresentation,\n type PaneMode,\n type SidebarMode,\n type ResponsivePresentation,\n type PaneTarget,\n type TriggerAction,\n};\n", "'use client';\n\n/**\n * Sheet\n *\n * A side-placed overlay built on top of Radix Dialog. It inherits accessibility,\n * focus management, overlay behavior, and sizing scales from the base dialog, and\n * adds side placement and slide motion suited for navigation panels and drawers.\n *\n * Structure mirrors Dialog:\n * - Root, Trigger, Content, Title, Description, Close\n *\n * Notes\n * - Side: set with `side` on `Sheet.Content`. Aliases: `left` \u2192 `start`, `right` \u2192 `end`.\n * - Sizing: reuses Dialog content prop defs (width/min/max/height/size). Default Dialog\n * maxWidth clamping is removed for Sheets.\n * - Material: use `material` (solid | translucent). Deprecated `panelBackground` falls back\n * in dev with a warning.\n * - A11y: provide an accessible name via `Sheet.Title` or `aria-label` on `Sheet.Content`.\n *\n * Example\n * <Sheet.Root>\n * <Sheet.Trigger>\n * <Button>Open</Button>\n * </Sheet.Trigger>\n * <Sheet.Content side=\"end\" width={{ initial: '280px', md: '360px' }}>\n * <Sheet.Title>Details</Sheet.Title>\n * ...\n * <Sheet.Close>\n * <Button>Close</Button>\n * </Sheet.Close>\n * </Sheet.Content>\n * </Sheet.Root>\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport { Theme } from './theme.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { HeadingProps } from './heading.js';\n\n/**\n * Supported sides for the Sheet.\n * Aliases are normalized RTL-aware: `left` \u2192 `start`, `right` \u2192 `end`.\n */\ntype SheetSide = 'start' | 'end' | 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Sheet is a side-placed overlay built on the Dialog primitive.\n * It reuses Dialog's accessibility, focus, overlay, and size scales, while adding side placement and slide motion.\n */\n\n// Root\n/**\n * Props for `Sheet.Root` (Radix Dialog root with `modal` forced on).\n */\ninterface SheetRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst Root: React.FC<SheetRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nRoot.displayName = 'Sheet.Root';\n\n// Trigger\n/** Element type for `Sheet.Trigger`. */\ntype SheetTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\n/** Props for `Sheet.Trigger` (expects a single element child). */\ninterface SheetTriggerProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst Trigger = React.forwardRef<SheetTriggerElement, SheetTriggerProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Trigger {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n ),\n);\nTrigger.displayName = 'Sheet.Trigger';\n\n// Content\n/** Element type for `Sheet.Content`. */\ntype SheetContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface SheetContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n DialogContentOwnProps {\n /** Side where the Sheet should appear. `left`/`right` alias to `start`/`end`. */\n side?: SheetSide;\n /** Optional DOM container to portal into. Defaults to `document.body`. */\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\n\n/**\n * Renders the Sheet panel. Normalizes left/right to logical start/end and\n * forwards dialog sizing props. Provide an accessible name via `Sheet.Title`\n * or `aria-label`.\n */\nconst Content = React.forwardRef<SheetContentElement, SheetContentProps>(\n (allProps, forwardedRef) => {\n const {\n side = 'start',\n forceMount,\n container,\n className,\n panelBackground: panelBackgroundProp,\n material: materialProp,\n ...restProps\n } = allProps;\n const normalizedSideMap: Record<SheetSide, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n start: 'start',\n end: 'end',\n top: 'top',\n bottom: 'bottom',\n };\n const normalizedSide = normalizedSideMap[side];\n // Reuse dialog content prop defs for size/width/height tokens, but handle\n // material/panelBackground explicitly to avoid forwarding unknown DOM props.\n const {\n align: _alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = dialogContentPropDefs;\n\n // Extract panelBackground and material together (remove from DOM props)\n const { panelBackground: resolvedPanelBackground, material: resolvedMaterial } = extractProps(\n { panelBackground: panelBackgroundProp, material: materialProp },\n { panelBackground: panelBackgroundPropDef, material: materialPropDef },\n );\n\n const materialValue = React.useMemo(() => {\n if (resolvedPanelBackground !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use the `material` prop instead.',\n );\n }\n }\n return resolvedMaterial ?? resolvedPanelBackground;\n }, [resolvedMaterial, resolvedPanelBackground]);\n\n // Now extract remaining props using dialog defs so size/width/height classnames are applied\n // Override dialog's default maxWidth (600px) to avoid clamping Sheet by default\n // Match dialog.tsx: extract once and avoid leaking panel/material\n const { default: _mwDefault, ...maxWidthWithoutDefault } = propDefs.maxWidth;\n const sheetPropDefs = {\n ...propDefs,\n maxWidth: maxWidthWithoutDefault,\n } as typeof propDefs;\n const { className: extractedClassName, ...contentProps } = extractProps(\n restProps,\n sheetPropDefs,\n );\n\n // Dev-only a11y guard: ensure label is provided via Title or aria-label\n if (process.env.NODE_ENV !== 'production') {\n const children = (contentProps as any).children as React.ReactNode;\n const hasAriaLabel = typeof (contentProps as any)['aria-label'] === 'string';\n let hasTitle = false;\n if (children) {\n for (const child of React.Children.toArray(children)) {\n if (React.isValidElement(child) && child.type === Title) {\n hasTitle = true;\n break;\n }\n }\n }\n if (!hasTitle && !hasAriaLabel) {\n console.warn(\n 'Sheet.Content: Missing accessible name. Include Sheet.Title as a child or provide aria-label.',\n );\n }\n }\n\n // Focus management and stuck pointer-events cleanup like Dialog\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useMemo(\n () => (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [forwardedRef],\n );\n\n useBodyPointerEventsCleanup();\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const content = contentRef.current;\n if (!content) return;\n\n const focusableElements = content.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n };\n\n content.addEventListener('keydown', handleKeyDown);\n firstElement.focus();\n\n return () => {\n content.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return (\n <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay rt-SheetOverlay\">\n <DialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames(\n 'rt-BaseDialogContent',\n 'rt-SheetContent',\n className,\n extractedClassName,\n )}\n data-side={normalizedSide}\n data-material={materialValue}\n data-panel-background={materialValue}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n />\n </DialogPrimitive.Overlay>\n </Theme>\n </DialogPrimitive.Portal>\n );\n },\n);\nContent.displayName = 'Sheet.Content';\n\n// Title - renders as Heading with sensible defaults\ntype SheetTitleElement = React.ElementRef<typeof Heading>;\ntype SheetTitleProps = HeadingProps;\n/** Accessible title for the Sheet. Renders as Heading with sensible defaults. */\nconst Title = React.forwardRef<SheetTitleElement, SheetTitleProps>(\n ({ size = '4', weight = 'medium', ...props }, ref) => (\n <DialogPrimitive.Title asChild>\n <Heading ref={ref} size={size} weight={weight} {...props} />\n </DialogPrimitive.Title>\n ),\n);\nTitle.displayName = 'Sheet.Title';\n\n// Description - renders as Text with sensible defaults\ntype SheetDescriptionElement = React.ElementRef<typeof Text>;\ntype SheetDescriptionProps = React.ComponentPropsWithoutRef<typeof Text>;\n/** Supplementary description text for Sheet content. Renders as Text with sensible defaults. */\nconst Description = React.forwardRef<SheetDescriptionElement, SheetDescriptionProps>(\n ({ size = '2', color = 'gray', ...rest }, ref) => (\n <DialogPrimitive.Description asChild>\n <Text ref={ref} size={size} color={color} {...rest} />\n </DialogPrimitive.Description>\n ),\n);\nDescription.displayName = 'Sheet.Description';\n\ntype SheetCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface SheetCloseProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\n/** Close button for the Sheet. Expects a single element child rendered via `asChild`. */\nconst Close = React.forwardRef<SheetCloseElement, SheetCloseProps>(\n ({ children, ...props }, ref) => (\n <DialogPrimitive.Close {...props} ref={ref} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n ),\n);\nClose.displayName = 'Sheet.Close';\n\nexport { Root, Trigger, Content, Title, Description, Close };\nexport type {\n SheetRootProps as RootProps,\n SheetTriggerProps as TriggerProps,\n SheetContentProps as ContentProps,\n SheetTitleProps as TitleProps,\n SheetDescriptionProps as DescriptionProps,\n SheetCloseProps as CloseProps,\n};\n", "import * as React from 'react';\nimport type { Breakpoint, PresentationValue, ResponsivePresentation } from './shell.types.js';\nimport { _BREAKPOINTS } from './shell.types.js';\nimport { useShell } from './shell.context.js';\n\nfunction useResponsivePresentation(presentation: ResponsivePresentation): PresentationValue {\n const { currentBreakpoint } = useShell();\n\n return React.useMemo(() => {\n if (typeof presentation === 'string') {\n return presentation;\n }\n\n if (presentation[currentBreakpoint]) {\n return presentation[currentBreakpoint]!;\n }\n\n const bpKeys = Object.keys(_BREAKPOINTS) as Array<keyof typeof _BREAKPOINTS>;\n const order: Breakpoint[] = ([...bpKeys].reverse() as Breakpoint[]).concat('initial' as Breakpoint);\n const startIdx = order.indexOf(currentBreakpoint as Breakpoint);\n\n for (let i = startIdx + 1; i < order.length; i++) {\n const bp = order[i];\n if (presentation[bp]) {\n return presentation[bp]!;\n }\n }\n\n return 'fixed';\n }, [presentation, currentBreakpoint]);\n}\n\n/**\n * Resolve a responsive value (T or responsive map keyed by breakpoints) against the current Shell breakpoint.\n * If no value is defined for the current breakpoint, search smaller breakpoints down to 'initial'.\n * Returns undefined when passed a responsive map with no matching key across the chain.\n */\nfunction useResponsiveValue<T>(value: T | Partial<Record<Breakpoint, T>> | undefined): T | undefined {\n const { currentBreakpoint } = useShell();\n\n return React.useMemo(() => {\n if (value == null) return undefined;\n // Primitive value\n if (typeof value !== 'object') {\n return value as T;\n }\n\n const map = value as Partial<Record<Breakpoint, T>>;\n if (map[currentBreakpoint as Breakpoint] !== undefined) {\n return map[currentBreakpoint as Breakpoint] as T;\n }\n\n const bpKeys = Object.keys(_BREAKPOINTS) as Array<keyof typeof _BREAKPOINTS>;\n const order: Breakpoint[] = ([...bpKeys].reverse() as Breakpoint[]).concat('initial' as Breakpoint);\n const startIdx = order.indexOf(currentBreakpoint as Breakpoint);\n\n for (let i = startIdx + 1; i < order.length; i++) {\n const bp = order[i];\n if (map[bp] !== undefined) {\n return map[bp] as T;\n }\n }\n\n return undefined;\n }, [value, currentBreakpoint]);\n}\n\ntype ResponsiveStateValue<T> = T | Partial<Record<Breakpoint, T>>;\n\ninterface UseResponsiveInitialStateOptions<T> {\n controlledValue?: ResponsiveStateValue<T>;\n defaultValue?: ResponsiveStateValue<T>;\n currentValue: T;\n setValue: (value: T) => void;\n breakpointReady: boolean;\n onInit?: (value: T) => void;\n onResponsiveChange?: (value: T) => void;\n controlledIsResponsive?: boolean;\n}\n\ninterface UseResponsiveInitialStateResult<T> {\n resolvedControlled?: T;\n resolvedDefault?: T;\n}\n\nfunction useResponsiveInitialState<T>({\n controlledValue,\n defaultValue,\n currentValue,\n setValue,\n breakpointReady,\n onInit,\n onResponsiveChange,\n controlledIsResponsive = false,\n}: UseResponsiveInitialStateOptions<T>): UseResponsiveInitialStateResult<T> {\n const resolvedControlled = useResponsiveValue(controlledValue);\n const resolvedDefault = useResponsiveValue(defaultValue);\n\n const lastControlledRef = React.useRef<T | undefined>(undefined);\n const pendingSyncRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const latestControlledRef = React.useRef<T | undefined>(resolvedControlled);\n const latestValueRef = React.useRef(currentValue);\n const setValueRef = React.useRef(setValue);\n\n React.useLayoutEffect(() => {\n latestControlledRef.current = resolvedControlled;\n latestValueRef.current = currentValue;\n setValueRef.current = setValue;\n });\n\n React.useEffect(() => {\n if (resolvedControlled === undefined) return;\n\n const prevControlled = lastControlledRef.current;\n const controlledChanged = prevControlled !== resolvedControlled;\n lastControlledRef.current = resolvedControlled;\n\n if (currentValue === resolvedControlled) {\n if (pendingSyncRef.current) {\n clearTimeout(pendingSyncRef.current);\n pendingSyncRef.current = null;\n }\n if (controlledIsResponsive) {\n onResponsiveChange?.(resolvedControlled);\n }\n return;\n }\n\n if (controlledChanged) {\n if (pendingSyncRef.current) {\n clearTimeout(pendingSyncRef.current);\n pendingSyncRef.current = null;\n }\n setValue(resolvedControlled);\n if (controlledIsResponsive) {\n onResponsiveChange?.(resolvedControlled);\n }\n return;\n }\n\n if (!pendingSyncRef.current) {\n pendingSyncRef.current = setTimeout(() => {\n pendingSyncRef.current = null;\n const latestControlled = latestControlledRef.current;\n const latestValue = latestValueRef.current;\n if (latestControlled === undefined) return;\n if (latestValue === latestControlled) return;\n setValueRef.current(latestControlled);\n }, 0);\n }\n }, [resolvedControlled, currentValue, setValue, onResponsiveChange, controlledIsResponsive]);\n\n React.useEffect(() => {\n return () => {\n if (pendingSyncRef.current) {\n clearTimeout(pendingSyncRef.current);\n pendingSyncRef.current = null;\n }\n };\n }, []);\n\n const didInitRef = React.useRef(false);\n React.useEffect(() => {\n if (didInitRef.current) return;\n if (!breakpointReady) return;\n if (typeof controlledValue !== 'undefined') return;\n if (resolvedDefault === undefined) return;\n didInitRef.current = true;\n if (currentValue !== resolvedDefault) {\n setValue(resolvedDefault);\n }\n onInit?.(resolvedDefault);\n }, [breakpointReady, controlledValue, resolvedDefault, currentValue, setValue, onInit]);\n\n return { resolvedControlled, resolvedDefault };\n}\n\nexport { useResponsivePresentation, useResponsiveValue, useResponsiveInitialState };\n", "import * as React from 'react';\nimport type { Breakpoint, PresentationValue, SidebarMode, PaneMode, PaneTarget } from './shell.types.js';\n\nexport interface ShellContextValue {\n // Pane states\n leftMode: PaneMode;\n setLeftMode: (mode: PaneMode) => void;\n /** When Rail is controlled, this reflects the resolved open state for the current breakpoint. */\n leftControlledOpen?: boolean;\n panelMode: PaneMode; // Panel state within left container\n setPanelMode: (mode: PaneMode) => void;\n sidebarMode: SidebarMode;\n setSidebarMode: (mode: SidebarMode) => void;\n inspectorMode: PaneMode;\n setInspectorMode: (mode: PaneMode) => void;\n bottomMode: PaneMode;\n setBottomMode: (mode: PaneMode) => void;\n\n // Peek state (layout-only, ephemeral)\n peekTarget: PaneTarget | null;\n setPeekTarget: (target: PaneTarget | null) => void;\n peekPane: (target: PaneTarget) => void;\n clearPeek: () => void;\n\n // Composition detection\n hasLeft: boolean;\n setHasLeft: (has: boolean) => void;\n hasSidebar: boolean;\n setHasSidebar: (has: boolean) => void;\n\n // Presentation resolution\n currentBreakpoint: Breakpoint;\n currentBreakpointReady: boolean;\n leftResolvedPresentation?: PresentationValue;\n\n // Actions\n togglePane: (target: PaneTarget) => void;\n expandPane: (target: PaneTarget) => void;\n collapsePane: (target: PaneTarget) => void;\n // Toggle customization\n setSidebarToggleComputer?: (fn: (current: SidebarMode) => SidebarMode) => void;\n // Dev-only hooks for presentation warnings\n onLeftPres?: (p: PresentationValue) => void;\n // Sizing info for overlay grouping\n onLeftDefaults?: (size: number) => void;\n onRailDefaults?: (size: number) => void;\n onPanelDefaults?: (size: number) => void;\n}\n\nconst ShellContext = React.createContext<ShellContextValue | null>(null);\n\n/** @internal Shell root context. Prefer slice hooks (useSidebarMode, useShellActions, etc.). */\nexport function useShell() {\n const ctx = React.useContext(ShellContext);\n if (!ctx) throw new Error('Shell components must be used within <Shell.Root>');\n return ctx;\n}\n\nexport function ShellProvider({ value, children }: { value: ShellContextValue; children: React.ReactNode }) {\n return <ShellContext.Provider value={value}>{children}</ShellContext.Provider>;\n}\n\n// Phase 7: Split contexts for render isolation\n\n// Pane mode slice contexts\ntype ModeSetter<T> = (mode: T) => void;\n\nexport const LeftModeContext = React.createContext<{ leftMode: PaneMode; setLeftMode: ModeSetter<PaneMode> } | null>(null);\nexport function useLeftMode() {\n const ctx = React.useContext(LeftModeContext);\n if (!ctx) throw new Error('useLeftMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const PanelModeContext = React.createContext<{ panelMode: PaneMode; setPanelMode: ModeSetter<PaneMode> } | null>(null);\nexport function usePanelMode() {\n const ctx = React.useContext(PanelModeContext);\n if (!ctx) throw new Error('usePanelMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const SidebarModeContext = React.createContext<{ sidebarMode: SidebarMode; setSidebarMode: ModeSetter<SidebarMode> } | null>(null);\nexport function useSidebarMode() {\n const ctx = React.useContext(SidebarModeContext);\n if (!ctx) throw new Error('useSidebarMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const InspectorModeContext = React.createContext<{ inspectorMode: PaneMode; setInspectorMode: ModeSetter<PaneMode> } | null>(null);\nexport function useInspectorMode() {\n const ctx = React.useContext(InspectorModeContext);\n if (!ctx) throw new Error('useInspectorMode must be used within Shell.Root');\n return ctx;\n}\n\nexport const BottomModeContext = React.createContext<{ bottomMode: PaneMode; setBottomMode: ModeSetter<PaneMode> } | null>(null);\nexport function useBottomMode() {\n const ctx = React.useContext(BottomModeContext);\n if (!ctx) throw new Error('useBottomMode must be used within Shell.Root');\n return ctx;\n}\n\n// Presentation slice\nexport const PresentationContext = React.createContext<{ currentBreakpoint: Breakpoint; currentBreakpointReady: boolean; leftResolvedPresentation?: PresentationValue } | null>(null);\nexport function usePresentation() {\n const ctx = React.useContext(PresentationContext);\n if (!ctx) throw new Error('usePresentation must be used within Shell.Root');\n return ctx;\n}\n\n// Peek slice\nexport const PeekContext = React.createContext<{ peekTarget: PaneTarget | null; setPeekTarget: (t: PaneTarget | null) => void; peekPane: (t: PaneTarget) => void; clearPeek: () => void } | null>(\n null,\n);\nexport function usePeek() {\n const ctx = React.useContext(PeekContext);\n if (!ctx) throw new Error('usePeek must be used within Shell.Root');\n return ctx;\n}\n\n// Actions slice (stable callbacks)\nexport const ActionsContext = React.createContext<{\n togglePane: (t: PaneTarget) => void;\n expandPane: (t: PaneTarget) => void;\n collapsePane: (t: PaneTarget) => void;\n setSidebarToggleComputer?: (fn: (current: SidebarMode) => SidebarMode) => void;\n} | null>(null);\nexport function useShellActions() {\n const ctx = React.useContext(ActionsContext);\n if (!ctx) throw new Error('useShellActions must be used within Shell.Root');\n return ctx;\n}\n\n// Composition slice\nexport const CompositionContext = React.createContext<{ hasLeft: boolean; setHasLeft: (v: boolean) => void; hasSidebar: boolean; setHasSidebar: (v: boolean) => void } | null>(null);\nexport function useComposition() {\n const ctx = React.useContext(CompositionContext);\n if (!ctx) throw new Error('useComposition must be used within Shell.Root');\n return ctx;\n}\n\n// Inset slice - tracks which panes have inset for gray backdrop\nexport type InsetPaneId = 'left' | 'sidebar' | 'content' | 'inspector' | 'bottom';\nexport const InsetContext = React.createContext<{\n insetPanes: Set<InsetPaneId>;\n registerInset: (id: InsetPaneId) => void;\n unregisterInset: (id: InsetPaneId) => void;\n hasAnyInset: boolean;\n} | null>(null);\nexport function useInset() {\n const ctx = React.useContext(InsetContext);\n if (!ctx) throw new Error('useInset must be used within Shell.Root');\n return ctx;\n}\n", "import * as React from 'react';\n\nexport interface PaneResizeContextValue {\n containerRef: React.RefObject<HTMLDivElement | null>;\n cssVarName: string;\n minSize: number;\n maxSize: number;\n defaultSize: number;\n orientation: 'vertical' | 'horizontal';\n edge: 'start' | 'end';\n computeNext: (clientPos: number, startClientPos: number, startSize: number) => number;\n onResize?: (size: number) => void;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n target: 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n collapsible: boolean;\n snapPoints?: number[];\n snapTolerance: number;\n collapseThreshold?: number;\n requestCollapse?: () => void;\n requestToggle?: () => void;\n}\n\nexport const PaneResizeContext = React.createContext<PaneResizeContextValue | null>(null);\n\nexport function usePaneResize() {\n const ctx = React.useContext(PaneResizeContext);\n if (!ctx) throw new Error('Shell.Handle must be used within a resizable pane');\n return ctx;\n}\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { usePaneResize } from './shell-resize.js';\n\nexport const PaneHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(({ className, children, ...props }, ref) => {\n const {\n containerRef,\n cssVarName,\n minSize,\n maxSize,\n defaultSize,\n orientation,\n edge,\n computeNext,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n collapsible,\n target,\n requestCollapse,\n requestToggle,\n } = usePaneResize();\n\n const activeCleanupRef = React.useRef<(() => void) | null>(null);\n React.useEffect(\n () => () => {\n try {\n activeCleanupRef.current?.();\n } catch {}\n activeCleanupRef.current = null;\n },\n [],\n );\n\n const ariaOrientation = orientation;\n\n // Generate accessible label from target\n const targetLabel = target.charAt(0).toUpperCase() + target.slice(1);\n const ariaLabel = `Resize ${targetLabel} pane`;\n\n return (\n <div\n {...props}\n ref={ref}\n className={classNames('rt-ShellResizer', className)}\n data-orientation={orientation}\n data-edge={edge}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-orientation={ariaOrientation}\n aria-valuemin={minSize}\n aria-valuemax={maxSize}\n aria-valuenow={defaultSize}\n tabIndex={0}\n onPointerDown={(e) => {\n if (!containerRef.current) return;\n e.preventDefault();\n const container = containerRef.current;\n const handleEl = e.currentTarget as HTMLElement;\n const pointerId = e.pointerId;\n try {\n activeCleanupRef.current?.();\n } catch {}\n container.setAttribute('data-resizing', '');\n try {\n handleEl.setPointerCapture(pointerId);\n } catch {}\n const startClient = orientation === 'vertical' ? e.clientX : e.clientY;\n const startSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const body = document.body;\n const prevCursor = body.style.cursor;\n const prevUserSelect = body.style.userSelect;\n body.style.cursor = orientation === 'vertical' ? 'col-resize' : 'row-resize';\n body.style.userSelect = 'none';\n onResizeStart?.(startSize);\n const handleMove = (ev: PointerEvent) => {\n const client = orientation === 'vertical' ? ev.clientX : ev.clientY;\n const next = clamp(computeNext(client, startClient, startSize));\n container.style.setProperty(cssVarName, `${next}px`);\n handleEl.setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n };\n const cleanup = () => {\n try {\n handleEl.releasePointerCapture(pointerId);\n } catch {}\n window.removeEventListener('pointermove', handleMove as EventListener);\n document.removeEventListener('pointermove', handleMove as EventListener);\n window.removeEventListener('mousemove', handleMove as EventListener);\n document.removeEventListener('mousemove', handleMove as EventListener);\n handleEl.removeEventListener('pointermove', handleMove as EventListener);\n window.removeEventListener('pointerup', handleUp as EventListener);\n document.removeEventListener('pointerup', handleUp as EventListener);\n window.removeEventListener('mouseup', handleUp as EventListener);\n document.removeEventListener('mouseup', handleUp as EventListener);\n window.removeEventListener('pointercancel', handleUp as EventListener);\n document.removeEventListener('pointercancel', handleUp as EventListener);\n window.removeEventListener('keydown', handleKey as EventListener);\n handleEl.removeEventListener('lostpointercapture', handleUp as EventListener);\n container.removeAttribute('data-resizing');\n body.style.cursor = prevCursor;\n body.style.userSelect = prevUserSelect;\n activeCleanupRef.current = null;\n };\n const handleUp = () => {\n const finalSize = parseFloat(getComputedStyle(container).getPropertyValue(cssVarName) || `${defaultSize}`);\n let snapped = finalSize;\n if (snapPoints && snapPoints.length) {\n const nearest = snapPoints.reduce((acc, p) => (Math.abs(p - finalSize) < Math.abs(acc - finalSize) ? p : acc), snapPoints[0]);\n if (Math.abs(nearest - finalSize) <= (snapTolerance ?? 8)) {\n snapped = nearest;\n container.style.setProperty(cssVarName, `${snapped}px`);\n handleEl.setAttribute('aria-valuenow', String(snapped));\n onResize?.(snapped);\n }\n }\n if (collapsible && typeof collapseThreshold === 'number' && finalSize <= collapseThreshold) {\n requestCollapse?.();\n }\n onResizeEnd?.(snapped);\n cleanup();\n };\n const handleKey = (kev: KeyboardEvent) => {\n if (kev.key === 'Escape') {\n container.style.setProperty(cssVarName, `${startSize}px`);\n handleEl.setAttribute('aria-valuenow', String(startSize));\n onResizeEnd?.(startSize);\n cleanup();\n }\n };\n window.addEventListener('pointermove', handleMove as EventListener);\n document.addEventListener('pointermove', handleMove as EventListener);\n // Fallbacks for environments that don't fully support PointerEvent on window\n window.addEventListener('mousemove', handleMove as EventListener);\n document.addEventListener('mousemove', handleMove as EventListener);\n handleEl.addEventListener('pointermove', handleMove as EventListener);\n window.addEventListener('pointerup', handleUp as EventListener);\n document.addEventListener('pointerup', handleUp as EventListener);\n window.addEventListener('mouseup', handleUp as EventListener);\n document.addEventListener('mouseup', handleUp as EventListener);\n window.addEventListener('pointercancel', handleUp as EventListener);\n document.addEventListener('pointercancel', handleUp as EventListener);\n window.addEventListener('keydown', handleKey as EventListener);\n handleEl.addEventListener('lostpointercapture', handleUp as EventListener);\n activeCleanupRef.current = cleanup;\n }}\n onDoubleClick={() => {\n if (collapsible) requestToggle?.();\n }}\n onKeyDown={(e) => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n const rawCurrent = getComputedStyle(container).getPropertyValue(cssVarName);\n const parsedCurrent = Number.parseFloat(rawCurrent.trim());\n const current = Number.isFinite(parsedCurrent) ? parsedCurrent : defaultSize;\n const clamp = (v: number) => Math.min(Math.max(v, minSize), maxSize);\n const step = e.shiftKey ? 32 : 8;\n let delta = 0;\n if (orientation === 'vertical') {\n const docDir = typeof document !== 'undefined' ? document.dir : undefined;\n const cssDir = getComputedStyle(container).direction;\n const hasRtlAncestor = !!(container.closest && container.closest('[dir=\"rtl\"]'));\n const isRtl = docDir === 'rtl' || cssDir === 'rtl' || hasRtlAncestor;\n if (e.key === 'ArrowRight')\n delta = isRtl ? -step : step; // inline-end\n else if (e.key === 'ArrowLeft') delta = isRtl ? step : -step; // inline-start\n } else {\n if (e.key === 'ArrowDown') delta = step;\n else if (e.key === 'ArrowUp') delta = -step;\n }\n if (e.key === 'Home') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(minSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (e.key === 'End') {\n e.preventDefault();\n onResizeStart?.(current);\n const next = clamp(maxSize);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n return;\n }\n if (delta !== 0) {\n e.preventDefault();\n onResizeStart?.(current);\n const signedDelta = orientation === 'vertical' ? (edge === 'start' ? -delta : delta) : delta;\n const next = clamp(current + signedDelta);\n container.style.setProperty(cssVarName, `${next}px`);\n (e.currentTarget as HTMLElement).setAttribute('aria-valuenow', String(next));\n onResize?.(next);\n onResizeEnd?.(next);\n }\n }}\n >\n {children}\n </div>\n );\n});\nPaneHandle.displayName = 'Shell.Handle';\n\nexport const PanelHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nPanelHandle.displayName = 'Shell.Panel.Handle';\n\nexport const SidebarHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nSidebarHandle.displayName = 'Shell.Sidebar.Handle';\n\nexport const InspectorHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nInspectorHandle.displayName = 'Shell.Inspector.Handle';\n\nexport const BottomHandle = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, ref) => <PaneHandle {...props} ref={ref} />);\nBottomHandle.displayName = 'Shell.Bottom.Handle';\n", "import type { Breakpoint, PaneMode } from '../shell.types.js';\n\ntype KeyList<T> = readonly (keyof T)[];\n\nexport function omitPaneProps<T extends object, K extends KeyList<T>>(source: T, keys: K) {\n const omitSet = new Set<keyof T>(keys as readonly (keyof T)[]);\n const result: Partial<T> = {};\n (Object.keys(source) as Array<keyof T>).forEach((key) => {\n if (!omitSet.has(key)) {\n result[key] = source[key];\n }\n });\n return result as Omit<T, K[number]>;\n}\n\nconst PANE_BASE_INTERNAL_PROPS = [\n 'presentation',\n 'expandedSize',\n 'minSize',\n 'maxSize',\n 'resizable',\n 'collapsible',\n 'onExpand',\n 'onCollapse',\n 'onResize',\n 'resizer',\n 'onResizeStart',\n 'onResizeEnd',\n 'snapPoints',\n 'snapTolerance',\n 'collapseThreshold',\n 'paneId',\n 'persistence',\n 'inset',\n] as const;\n\nexport function extractPaneDomProps<T extends object, Extra extends KeyList<T> | undefined = undefined>(source: T, extraKeys?: Extra) {\n const omitKeys = extraKeys ? [...PANE_BASE_INTERNAL_PROPS, ...extraKeys] : [...PANE_BASE_INTERNAL_PROPS];\n return omitPaneProps(source, omitKeys as ReadonlyArray<keyof T>);\n}\n\nexport function mapResponsiveBooleanToPaneMode(value?: boolean | Partial<Record<Breakpoint, boolean>>): PaneMode | Partial<Record<Breakpoint, PaneMode>> | undefined {\n if (value == null) return undefined;\n if (typeof value === 'object') {\n const mapped: Partial<Record<Breakpoint, PaneMode>> = {};\n (Object.entries(value) as Array<[string, boolean]>).forEach(([bp, val]) => {\n if (typeof val === 'boolean') {\n mapped[bp as Breakpoint] = val ? 'expanded' : 'collapsed';\n }\n });\n return mapped;\n }\n return value ? 'expanded' : 'collapsed';\n}\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useSidebarMode, usePresentation, usePeek, useShellActions, useComposition, useInset } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { extractPaneDomProps } from './shell-prop-helpers.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, SidebarMode, Responsive, PaneBaseProps, CSSPropertiesWithVars } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype SidebarPaneProps = PaneBaseProps & {\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n};\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<SidebarPaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst SIDEBAR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'state',\n 'defaultState',\n 'onStateChange',\n 'thinSize',\n 'toggleModes',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n 'inset',\n] as const satisfies readonly (keyof SidebarPublicProps)[];\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n } = initialProps;\n const sidebarDomProps = extractPaneDomProps(initialProps, SIDEBAR_DOM_PROP_KEYS);\n const { sidebarMode, setSidebarMode } = useSidebarMode();\n const { currentBreakpointReady } = usePresentation();\n const { peekTarget } = usePeek();\n const { togglePane, setSidebarToggleComputer } = useShellActions();\n const { setHasSidebar } = useComposition();\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useLayoutEffect(() => {\n if (inset) {\n registerInset('sidebar');\n return () => unregisterInset('sidebar');\n }\n }, [inset, registerInset, unregisterInset]);\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n setHasSidebar(true);\n return () => {\n setHasSidebar(false);\n };\n }, [setHasSidebar, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Stable ref for onStateChange to avoid effect dep churn\n const onStateChangeRef = React.useRef(onStateChange);\n const stateRef = React.useRef(state);\n React.useLayoutEffect(() => {\n onStateChangeRef.current = onStateChange;\n stateRef.current = state;\n });\n\n // Resolve responsive controlled state at top level\n const stateIsResponsive = typeof state === 'object' && state !== null;\n const { resolvedControlled: resolvedSidebarControlled, resolvedDefault: resolvedSidebarDefault } = useResponsiveInitialState<SidebarMode>({\n controlledValue: state,\n defaultValue: defaultState,\n currentValue: sidebarMode as SidebarMode,\n setValue: setSidebarMode,\n breakpointReady: currentBreakpointReady,\n controlledIsResponsive: stateIsResponsive,\n onResponsiveChange: (next) => onStateChangeRef.current?.(next, { reason: 'responsive' }),\n onInit: (initial) => onStateChangeRef.current?.(initial, { reason: 'init' }),\n });\n\n // Emit mode changes. In controlled mode, skip when mode matches the controlled prop.\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n const lastResolvedSidebarControlledRef = React.useRef<SidebarMode | undefined>(undefined);\n React.useEffect(() => {\n const current = sidebarMode as SidebarMode;\n const prevMode = lastNotifyModeRef.current;\n const prevResolvedControlled = lastResolvedSidebarControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedSidebarControlled;\n\n if (prevMode !== null && prevMode !== current) {\n const isControlled = typeof stateRef.current !== 'undefined';\n\n if (!isControlled || (!controlledChanged && current !== resolvedSidebarControlled)) {\n onStateChangeRef.current?.(current, { reason: 'toggle' });\n }\n }\n\n lastNotifyModeRef.current = current;\n lastResolvedSidebarControlledRef.current = resolvedSidebarControlled;\n }, [sidebarMode, resolvedSidebarControlled]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevSidebarModeRef = React.useRef<SidebarMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = sidebarMode as SidebarMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!currentBreakpointReady) {\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevSidebarModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n // onExpand: when becoming visible (collapsed \u2192 thin/expanded)\n if (prevMode === 'collapsed' && currentMode !== 'collapsed') {\n onExpandRef.current?.();\n }\n // onCollapse: when becoming hidden (any \u2192 collapsed)\n else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevSidebarModeRef.current = currentMode;\n }\n }, [sidebarMode, currentBreakpointReady]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = resolvedSidebarDefault ?? (typeof defaultState === 'string' ? defaultState : undefined) ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [resolvedSidebarDefault, defaultState]);\n\n React.useEffect(() => {\n if (!setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n setSidebarToggleComputer(compute);\n return () => {\n setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [setSidebarToggleComputer, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => setSidebarMode('collapsed'),\n requestToggle: () => togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'horizontal'), []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n // Memoize peek styles to avoid IIFE recreation on every render\n const peekStyles = React.useMemo((): CSSPropertiesWithVars | undefined => {\n if (!(peekTarget === 'sidebar' && sidebarMode === 'collapsed' && !isOverlay)) {\n return undefined;\n }\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return { '--peek-sidebar-width': `${thinSize}px` } as CSSPropertiesWithVars;\n }\n return { '--peek-sidebar-width': `var(--sidebar-size, ${expandedSize}px)` } as CSSPropertiesWithVars;\n }, [peekTarget, sidebarMode, isOverlay, toggleModes, resolveDefaultSidebarMode, thinSize, expandedSize]);\n\n if (isOverlay) {\n const open = sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n aria-label=\"Navigation\"\n aria-describedby={undefined}\n width={{\n initial: `${open ? (sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...sidebarDomProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={sidebarMode}\n data-peek={peekTarget === 'sidebar' || undefined}\n data-presentation={currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(currentBreakpointReady && isStacked && isContentVisible) || undefined}\n data-inset={inset || undefined}\n style={{\n ...style,\n '--sidebar-size': `${expandedSize}px`,\n '--sidebar-thin-size': `${thinSize}px`,\n '--sidebar-min-size': `${minSize}px`,\n '--sidebar-max-size': `${maxSize}px`,\n ...peekStyles,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n", "/**\n * Normalize CSS length values to pixels.\n * Supports: px, rem, %, and bare numbers.\n *\n * @param value - The value to normalize (number, string, or undefined)\n * @param orientation - 'horizontal' for width-based % or 'vertical' for height-based %\n * @returns The value in pixels, or undefined if invalid\n */\nexport function normalizeToPx(\n value: number | string | undefined,\n orientation: 'horizontal' | 'vertical' = 'horizontal',\n): number | undefined {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n\n const str = String(value).trim();\n if (!str) return undefined;\n\n // px: direct parse\n if (str.endsWith('px')) return Number.parseFloat(str);\n\n // rem: multiply by root font size\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n\n // %: calculate based on viewport dimension\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base =\n orientation === 'horizontal'\n ? document.documentElement.clientWidth || window.innerWidth || 0\n : document.documentElement.clientHeight || window.innerHeight || 0;\n return (pct / 100) * base;\n }\n\n // Bare number-like string\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n}\n\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useBottomMode, usePresentation, usePeek, useShellActions, useInset } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { BottomHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, PaneBaseProps, CSSPropertiesWithVars } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype BottomOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype BottomControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; defaultOpen?: never };\ntype BottomUncontrolledProps = { defaultOpen?: boolean; onOpenChange?: (open: boolean, meta: BottomOpenChangeMeta) => void; open?: never };\ntype BottomSizeControlledProps = { size: number | string; defaultSize?: never };\ntype BottomSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype BottomSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype BottomPublicProps = PaneBaseProps &\n (BottomControlledProps | BottomUncontrolledProps) &\n (BottomSizeControlledProps | BottomSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: BottomSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n };\n\ntype BottomComponent = React.ForwardRefExoticComponent<BottomPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof BottomHandle };\n\nconst BOTTOM_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n 'inset',\n] as const satisfies readonly (keyof BottomPublicProps)[];\n\nexport const Bottom = React.forwardRef<HTMLDivElement, BottomPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = 'fixed',\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 200,\n minSize = 100,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n inset,\n } = initialProps;\n const bottomDomProps = extractPaneDomProps(initialProps, BOTTOM_DOM_PROP_KEYS);\n const { bottomMode, setBottomMode } = useBottomMode();\n const { currentBreakpointReady } = usePresentation();\n const { peekTarget } = usePeek();\n const { togglePane } = useShellActions();\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useLayoutEffect(() => {\n if (inset) {\n registerInset('bottom');\n return () => unregisterInset('bottom');\n }\n }, [inset, registerInset, unregisterInset]);\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === BottomHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === BottomHandle));\n\n // Stable ref for onOpenChange to avoid effect dep churn\n const onOpenChangeRef = React.useRef(onOpenChange);\n const openRef = React.useRef(open);\n React.useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n openRef.current = open;\n });\n\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n const { resolvedControlled: resolvedBottomControlled } = useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: bottomMode,\n setValue: setBottomMode,\n breakpointReady: currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChangeRef.current?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof openRef.current === 'undefined') {\n onOpenChangeRef.current?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: BottomSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: BottomSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: BottomSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: BottomSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Bottom: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n // Emit mode changes. In controlled mode, skip when mode matches the controlled prop.\n const lastBottomModeRef = React.useRef<PaneMode | null>(null);\n const lastResolvedBottomControlledRef = React.useRef<PaneMode | undefined>(undefined);\n React.useEffect(() => {\n const prevMode = lastBottomModeRef.current;\n const prevResolvedControlled = lastResolvedBottomControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedBottomControlled;\n\n if (prevMode !== null && prevMode !== bottomMode) {\n const nextOpen = bottomMode === 'expanded';\n const isControlled = typeof openRef.current !== 'undefined';\n const controlledTarget = resolvedBottomControlled === undefined ? undefined : resolvedBottomControlled === 'expanded';\n\n if (!isControlled || (!controlledChanged && nextOpen !== controlledTarget)) {\n onOpenChangeRef.current?.(nextOpen, { reason: 'toggle' });\n }\n }\n\n lastBottomModeRef.current = bottomMode;\n lastResolvedBottomControlledRef.current = resolvedBottomControlled;\n }, [bottomMode, resolvedBottomControlled]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevBottomModeRef = React.useRef<PaneMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = bottomMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!currentBreakpointReady) {\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevBottomModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevBottomModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevBottomModeRef.current = currentMode;\n }\n }, [bottomMode, currentBreakpointReady]);\n\n const isExpanded = bottomMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:bottom:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--bottom-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Bottom: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--bottom-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'horizontal',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const delta = client - startClient;\n return startSize - delta;\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'bottom',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => setBottomMode('collapsed'),\n requestToggle: () => togglePane('bottom'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Strip control/size props from DOM spread (moved above overlay return to keep hook order consistent)\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'vertical'), []);\n\n // Apply defaultSize on mount when uncontrolled (moved above overlay return)\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync (moved above overlay return)\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--bottom-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = bottomMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => setBottomMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"bottom\" style={{ padding: 0 }} aria-label=\"Bottom panel\" aria-describedby={undefined} height={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Bottom panel</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n return (\n <div\n {...bottomDomProps}\n ref={setRef}\n className={classNames('rt-ShellBottom', className)}\n data-mode={bottomMode}\n data-peek={peekTarget === 'bottom' || undefined}\n data-presentation={currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(currentBreakpointReady && isStacked && isExpanded) || undefined}\n data-inset={inset || undefined}\n style={{\n ...style,\n '--bottom-size': `${expandedSize}px`,\n '--bottom-min-size': `${minSize}px`,\n '--bottom-max-size': `${maxSize}px`,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellBottomContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as BottomComponent;\nBottom.displayName = 'Shell.Bottom';\nBottom.Handle = BottomHandle;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useInspectorMode, usePresentation, usePeek, useShellActions, useInset } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { InspectorHandle, PaneHandle } from './shell-handles.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, PaneBaseProps, CSSPropertiesWithVars } from '../shell.types.js';\nimport { extractPaneDomProps, mapResponsiveBooleanToPaneMode } from './shell-prop-helpers.js';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\n\ntype InspectorOpenChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype InspectorControlledProps = { open: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; defaultOpen?: never };\ntype InspectorUncontrolledProps = { defaultOpen?: boolean | Partial<Record<Breakpoint, boolean>>; onOpenChange?: (open: boolean, meta: InspectorOpenChangeMeta) => void; open?: never };\ntype InspectorSizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\ntype InspectorSizeControlledProps = { size: number | string; defaultSize?: never };\ntype InspectorSizeUncontrolledProps = { defaultSize?: number | string; size?: never };\ntype InspectorPublicProps = PaneBaseProps &\n (InspectorControlledProps | InspectorUncontrolledProps) &\n (InspectorSizeControlledProps | InspectorSizeUncontrolledProps) & {\n onSizeChange?: (size: number, meta: InspectorSizeChangeMeta) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n /** When true, adds margin and triggers gray backdrop on Shell. */\n inset?: boolean;\n };\n\ntype InspectorComponent = React.ForwardRefExoticComponent<InspectorPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof InspectorHandle };\n\nconst INSPECTOR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'defaultOpen',\n 'open',\n 'onOpenChange',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n 'inset',\n] as const satisfies readonly (keyof InspectorPublicProps)[];\n\nexport const Inspector = React.forwardRef<HTMLDivElement, InspectorPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', lg: 'fixed' },\n defaultOpen,\n open,\n onOpenChange,\n expandedSize = 320,\n minSize = 200,\n maxSize = 500,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n size,\n defaultSize,\n inset,\n } = initialProps;\n const inspectorDomProps = extractPaneDomProps(initialProps, INSPECTOR_DOM_PROP_KEYS);\n const { inspectorMode, setInspectorMode } = useInspectorMode();\n const { currentBreakpointReady } = usePresentation();\n const { peekTarget } = usePeek();\n const { togglePane } = useShellActions();\n const { registerInset, unregisterInset } = useInset();\n\n // Register/unregister inset\n React.useLayoutEffect(() => {\n if (inset) {\n registerInset('inspector');\n return () => unregisterInset('inspector');\n }\n }, [inset, registerInset, unregisterInset]);\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === InspectorHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === InspectorHandle));\n\n // Stable ref for onOpenChange to avoid effect dep churn\n const onOpenChangeRef = React.useRef(onOpenChange);\n const openRef = React.useRef(open);\n React.useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n openRef.current = open;\n });\n\n const normalizedControlledOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(open), [open]);\n const normalizedDefaultOpen = React.useMemo(() => mapResponsiveBooleanToPaneMode(defaultOpen), [defaultOpen]);\n const openIsResponsive = typeof open === 'object' && open !== null;\n const { resolvedControlled: resolvedInspectorControlled } = useResponsiveInitialState<PaneMode>({\n controlledValue: normalizedControlledOpen,\n defaultValue: normalizedDefaultOpen,\n currentValue: inspectorMode,\n setValue: setInspectorMode,\n breakpointReady: currentBreakpointReady,\n controlledIsResponsive: openIsResponsive,\n onResponsiveChange: (next) => onOpenChangeRef.current?.(next === 'expanded', { reason: 'responsive' }),\n onInit: (initial) => {\n if (typeof openRef.current === 'undefined') {\n onOpenChangeRef.current?.(initial === 'expanded', { reason: 'init' });\n }\n },\n });\n\n // Ref for debounce cleanup\n const debounceTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n // Cleanup debounce timeout on unmount or when dependencies change\n React.useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = null;\n }\n };\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: InspectorSizeChangeMeta) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n return (s: number, meta: InspectorSizeChangeMeta) => {\n if (debounceTimeoutRef.current) clearTimeout(debounceTimeoutRef.current);\n debounceTimeoutRef.current = setTimeout(() => {\n cb(s, meta);\n debounceTimeoutRef.current = null;\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: InspectorSizeChangeMeta) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: InspectorSizeChangeMeta) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof open !== 'undefined' && typeof defaultOpen !== 'undefined') {\n console.error('Shell.Inspector: Do not pass both `open` and `defaultOpen`. Choose one.');\n }\n }\n\n // Warn on controlled/uncontrolled mode switch\n React.useEffect(() => {\n const isControlled = typeof open !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Inspector: Switching between controlled and uncontrolled `open` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [open]);\n\n // Emit mode changes. In controlled mode, skip when mode matches the controlled prop.\n const lastInspectorModeRef = React.useRef<PaneMode | null>(null);\n const lastResolvedInspectorControlledRef = React.useRef<PaneMode | undefined>(undefined);\n React.useEffect(() => {\n const prevInspectorMode = lastInspectorModeRef.current;\n const prevResolvedControlled = lastResolvedInspectorControlledRef.current;\n const controlledChanged = prevResolvedControlled !== resolvedInspectorControlled;\n\n if (prevInspectorMode !== null && prevInspectorMode !== inspectorMode) {\n const nextOpen = inspectorMode === 'expanded';\n const isControlled = typeof openRef.current !== 'undefined';\n const controlledTarget = resolvedInspectorControlled === undefined ? undefined : resolvedInspectorControlled === 'expanded';\n\n if (!isControlled || (!controlledChanged && nextOpen !== controlledTarget)) {\n onOpenChangeRef.current?.(nextOpen, { reason: 'toggle' });\n }\n }\n\n lastInspectorModeRef.current = inspectorMode;\n lastResolvedInspectorControlledRef.current = resolvedInspectorControlled;\n }, [inspectorMode, resolvedInspectorControlled]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n // Use callback refs to avoid re-running effect when inline callbacks change.\n const onExpandRef = React.useRef(onExpand);\n const onCollapseRef = React.useRef(onCollapse);\n React.useLayoutEffect(() => {\n onExpandRef.current = onExpand;\n onCollapseRef.current = onCollapse;\n });\n\n const prevInspectorModeRef = React.useRef<PaneMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = inspectorMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!currentBreakpointReady) {\n prevInspectorModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevInspectorModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevInspectorModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n if (currentMode === 'expanded') {\n onExpandRef.current?.();\n } else if (currentMode === 'collapsed') {\n onCollapseRef.current?.();\n }\n prevInspectorModeRef.current = currentMode;\n }\n }, [inspectorMode, currentBreakpointReady]);\n\n const isExpanded = inspectorMode === 'expanded';\n\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:inspector:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n if (!resizable || !persistenceAdapter?.load || isOverlay) return undefined;\n const loaded = persistenceAdapter.load();\n const applyLoaded = (value?: number) => {\n if (!mounted || typeof value !== 'number' || !localRef.current) return;\n localRef.current.style.setProperty('--inspector-size', `${value}px`);\n onResize?.(value);\n };\n if (loaded instanceof Promise) {\n loaded.then(applyLoaded).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Inspector: failed to load persisted size', err);\n }\n });\n } else {\n applyLoaded(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n const handleEl =\n resizable && !isOverlay && isExpanded ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--inspector-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'start',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? delta : -delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'inspector',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => setInspectorMode('collapsed'),\n requestToggle: () => togglePane('inspector'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px helper\n const normalizeSizeToPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, 'horizontal'), []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeSizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeSizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--inspector-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeSizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = inspectorMode === 'expanded';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => setInspectorMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content side=\"end\" style={{ padding: 0 }} aria-label=\"Inspector\" aria-describedby={undefined} width={{ initial: `${expandedSize}px` }}>\n <VisuallyHidden>\n <Sheet.Title>Inspector</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n // Strip control/size props from DOM spread\n return (\n <div\n {...inspectorDomProps}\n ref={setRef}\n className={classNames('rt-ShellInspector', className)}\n data-mode={inspectorMode}\n data-peek={peekTarget === 'inspector' || undefined}\n data-presentation={currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(currentBreakpointReady && isStacked && isExpanded) || undefined}\n data-inset={inset || undefined}\n style={{\n ...style,\n '--inspector-size': `${expandedSize}px`,\n '--inspector-min-size': `${minSize}px`,\n '--inspector-max-size': `${maxSize}px`,\n } as CSSPropertiesWithVars}\n >\n <div className=\"rt-ShellInspectorContent\" data-visible={isExpanded || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as InspectorComponent;\n\nInspector.displayName = 'Shell.Inspector';\nInspector.Handle = InspectorHandle;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { LazyMotion, domAnimation, m } from 'motion/react';\n\nimport { IconButton, type IconButtonProps } from './icon-button.js';\nimport { CloseIcon, FileTextIcon } from './icons.js';\nimport { Flex } from './flex.js';\n\nimport { ScrollArea } from './scroll-area.js';\nimport { Slot } from './slot.js';\nimport { Text } from './text.js';\nimport { useDropzone } from 'react-dropzone';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n// Avoid SSR warnings by using an isomorphic layout effect\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\ntype ExpandOn = 'none' | 'focus' | 'overflow' | 'both';\ntype SendMode = 'always' | 'whenDirty' | 'never';\n\n// Attachments\n/** Status flag for attachment lifecycle. */\ntype AttachmentStatus = 'idle' | 'uploading' | 'error' | 'done';\n/**\n * Attachment data model used by Chatbar.\n * - `file` exposes the original File object for uploads and processing.\n * - `url` is an object URL used for image previews and is revoked on removal.\n */\ninterface ChatbarAttachment {\n id: string;\n name: string;\n size: number;\n type: string;\n /** Original File object for uploads and processing */\n file: File;\n url?: string;\n status?: AttachmentStatus;\n progress?: number;\n meta?: Record<string, unknown>;\n}\n\ninterface ChatbarContextValue {\n open: boolean;\n setOpen(next: boolean): void;\n isOpenControlled: boolean;\n\n value: string;\n setValue(next: string): void;\n isValueControlled: boolean;\n\n size: '1' | '2' | '3';\n expandOn: ExpandOn;\n minLines: number;\n maxLines: number;\n sendMode: SendMode;\n disabled?: boolean;\n readOnly?: boolean;\n\n // Submit returns both message and attachments\n onSubmit?: (payload: { value: string; attachments: ChatbarAttachment[] }) => void;\n\n rootRef: React.RefObject<HTMLDivElement | null>;\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\n\n // Attachments state\n attachments: ChatbarAttachment[];\n setAttachments(next: ChatbarAttachment[]): void;\n isAttachmentsControlled: boolean;\n\n // Config\n accept?: string | string[];\n multiple: boolean;\n maxAttachments?: number;\n maxFileSize?: number;\n paste: boolean;\n pasteAccept?: string | string[];\n clearOnSubmit: boolean;\n\n // Dropzone\n dropzone: boolean;\n\n // Events\n onAttachmentReject?: (rejections: { file: File; reason: 'type' | 'size' | 'count' }[]) => void;\n\n // Helpers\n appendFiles(files: File[]): void;\n appendFilesFromPaste(files: File[]): void;\n\n // Guards\n fileDialogOpenRef: React.MutableRefObject<boolean>;\n}\n\nconst ChatbarContext = React.createContext<ChatbarContextValue | null>(null);\nconst useChatbarContext = () => {\n const ctx = React.useContext(ChatbarContext);\n if (!ctx) throw new Error('Chatbar context not found. Wrap parts in <Chatbar.Root>.');\n return ctx;\n};\n\n/**\n * Chatbar container and state provider.\n *\n * Value & Open\n * - Supports controlled/uncontrolled `value` and `open`.\n *\n * Attachments\n * - Controlled/uncontrolled attachments with client-side filtering.\n * - Filters by `accept`/`pasteAccept`, `maxAttachments`, and `maxFileSize`.\n * - Rejections are reported via `onAttachmentReject`.\n *\n * Submit\n * - `onSubmit({ value, attachments })` emits both message and attachments.\n * - `clearOnSubmit` clears message and attachments by default.\n */\ninterface ChatbarRootBaseProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n expandOn?: ExpandOn;\n\n /** Minimum number of lines in compact state (default: 1) */\n minLines?: number;\n /** Maximum number of lines before scrolling (default: 6) */\n maxLines?: number;\n\n sendMode?: SendMode;\n\n disabled?: boolean;\n readOnly?: boolean;\n\n /** Combined submit payload */\n onSubmit?: (payload: { value: string; attachments: ChatbarAttachment[] }) => void;\n\n size?: '1' | '2' | '3';\n variant?: 'surface' | 'outline' | 'classic' | 'ghost' | 'soft';\n /** Accent color for the control (matches TextArea) */\n color?: string;\n /** Optional radius override (matches TextArea) */\n radius?: string | number;\n /** Panel/material translucency flags (matches TextArea) */\n panelBackground?: 'solid' | 'translucent';\n material?: 'solid' | 'translucent';\n\n width?: React.CSSProperties['width'];\n maxWidth?: React.CSSProperties['maxWidth'];\n asChild?: boolean;\n\n // Attachments API\n attachments?: ChatbarAttachment[];\n defaultAttachments?: ChatbarAttachment[];\n onAttachmentsChange?: (attachments: ChatbarAttachment[]) => void;\n accept?: string | string[];\n multiple?: boolean;\n maxAttachments?: number;\n maxFileSize?: number;\n paste?: boolean;\n pasteAccept?: string | string[];\n clearOnSubmit?: boolean;\n onAttachmentReject?: (rejections: { file: File; reason: 'type' | 'size' | 'count' }[]) => void;\n\n /**\n * Enables drag-and-drop file uploads when true.\n *\n * When enabled:\n * - Files can be dropped anywhere on the chatbar\n * - Same validation rules apply (accept, maxFileSize, maxAttachments)\n * - Visual feedback shows during drag operations\n * - Rejected files trigger onAttachmentReject\n *\n * @default true\n */\n dropzone?: boolean;\n\n /**\n * Optional API ref to control Chatbar imperatively without relying on DOM refs.\n * Provides methods to focus the textarea and open the file picker.\n */\n apiRef?: React.Ref<ChatbarApi>;\n}\n\ntype RootElement = React.ElementRef<'div'>;\n/** Imperative API for Chatbar.Root */\nexport interface ChatbarApi {\n /** Focus the textarea input */\n focusTextarea: () => void;\n /** Open the file picker dialog (respects accept/multiple) */\n openFilePicker: () => void;\n}\n/**\n * Chatbar container and state provider.\n *\n * Behavior\n * - Supports controlled and uncontrolled `value` and `open` states via props.\n * - Provides context to subcomponents like `Textarea`, `Row`, and `Send`.\n * - Exposes `data-state`, `data-disabled`, and `data-readonly` attributes for styling.\n * - Sets `aria-expanded` to reflect open/closed state for assistive technologies.\n *\n * Attachments\n * - Controlled/uncontrolled attachments with client-side filtering.\n * - Filters by `accept`/`pasteAccept`, `maxAttachments`, and `maxFileSize`.\n * - Rejections are reported via `onAttachmentReject`.\n * - Paste-to-attach: when `paste` is enabled, pasting files adds attachments.\n *\n * Dropzone\n * - When `dropzone` is true, enables drag-and-drop file uploads.\n * - Files are validated using the same rules as paste and file picker.\n * - Visual feedback via `data-drop-active` attribute during drag operations.\n * - Rejected files trigger `onAttachmentReject` with appropriate reasons.\n *\n * Submit\n * - `onSubmit` receives both message text and attachments array.\n * - `clearOnSubmit` controls whether attachments are cleared after submission.\n *\n * Accessibility\n * - Consumers should label the `Textarea` via `aria-label`/`aria-labelledby`.\n * - `aria-expanded` on the root reflects the disclosure state of the input area.\n * - Dropzone provides proper ARIA attributes for drag and drop operations.\n */\ninterface RootProps extends ComponentPropsWithout<'div', RemovedProps | 'onSubmit'>, ChatbarRootBaseProps {}\n\nconst Root = React.forwardRef<RootElement, RootProps>((props, forwardedRef) => {\n const {\n className,\n style,\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange: onValueChangeProp,\n open: openProp,\n defaultOpen = false,\n onOpenChange: onOpenChangeProp,\n expandOn = 'both',\n minLines = 3,\n maxLines = 6,\n sendMode = 'whenDirty',\n disabled,\n readOnly,\n onSubmit,\n size = '2',\n variant,\n color,\n radius,\n panelBackground,\n material,\n width,\n maxWidth,\n asChild,\n attachments: attachmentsProp,\n defaultAttachments = [],\n onAttachmentsChange,\n accept,\n multiple = true,\n maxAttachments,\n maxFileSize,\n paste = true,\n pasteAccept,\n clearOnSubmit = true,\n onAttachmentReject,\n dropzone = true,\n apiRef,\n ...divProps\n } = props;\n const effectiveMaterial = material || panelBackground;\n\n const isValueControlled = valueProp != null;\n const [valueUncontrolled, setValueUncontrolled] = React.useState<string>(defaultValue);\n const value = isValueControlled ? (valueProp as string) : valueUncontrolled;\n\n const isOpenControlled = openProp != null;\n const [openUncontrolled, setOpenUncontrolled] = React.useState<boolean>(defaultOpen);\n const open = isOpenControlled ? (openProp as boolean) : openUncontrolled;\n\n const rootRef = React.useRef<HTMLDivElement>(null);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const fileDialogOpenRef = React.useRef<boolean>(false);\n\n // Attachments state\n // Treat `attachments` as controlled if the prop is provided, even if its value is `undefined`.\n // This avoids switching between controlled and uncontrolled when a consumer sets\n // `attachments={undefined}` to clear attachments. In that case we normalize to an empty array.\n const isAttachmentsControlled = 'attachments' in props;\n const [attachmentsUncontrolled, setAttachmentsUncontrolled] = React.useState<ChatbarAttachment[]>(defaultAttachments);\n const attachments = React.useMemo(\n () => (isAttachmentsControlled ? ((attachmentsProp ?? []) as ChatbarAttachment[]) : attachmentsUncontrolled),\n [isAttachmentsControlled, attachmentsProp, attachmentsUncontrolled],\n );\n\n // Track generated object URLs for cleanup\n const generatedUrlSetRef = React.useRef<Set<string>>(new Set());\n\n const toArray = (val: string | string[] | undefined) => (Array.isArray(val) ? val : typeof val === 'string' ? val.split(',').map((s) => s.trim()) : []);\n\n const accepts = toArray(accept);\n const pasteAccepts = toArray(pasteAccept).length > 0 ? toArray(pasteAccept) : accepts;\n\n const matchesAccept = (file: File, patterns: string[]) => {\n if (patterns.length === 0) return true;\n const mime = file.type.toLowerCase();\n const name = file.name.toLowerCase();\n for (const patRaw of patterns) {\n const pat = patRaw.toLowerCase();\n if (pat.includes('/')) {\n const [type, subtype] = pat.split('/');\n const [fmType, fmSubtype] = mime.split('/');\n if (type === '*' || (type === fmType && (subtype === '*' || subtype === fmSubtype))) return true;\n } else if (pat.startsWith('.')) {\n if (name.endsWith(pat)) return true;\n }\n }\n return false;\n };\n\n // Refs for values that change frequently, read inside stable callbacks\n const attachmentsRef = React.useRef(attachments);\n attachmentsRef.current = attachments;\n const acceptsRef = React.useRef(accepts);\n acceptsRef.current = accepts;\n const pasteAcceptsRef = React.useRef(pasteAccepts);\n pasteAcceptsRef.current = pasteAccepts;\n const maxAttachmentsRef = React.useRef(maxAttachments);\n maxAttachmentsRef.current = maxAttachments;\n const maxFileSizeRef = React.useRef(maxFileSize);\n maxFileSizeRef.current = maxFileSize;\n const onAttachmentRejectRef = React.useRef(onAttachmentReject);\n onAttachmentRejectRef.current = onAttachmentReject;\n const onAttachmentsChangeRef = React.useRef(onAttachmentsChange);\n onAttachmentsChangeRef.current = onAttachmentsChange;\n const onOpenChangePropRef = React.useRef(onOpenChangeProp);\n onOpenChangePropRef.current = onOpenChangeProp;\n\n const appendFiles = React.useCallback((files: File[]) => {\n const currentAttachments = attachmentsRef.current;\n const currentAccepts = acceptsRef.current;\n const currentMaxAttachments = maxAttachmentsRef.current;\n const currentMaxFileSize = maxFileSizeRef.current;\n\n const next: ChatbarAttachment[] = [];\n const rejected: { file: File; reason: 'type' | 'size' | 'count' }[] = [];\n const remainingSlots = typeof currentMaxAttachments === 'number' ? Math.max(currentMaxAttachments - currentAttachments.length, 0) : Infinity;\n\n for (const file of files) {\n if (next.length >= remainingSlots) {\n rejected.push({ file, reason: 'count' });\n continue;\n }\n if (typeof currentMaxFileSize === 'number' && file.size > currentMaxFileSize) {\n rejected.push({ file, reason: 'size' });\n continue;\n }\n if (!matchesAccept(file, currentAccepts)) {\n rejected.push({ file, reason: 'type' });\n continue;\n }\n const id = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n const looksLikeImageByExt = /\\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(file.name);\n const isImageType = (file.type || '').toLowerCase().startsWith('image/');\n const url = isImageType || looksLikeImageByExt ? URL.createObjectURL(file) : undefined;\n if (url) generatedUrlSetRef.current.add(url);\n next.push({ id, name: file.name, size: file.size, type: file.type, file, url, status: 'idle' });\n }\n\n if (next.length > 0) {\n const merged = currentAttachments.concat(next);\n if (!isAttachmentsControlled) setAttachmentsUncontrolled(merged);\n onAttachmentsChangeRef.current?.(merged);\n if (!isOpenControlled) setOpenUncontrolled(true);\n onOpenChangePropRef.current?.(true);\n }\n if (rejected.length > 0) onAttachmentRejectRef.current?.(rejected);\n }, [isAttachmentsControlled, isOpenControlled]);\n\n const appendFilesFromPaste = React.useCallback((files: File[]) => {\n const currentAccepts = acceptsRef.current;\n const currentPasteAccepts = pasteAcceptsRef.current;\n const currentMaxAttachments = maxAttachmentsRef.current;\n const currentMaxFileSize = maxFileSizeRef.current;\n const currentAttachments = attachmentsRef.current;\n\n const patterns = currentPasteAccepts.length > 0 ? currentPasteAccepts : currentAccepts;\n const acceptedFiles: File[] = [];\n const rejected: { file: File; reason: 'type' | 'size' | 'count' }[] = [];\n const remainingSlots = typeof currentMaxAttachments === 'number' ? Math.max(currentMaxAttachments - currentAttachments.length, 0) : Infinity;\n\n for (const file of files) {\n if (acceptedFiles.length >= remainingSlots) {\n rejected.push({ file, reason: 'count' });\n continue;\n }\n if (typeof currentMaxFileSize === 'number' && file.size > currentMaxFileSize) {\n rejected.push({ file, reason: 'size' });\n continue;\n }\n if (!matchesAccept(file, patterns)) {\n rejected.push({ file, reason: 'type' });\n continue;\n }\n acceptedFiles.push(file);\n }\n if (acceptedFiles.length > 0) appendFiles(acceptedFiles);\n if (rejected.length > 0) onAttachmentRejectRef.current?.(rejected);\n }, [appendFiles]);\n\n // Revoke object URLs that are no longer referenced by current attachments\n React.useEffect(() => {\n const currentUrls = new Set(attachments.map((a) => a.url).filter(Boolean) as string[]);\n for (const url of Array.from(generatedUrlSetRef.current)) {\n if (!currentUrls.has(url)) {\n URL.revokeObjectURL(url);\n generatedUrlSetRef.current.delete(url);\n }\n }\n }, [attachments]);\n\n // Revoke any remaining generated URLs on unmount\n React.useEffect(() => {\n const urlSet = generatedUrlSetRef.current;\n return () => {\n for (const url of Array.from(urlSet)) {\n URL.revokeObjectURL(url);\n }\n urlSet.clear();\n };\n }, []);\n\n const Comp = asChild ? Slot : ('div' as any);\n\n // Stable context setters \u2014 avoids new function references on every render\n const handleSetOpen = React.useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setOpenUncontrolled(next);\n onOpenChangeProp?.(next);\n },\n [isOpenControlled, onOpenChangeProp],\n );\n const handleSetValue = React.useCallback(\n (next: string) => {\n if (!isValueControlled) setValueUncontrolled(next);\n onValueChangeProp?.(next);\n },\n [isValueControlled, onValueChangeProp],\n );\n const handleSetAttachments = React.useCallback(\n (next: ChatbarAttachment[]) => {\n if (!isAttachmentsControlled) setAttachmentsUncontrolled(next);\n onAttachmentsChange?.(next);\n },\n [isAttachmentsControlled, onAttachmentsChange],\n );\n\n const handleBlurCapture = React.useCallback(\n (event: React.FocusEvent) => {\n const nextTarget = event.relatedTarget as Node | null;\n const rootEl = rootRef.current;\n if (!rootEl) return;\n // If focus remains within root, ignore\n if (nextTarget && rootEl.contains(nextTarget)) return;\n // If native file dialog is open, avoid collapsing on blur\n if (fileDialogOpenRef.current) return;\n // Collapse when leaving the root if the value is empty\n // Only collapse when both message and attachments are empty\n if ((value?.trim?.() ?? '').length === 0 && attachments.length === 0) {\n if (!isOpenControlled) setOpenUncontrolled(false);\n onOpenChangeProp?.(false);\n }\n },\n [isOpenControlled, onOpenChangeProp, value, attachments],\n );\n\n // Dropzone functionality\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n open: openFileDialog,\n } = useDropzone({\n onDrop: (acceptedFiles, rejectedFiles) => {\n if (acceptedFiles.length > 0) {\n appendFiles(acceptedFiles);\n }\n if (rejectedFiles.length > 0 && onAttachmentReject) {\n const rejections = rejectedFiles.map(({ file, errors }) => {\n const reason = errors[0]?.code === 'file-too-large' ? 'size' : errors[0]?.code === 'file-invalid-type' ? 'type' : 'count';\n return { file, reason: reason as 'type' | 'size' | 'count' };\n });\n onAttachmentReject(rejections);\n }\n },\n accept:\n accepts.length > 0\n ? accepts.reduce(\n (acc, pattern) => {\n if (pattern.includes('/')) {\n // MIME type pattern\n acc[pattern] = [];\n } else if (pattern.startsWith('.')) {\n // File extension pattern\n acc[pattern] = [];\n }\n return acc;\n },\n {} as Record<string, string[]>,\n )\n : undefined,\n multiple,\n maxSize: maxFileSize,\n noClick: true,\n noKeyboard: true,\n disabled: !dropzone || disabled,\n });\n\n // Expose imperative API via apiRef (non-breaking; forwardedRef still receives the DOM node)\n React.useImperativeHandle(\n apiRef,\n () => ({\n focusTextarea: () => textareaRef.current?.focus({ preventScroll: true }),\n openFilePicker: () => {\n // Guard against blur-collapse while native dialog is open\n fileDialogOpenRef.current = true;\n openFileDialog();\n },\n }),\n [openFileDialog],\n );\n\n // Click-to-focus: focus textarea when clicking non-interactive areas inside the container\n const isInteractiveTarget = React.useCallback((target: EventTarget | null) => {\n if (!(target instanceof Element)) return false;\n const el = target as Element;\n if (el.closest('.rt-ChatbarDropOverlay')) return true;\n return !!el.closest('button, [role=\"button\"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex=\"-1\"])');\n }, []);\n\n const handleContainerPointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (disabled) return;\n if (isInteractiveTarget(event.target)) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n event.preventDefault();\n textareaRef.current?.focus({ preventScroll: true });\n },\n [disabled, isInteractiveTarget, textareaRef],\n );\n\n // Clicking the label-wrapped Card will naturally focus the nested textarea.\n\n return (\n <ChatbarContext.Provider\n value={React.useMemo<ChatbarContextValue>(\n () => ({\n open,\n setOpen: handleSetOpen,\n isOpenControlled,\n value,\n setValue: handleSetValue,\n isValueControlled,\n size,\n expandOn,\n minLines,\n maxLines,\n sendMode,\n disabled,\n readOnly,\n onSubmit,\n rootRef,\n textareaRef,\n attachments,\n setAttachments: handleSetAttachments,\n isAttachmentsControlled,\n accept,\n multiple,\n maxAttachments,\n maxFileSize,\n paste,\n pasteAccept,\n clearOnSubmit,\n onAttachmentReject,\n dropzone,\n appendFiles,\n appendFilesFromPaste,\n fileDialogOpenRef,\n }),\n [\n open, handleSetOpen, isOpenControlled,\n value, handleSetValue, isValueControlled,\n size, expandOn, minLines, maxLines, sendMode,\n disabled, readOnly, onSubmit,\n attachments, handleSetAttachments, isAttachmentsControlled,\n accept, multiple, maxAttachments, maxFileSize,\n paste, pasteAccept, clearOnSubmit, onAttachmentReject,\n dropzone, appendFiles, appendFilesFromPaste,\n ],\n )}\n >\n <LazyMotion features={domAnimation}>\n <Comp\n {...divProps}\n ref={(node: HTMLDivElement) => {\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n (rootRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={classNames('rt-ChatbarRoot', `rt-r-size-${size}`, className)}\n style={{ position: 'relative', width, maxWidth, ...style }}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n data-readonly={readOnly ? '' : undefined}\n data-drop-active={dropzone && isDragActive ? '' : undefined}\n data-accent-color={color}\n data-radius={radius as any}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n aria-expanded={open}\n onBlurCapture={handleBlurCapture}\n >\n {dropzone && <input {...getInputProps()} />}\n <div {...(dropzone ? getRootProps() : {})} style={{ width: '100%', height: '100%' }} onPointerDown={handleContainerPointerDown}>\n <m.div\n className={classNames('rt-ChatbarBox', `rt-variant-${variant ?? 'surface'}`)}\n style={{ position: 'relative' }}\n data-accent-color={color}\n data-radius={radius as any}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n layout\n transition={{\n layout: {\n type: 'spring',\n visualDuration: 0.15,\n bounce: 0.1,\n },\n }}\n >\n <m.div\n className=\"rt-ChatbarGrid\"\n layout=\"position\"\n transition={{\n layout: {\n type: 'spring',\n visualDuration: 0.15,\n bounce: 0.1,\n },\n }}\n >\n {children}\n </m.div>\n {dropzone && isDragActive && (\n <div className=\"rt-ChatbarDropOverlay\">\n <div className=\"rt-ChatbarDropContent\">\n <Text color=\"gray\" size={size} weight=\"medium\">\n Drop files here to attach\n </Text>\n </div>\n </div>\n )}\n </m.div>\n </div>\n </Comp>\n </LazyMotion>\n </ChatbarContext.Provider>\n );\n});\nRoot.displayName = 'Chatbar.Root';\n\n/**\n * Multi-line text input for Chatbar.\n * - Uses onChange to control value and avoid duplicate updates.\n * - Auto-resizes between minLines and maxLines.\n * - Expands on focus/overflow per `expandOn`.\n * - Paste-to-attach: when `paste` is enabled on Root, pasting files adds attachments.\n * - Provide `aria-label` or `aria-labelledby` for an accessible name.\n */\ninterface TextareaProps extends Omit<React.ComponentPropsWithoutRef<'textarea'>, 'size'> {\n asChild?: boolean;\n /**\n * Handler for paste events. This is forwarded to the underlying <textarea>.\n */\n onPaste?: React.ClipboardEventHandler<HTMLTextAreaElement>;\n /**\n * When true, pressing Enter submits via onSend (Shift+Enter inserts newline).\n * Defaults to false.\n */\n submitOnEnter?: boolean;\n}\n\n/**\n * Chatbar multi-line text input.\n *\n * Behavior\n * - Controls the Chatbar value via React onChange. We intentionally do not\n * update state in onInput to avoid duplicate updates per keystroke.\n * - Auto-resizes between minLines and maxLines using layout measurements.\n * - When expandOn is `overflow` or `both`, the Chatbar opens as soon as the\n * content exceeds the compact height.\n * - Height recalculations occur on change, paste, and whenever `value` or `open`\n * changes via an isomorphic layout effect to avoid SSR warnings.\n *\n * Accessibility\n * - Consumers should provide labeling via aria-label or aria-labelledby\n * on this component, as no implicit label is rendered.\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>((props, forwardedRef) => {\n const { className, style, asChild, onFocus, onInput, onChange, onPaste, onKeyDown, submitOnEnter = false, rows, ...textareaProps } = props;\n const ctx = useChatbarContext();\n const { open, minLines, maxLines, expandOn, disabled, readOnly, setOpen, setValue, textareaRef, value, isValueControlled, sendMode, paste, appendFilesFromPaste, size } = ctx;\n\n // Cached metrics to avoid repeated getComputedStyle calls\n const lineHeightRef = React.useRef<number>(0);\n const paddingRef = React.useRef<number>(0);\n const compactHeightRef = React.useRef<number>(0);\n\n const recomputeMetrics = React.useCallback(() => {\n const el = textareaRef.current;\n if (!el) return;\n const computedStyle = window.getComputedStyle(el);\n const lineHeight = parseFloat(computedStyle.lineHeight) || 20;\n const paddingTop = parseFloat(computedStyle.paddingTop) || 0;\n const paddingBottom = parseFloat(computedStyle.paddingBottom) || 0;\n lineHeightRef.current = lineHeight;\n paddingRef.current = paddingTop + paddingBottom;\n compactHeightRef.current = Math.ceil(1 * lineHeight) + paddingTop + paddingBottom;\n }, [textareaRef]);\n\n // Auto-resize logic - optimized for fixed widths\n const updateHeight = React.useCallback(\n (forceOpen?: boolean) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n textarea.style.height = 'auto';\n\n if (lineHeightRef.current === 0) {\n recomputeMetrics();\n }\n const lineHeight = lineHeightRef.current;\n const padding = paddingRef.current;\n\n const isOpen = forceOpen ?? open;\n const effectiveMinLines = isOpen ? minLines : 1;\n const effectiveMaxLines = isOpen ? maxLines : 1;\n\n const minHeight = Math.ceil(effectiveMinLines * lineHeight) + padding;\n const maxHeight = Math.ceil(effectiveMaxLines * lineHeight) + padding;\n\n const contentHeight = Math.max(textarea.scrollHeight, minHeight);\n const finalHeight = Math.min(contentHeight, maxHeight);\n\n textarea.style.height = `${finalHeight}px`;\n\n if (contentHeight > maxHeight) {\n textarea.style.overflowY = 'auto';\n textarea.style.maxHeight = `${maxHeight}px`;\n } else {\n textarea.style.overflowY = 'hidden';\n textarea.style.maxHeight = 'none';\n }\n },\n [open, minLines, maxLines, textareaRef, recomputeMetrics],\n );\n\n // Update height when value or open state changes\n useIsomorphicLayoutEffect(() => {\n updateHeight();\n }, [updateHeight, value, open]);\n\n // Auto-open on external value changes when content overflows one line\n useIsomorphicLayoutEffect(() => {\n if (!(expandOn === 'overflow' || expandOn === 'both')) return;\n if (open) return;\n const el = textareaRef.current;\n if (!el) return;\n // Measure overflow against compact (1-line) height\n el.style.height = 'auto';\n if (compactHeightRef.current === 0) {\n recomputeMetrics();\n }\n const shouldExpand = el.scrollHeight > compactHeightRef.current + 1;\n if (shouldExpand) {\n setOpen(true);\n // Immediately size for open state\n updateHeight(true);\n requestAnimationFrame(() => updateHeight(true));\n }\n }, [value, expandOn, open, setOpen, textareaRef, recomputeMetrics, updateHeight]);\n\n // Recompute metrics on mount and when size changes may affect typography\n useIsomorphicLayoutEffect(() => {\n recomputeMetrics();\n updateHeight();\n }, [recomputeMetrics, updateHeight, size]);\n\n // Observe responsive changes that alter line-height\n React.useEffect(() => {\n const el = textareaRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return;\n let prevLineHeight = lineHeightRef.current;\n const ro = new ResizeObserver(() => {\n const computedStyle = window.getComputedStyle(el);\n const lh = parseFloat(computedStyle.lineHeight) || 20;\n if (lh !== prevLineHeight) {\n prevLineHeight = lh;\n recomputeMetrics();\n requestAnimationFrame(() => updateHeight());\n }\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [textareaRef, recomputeMetrics, updateHeight]);\n\n // Dev-only warning if no accessible name is provided\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n const hasLabel = textareaProps['aria-label'] != null || textareaProps['aria-labelledby'] != null;\n if (!hasLabel) {\n console.warn('[Chatbar.Textarea] Provide aria-label or aria-labelledby to ensure the control has an accessible name.');\n }\n // warn only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Note: No MutationObserver is used because <textarea> value changes are not\n // reflected in DOM text nodes. Height updates are handled by effects and events.\n\n const handleFocus = React.useCallback<React.FocusEventHandler<HTMLTextAreaElement>>(\n (event) => {\n if (disabled || readOnly) return;\n if ((expandOn === 'focus' || expandOn === 'both') && !open) setOpen(true);\n onFocus?.(event);\n },\n [disabled, readOnly, expandOn, open, setOpen, onFocus],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLTextAreaElement>>(\n (event) => {\n const el = event.currentTarget;\n const nextValue = el.value;\n setValue(nextValue);\n\n if ((expandOn === 'overflow' || expandOn === 'both') && !open) {\n el.style.height = 'auto';\n\n if (compactHeightRef.current === 0) {\n recomputeMetrics();\n }\n const shouldExpand = el.scrollHeight > compactHeightRef.current + 1;\n if (shouldExpand) {\n setOpen(true);\n // Immediately size for open state to avoid 1-line + scrollbar flash\n updateHeight(true);\n requestAnimationFrame(() => updateHeight(true));\n }\n }\n\n // Always recalc after any input\n requestAnimationFrame(() => updateHeight());\n onChange?.(event);\n },\n [expandOn, open, setOpen, setValue, onChange, updateHeight, recomputeMetrics],\n );\n\n const handlePaste = React.useCallback<React.ClipboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n // Attach files from clipboard if enabled\n if (paste) {\n const items = Array.from(event.clipboardData?.items ?? []);\n const files = items\n .filter((i) => i.kind === 'file')\n .map((i) => i.getAsFile())\n .filter((f): f is File => !!f);\n if (files.length > 0) {\n // Prevent pasting the file name or any text representation when files are present\n event.preventDefault();\n appendFilesFromPaste(files);\n }\n }\n setTimeout(() => {\n // If pasting in compact mode, force sizing as open if content overflowed\n if (!open) {\n updateHeight(true);\n } else {\n updateHeight();\n }\n }, 0);\n onPaste?.(event);\n },\n [paste, open, updateHeight, onPaste, appendFilesFromPaste],\n );\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n if (!submitOnEnter) {\n onKeyDown?.(event);\n return;\n }\n if (event.key === 'Enter' && !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey && !event.nativeEvent.isComposing) {\n if (disabled || readOnly) {\n onKeyDown?.(event);\n return;\n }\n if (sendMode === 'never') {\n onKeyDown?.(event);\n return;\n }\n const trimmed = value.trim();\n const hasContent = trimmed.length > 0 || ctx.attachments.length > 0;\n if (sendMode === 'whenDirty' && !hasContent) {\n onKeyDown?.(event);\n return;\n }\n event.preventDefault();\n ctx.onSubmit?.({ value, attachments: ctx.attachments });\n if (ctx.clearOnSubmit) {\n if (!isValueControlled) setValue('');\n ctx.setAttachments([]);\n }\n }\n onKeyDown?.(event);\n },\n [submitOnEnter, disabled, readOnly, sendMode, value, isValueControlled, setValue, ctx, onKeyDown],\n );\n\n const Comp = asChild ? Slot : ('textarea' as any);\n return (\n <m.div \n className={classNames('rt-ChatbarField', 'rt-ChatbarTextarea', className)}\n layout=\"position\"\n transition={{\n layout: {\n type: 'spring',\n visualDuration: 0.15,\n bounce: 0.1,\n },\n }}\n >\n <Comp\n {...textareaProps}\n ref={(node: HTMLTextAreaElement) => {\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n (textareaRef as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n }}\n className=\"rt-ChatbarInput\"\n value={value}\n onInput={onInput}\n onChange={handleChange}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n rows={open ? minLines : 1}\n spellCheck={textareaProps.spellCheck ?? true}\n autoCorrect={textareaProps.autoCorrect ?? 'on'}\n style={style}\n />\n </m.div>\n );\n});\nTextarea.displayName = 'Chatbar.Textarea';\n\ninterface InlineSlotProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst InlineStart = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, style, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : ('div' as any);\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineStart', className)} style={style}>\n {children}\n </Comp>\n );\n});\nInlineStart.displayName = 'Chatbar.InlineStart';\n\nconst InlineEnd = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, style, className, ...divProps } = props;\n const ctx = useChatbarContext();\n // Use CSS to hide when open instead of unmounting to avoid layout animation scale\n if (ctx.open) return null;\n const Comp = asChild ? Slot : ('div' as any);\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineEnd', className)} style={style}>\n {children}\n </Comp>\n );\n});\nInlineEnd.displayName = 'Chatbar.InlineEnd';\n\n/**\n * Renders a horizontally scrollable list of attachments above the inline row.\n * Hidden when empty unless `forceMount`. Override per-item with `renderAttachment`.\n */\ninterface AttachmentsRowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n forceMount?: boolean;\n /** If provided, custom-render a tile; otherwise default tile is used */\n renderAttachment?: (attachment: ChatbarAttachment) => React.ReactNode;\n}\n\nconst AttachmentsRow = React.forwardRef<HTMLDivElement, AttachmentsRowProps>((props, forwardedRef) => {\n const { asChild, forceMount, renderAttachment, className, style, ...divProps } = props;\n const ctx = useChatbarContext();\n const hasItems = ctx.attachments.length > 0;\n if (!hasItems && !forceMount) return null;\n const Comp = asChild ? Slot : ('div' as any);\n return (\n <m.div\n layout=\"position\"\n transition={{\n layout: {\n type: 'spring',\n visualDuration: 0.15,\n bounce: 0.1,\n },\n }}\n >\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarAttachmentsRow', className)} style={style} role=\"list\" aria-label={divProps['aria-label'] ?? 'Attachments'}>\n <ScrollArea className=\"rt-ChatbarScrollArea\" scrollbars=\"horizontal\" size=\"1\">\n <Flex align=\"center\" gap=\"2\" style={{ minWidth: 'fit-content' }}>\n {ctx.attachments.map((att) => (\n <Attachment key={att.id} attachment={att} asChild={!!renderAttachment}>\n {renderAttachment?.(att)}\n </Attachment>\n ))}\n </Flex>\n </ScrollArea>\n </Comp>\n </m.div>\n );\n});\nAttachmentsRow.displayName = 'Chatbar.AttachmentsRow';\n\n/** Default tile renderer for a single attachment. */\ninterface AttachmentProps extends React.ComponentPropsWithoutRef<'div'> {\n attachment: ChatbarAttachment;\n asChild?: boolean;\n}\n\nconst Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, forwardedRef) => {\n const { attachment, asChild, className, style, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const Comp = asChild ? Slot : ('div' as any);\n const isImage = !!attachment.url && attachment.type.startsWith('image/');\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarAttachment', className)} style={style} role=\"listitem\" data-kind={isImage ? 'image' : 'file'} title={attachment.name}>\n {children ?? (\n // <Card size={ctx.size} variant=\"surface\">\n <Flex align=\"center\" gap=\"2\" pr={!isImage ? '6' : undefined}>\n <div className=\"rt-ChatbarAttachmentPreview\" aria-hidden>\n {isImage ? <img className=\"rt-ChatbarAttachmentImage\" src={attachment.url} alt=\"\" /> : <FileTextIcon />}\n </div>\n {!isImage && (\n <Flex direction=\"column\" gap=\"0\" style={{ minWidth: 0 }}>\n <Text size={ctx.size} weight=\"medium\" style={{ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {attachment.name}\n </Text>\n <Text size=\"1\" color=\"gray\">\n {Math.ceil(attachment.size / 1024)} KB\n </Text>\n </Flex>\n )}\n <IconButton\n className=\"rt-ChatbarAttachmentRemove\"\n aria-label={`Remove ${attachment.name}`}\n size=\"1\"\n // size={ctx.size}\n variant=\"classic\"\n highContrast\n color=\"gray\"\n onClick={() => ctx.setAttachments(ctx.attachments.filter((a) => a.id !== attachment.id))}\n >\n <CloseIcon />\n </IconButton>\n </Flex>\n // </Card>\n )}\n </Comp>\n );\n});\nAttachment.displayName = 'Chatbar.Attachment';\n\ninterface AttachTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n accept?: string | string[];\n multiple?: boolean;\n}\n\nconst AttachTrigger = React.forwardRef<HTMLButtonElement, AttachTriggerProps>((props, forwardedRef) => {\n const { asChild, accept, multiple, className, style, ...buttonProps } = props;\n const ctx = useChatbarContext();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const Comp = asChild ? Slot : ('button' as any);\n // Prefer Chatbar.Root's accept when a local accept is not provided\n const mergedAccept = accept ?? ctx.accept;\n const actualAccept = (Array.isArray(mergedAccept) ? mergedAccept : (mergedAccept?.split(',') ?? [])).join(',');\n React.useEffect(() => {\n const handleWindowFocus = () => {\n // Reset guard when window regains focus after file dialog closes\n ctx.fileDialogOpenRef.current = false;\n };\n window.addEventListener('focus', handleWindowFocus);\n return () => window.removeEventListener('focus', handleWindowFocus);\n }, [ctx.fileDialogOpenRef]);\n return (\n <>\n <Comp\n {...(buttonProps as any)}\n ref={forwardedRef as any}\n className={classNames('rt-ChatbarAttachTrigger', className)}\n style={style}\n type={buttonProps.type ?? 'button'}\n aria-label={buttonProps['aria-label'] ?? 'Add attachments'}\n onPointerDown={(e: any) => {\n // Set guard before blur occurs (Safari fires blur before click)\n ctx.fileDialogOpenRef.current = true;\n buttonProps.onPointerDown?.(e);\n }}\n onMouseDown={(e: any) => {\n // Fallback for environments without Pointer Events\n ctx.fileDialogOpenRef.current = true;\n buttonProps.onMouseDown?.(e);\n }}\n onClick={(e: any) => {\n // Ensure file input opens reliably by clicking it first\n ctx.fileDialogOpenRef.current = true;\n if (inputRef.current) {\n inputRef.current.click();\n }\n // Then call user's onClick if provided\n buttonProps.onClick?.(e);\n }}\n />\n <input\n ref={inputRef}\n type=\"file\"\n accept={actualAccept}\n multiple={multiple ?? ctx.multiple}\n tabIndex={-1}\n style={{ display: 'none' }}\n onChange={(e) => {\n const files = Array.from(e.currentTarget.files ?? []);\n if (files.length > 0) {\n ctx.appendFiles(files);\n }\n // File dialog closed; allow normal blur handling\n ctx.fileDialogOpenRef.current = false;\n // Reset input value to allow selecting the same file again\n e.currentTarget.value = '';\n }}\n />\n </>\n );\n});\nAttachTrigger.displayName = 'Chatbar.AttachTrigger';\ninterface RowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst Row = React.forwardRef<HTMLDivElement, RowProps>((props, forwardedRef) => {\n const { asChild, children, className, style, ...divProps } = props;\n const ctx = useChatbarContext();\n if (!ctx.open) return null;\n const Comp = asChild ? Slot : ('div' as any);\n return (\n <m.div\n layout=\"position\"\n transition={{\n layout: {\n type: 'spring',\n visualDuration: 0.15,\n bounce: 0.1,\n },\n }}\n >\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRow', className)} style={style}>\n <Flex align=\"center\" justify=\"between\" width=\"100%\">\n {children}\n </Flex>\n </Comp>\n </m.div>\n );\n});\nRow.displayName = 'Chatbar.Row';\n\nconst RowStart = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, forwardedRef) => {\n const { className, style, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowStart', className)} style={style} />;\n});\nRowStart.displayName = 'Chatbar.RowStart';\n\nconst RowEnd = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>((props, forwardedRef) => {\n const { className, style, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowEnd', className)} style={style} />;\n});\nRowEnd.displayName = 'Chatbar.RowEnd';\n\ntype SendProps = Omit<IconButtonProps, 'aria-label' | 'aria-labelledby'> & {\n /** Optional override for accessible name. Defaults to \"Send\". */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n asChild?: boolean;\n clearOnSend?: boolean;\n};\n\nconst Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef) => {\n const { asChild, clearOnSend = true, disabled, children, className, style, size: sizeProp, variant: variantProp, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, ...buttonProps } = props;\n const ctx = useChatbarContext();\n\n const trimmed = ctx.value.trim();\n const hasContent = trimmed.length > 0 || ctx.attachments.length > 0;\n const visible = ctx.sendMode === 'always' || (ctx.sendMode === 'whenDirty' && hasContent);\n if (ctx.sendMode === 'never') return null;\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (ctx.disabled || ctx.readOnly) return;\n ctx.onSubmit?.({ value: ctx.value, attachments: ctx.attachments });\n if (clearOnSend) {\n if (!ctx.isValueControlled) ctx.setValue('');\n if (ctx.clearOnSubmit) ctx.setAttachments([]);\n }\n buttonProps.onClick?.(event);\n };\n\n return (\n <IconButton\n {...(buttonProps as any)}\n ref={forwardedRef as any}\n size={sizeProp ?? ctx.size}\n variant={variantProp ?? (ctx.open ? 'solid' : 'ghost')}\n disabled={disabled || ctx.disabled || ctx.readOnly}\n className={classNames('rt-ChatbarSend', className)}\n style={{\n opacity: visible ? 1 : 0,\n pointerEvents: visible ? 'auto' : 'none',\n ...style,\n }}\n asChild={asChild}\n onClick={handleClick}\n aria-label={ariaLabel ?? (ariaLabelledby ? undefined : 'Send')}\n aria-labelledby={ariaLabelledby}\n >\n {children ?? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-arrow-right-icon lucide-arrow-right\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n )}\n </IconButton>\n );\n});\nSend.displayName = 'Chatbar.Send';\n\nexport { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, AttachTrigger, Row, RowStart, RowEnd, Send };\nexport type { RootProps as ChatbarRootProps, TextareaProps as ChatbarTextareaProps, RowProps as ChatbarRowProps, SendProps as ChatbarSendProps, ChatbarAttachment };\n"],
5
+ "mappings": "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",
6
+ "names": ["components_exports", "__export", "AccessibleIcon", "accordion_exports", "alert_dialog_exports", "AspectRatio", "Avatar", "Badge", "Blockquote", "Box", "Button", "callout_exports", "Card", "chatbar_exports", "Checkbox", "checkbox_cards_exports", "checkbox_group_exports", "ChevronDownIcon", "Code", "combobox_exports", "Container", "context_menu_exports", "data_list_exports", "dialog_exports", "dropdown_menu_exports", "Em", "Flex", "Grid", "Heading", "hover_card_exports", "IconButton", "Image", "Inset", "Kbd", "Link", "navbar_exports", "popover_exports", "Portal", "Progress", "Quote", "Radio", "radio_cards_exports", "radio_group_exports", "Reset", "ScrollArea", "Section", "segmented_control_exports", "select_exports", "Separator", "sheet_exports", "shell_exports", "sidebar_exports", "Skeleton", "Slider", "Slot", "Slottable", "Spinner", "Strong", "Switch", "tab_nav_exports", "table_exports", "tabs_exports", "Text", "TextArea", "text_field_exports", "Theme", "ThemeContext", "ThemePanel", "ThemePanelContent", "ThickCheckIcon", "ThickChevronRightIcon", "ThickDividerHorizontalIcon", "ToggleButton", "ToggleIconButton", "Toolbar", "Tooltip", "UserCard", "VirtualMenu", "VisuallyHidden", "useThemeContext", "__toCommonJS", "import_radix_ui", "AccessibleIcon", "AccessibleIconPrimitive", "accordion_exports", "__export", "AccordionContent", "AccordionHeader", "AccordionItem", "AccordionRoot", "AccordionTrigger", "React", "import_classnames", "import_radix_ui", "asChildPropDef", "accentColors", "grayColors", "colorPropDef", "accentColorPropDef", "highContrastPropDef", "radii", "radiusPropDef", "sizes", "variants", "panelBackgrounds", "accordionRootPropDefs", "asChildPropDef", "colorPropDef", "highContrastPropDef", "radiusPropDef", "accordionItemPropDefs", "accordionHeaderPropDefs", "accordionTriggerPropDefs", "accordionContentPropDefs", "import_classnames", "breakpoints", "breakpointSet", "hasOwnProperty", "obj", "key", "breakpointSet", "isResponsiveObject", "obj", "key", "getResponsiveStyles", "className", "customProperties", "args", "responsiveClassNames", "getResponsiveClassNames", "responsiveCustomProperties", "getResponsiveCustomProperties", "allowArbitraryValues", "value", "propValues", "parseValue", "classNames", "getBaseClassName", "isResponsiveObject", "object", "bp", "hasOwnProperty", "breakpointSet", "baseClassName", "bpClassName", "delimiter", "matchedValue", "isNegative", "minus", "absoluteValue", "styles", "prop", "customProperty", "bpProperty", "key", "mergeStyles", "styles", "result", "style", "mergePropDefs", "args", "extractProps", "props", "propDefs", "className", "style", "extractedProps", "allPropDefs", "key", "value", "propDef", "isResponsiveObject", "isResponsivePropDef", "propClassName", "getResponsiveClassNames", "classNames", "propDefValues", "propClassNames", "propCustomProperties", "getResponsiveStyles", "mergeStyles", "AccordionRoot", "props", "forwardedRef", "className", "panelBackground", "material", "flush", "radius", "color", "extractedRadixProps", "extractProps", "accordionRootPropDefs", "radixProps", "effectiveMaterial", "handleKeyDown", "event", "items", "AccordionPrimitive", "classNames", "AccordionItem", "itemProps", "accordionItemPropDefs", "AccordionHeader", "headerProps", "accordionHeaderPropDefs", "AccordionTrigger", "children", "triggerProps", "accordionTriggerPropDefs", "triggerRef", "node", "AccordionContent", "contentProps", "accordionContentPropDefs", "alert_dialog_exports", "__export", "AlertDialogAction", "AlertDialogCancel", "AlertDialogContent", "AlertDialogDescription", "AlertDialogRoot", "AlertDialogTitle", "AlertDialogTrigger", "React", "import_classnames", "import_radix_ui", "widthPropDefs", "heightPropDefs", "contentSizes", "panelBackgrounds", "materials", "dialogContentPropDefs", "asChildPropDef", "widthPropDefs", "heightPropDefs", "materials", "alertDialogContentPropDefs", "dialogContentPropDefs", "React", "import_radix_ui", "leadingTrimValues", "leadingTrimPropDef", "textAlignValues", "textAlignPropDef", "textWrapValues", "textWrapPropDef", "truncatePropDef", "fontFamilies", "fontFamilyPropDef", "weights", "weightPropDef", "as", "sizes", "headingPropDefs", "asChildPropDef", "fontFamilyPropDef", "weightPropDef", "textAlignPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "colorPropDef", "highContrastPropDef", "marginValues", "marginPropDefs", "mergedPropDefs", "headingPropDefs", "marginPropDefs", "Heading", "props", "forwardedRef", "children", "className", "asChild", "Tag", "color", "headingProps", "extractProps", "combinedClassName", "React", "import_radix_ui", "as", "sizes", "textPropDefs", "asChildPropDef", "fontFamilyPropDef", "weightPropDef", "textAlignPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "colorPropDef", "highContrastPropDef", "mergedPropDefs", "textPropDefs", "marginPropDefs", "Text", "props", "forwardedRef", "children", "className", "asChild", "Tag", "color", "textProps", "extractProps", "combinedClassName", "React", "import_classnames", "import_radix_ui", "getMatchingGrayColor", "accentColor", "appearances", "panelBackgrounds", "materials", "scalings", "fontFamilies", "themePropDefs", "asChildPropDef", "accentColors", "grayColors", "radii", "noop", "defaultThemeContext", "themePropDefs", "ThemeContext", "useThemeContext", "Theme", "props", "forwardedRef", "TooltipPrimitive", "ThemeRoot", "ThemeImpl", "appearanceProp", "accentColorProp", "grayColorProp", "materialProp", "panelBackgroundProp", "radiusProp", "scalingProp", "fontFamilyProp", "hasBackground", "rootProps", "appearance", "setAppearance", "accentColor", "setAccentColor", "grayColor", "setGrayColor", "effectiveMaterial", "material", "setMaterial", "panelBackground", "setPanelBackground", "radius", "setRadius", "scaling", "setScaling", "fontFamily", "setFontFamily", "getClientOS", "ua", "context", "asChild", "isRoot", "hasBackgroundProp", "onAppearanceChange", "onAccentColorChange", "onGrayColorChange", "onMaterialChange", "onPanelBackgroundChange", "onRadiusChange", "onScalingChange", "onFontFamilyChange", "themeProps", "Comp", "resolvedGrayColor", "getMatchingGrayColor", "isExplicitAppearance", "clientOS", "setClientOS", "classNames", "React", "requireReactElement", "children", "child", "AlertDialogRoot", "props", "AlertDialogPrimitive", "AlertDialogTrigger", "children", "forwardedRef", "requireReactElement", "AlertDialogContent", "align", "alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "alertDialogContentPropDefs", "alignClassName", "extractProps", "extractedPanelBackground", "extractedMaterial", "materialValue", "className", "forceMount", "container", "_", "__", "contentProps", "contentRef", "combinedRef", "node", "content", "focusableElements", "firstElement", "lastElement", "handleKeyDown", "event", "Theme", "classNames", "AlertDialogTitle", "Heading", "AlertDialogDescription", "Text", "AlertDialogAction", "AlertDialogCancel", "import_radix_ui", "AspectRatio", "AspectRatioPrimitive", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "materials", "objectFitValues", "avatarPropDefs", "asChildPropDef", "accentColorPropDef", "highContrastPropDef", "radiusPropDef", "accentColors", "React", "getSubtree", "options", "content", "asChild", "children", "firstChild", "Avatar", "props", "forwardedRef", "asChild", "children", "className", "style", "color", "radius", "material", "panelBackground", "status", "badge", "imageProps", "extractProps", "avatarPropDefs", "marginPropDefs", "isDisabled", "hasIndicator", "AvatarPrimitive", "classNames", "getSubtree", "AvatarImpl", "fallback", "onLoadingStatusChange", "setStatus", "handleLoadingStatusChange", "newStatus", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "materials", "badgePropDefs", "asChildPropDef", "accentColorPropDef", "highContrastPropDef", "radiusPropDef", "React", "import_classnames", "import_radix_ui", "tooltipPropDefs", "widthPropDefs", "Tooltip", "props", "forwardedRef", "children", "className", "open", "defaultOpen", "onOpenChange", "delayDuration", "disableHoverableContent", "content", "container", "forceMount", "tooltipContentProps", "extractProps", "tooltipPropDefs", "rootProps", "TooltipPrimitive", "Theme", "classNames", "Text", "Badge", "props", "forwardedRef", "asChild", "className", "children", "color", "radius", "material", "panelBackground", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "badgeProps", "extractProps", "badgePropDefs", "marginPropDefs", "effectiveMaterial", "Comp", "badge", "classNames", "Tooltip", "React", "import_classnames", "import_radix_ui", "Blockquote", "props", "forwardedRef", "asChild", "children", "className", "blockquoteProps", "Comp", "Text", "classNames", "React", "import_classnames", "import_radix_ui", "Root", "SlotPrimitive", "Slot", "Slottable", "as", "displayValues", "boxPropDefs", "asChildPropDef", "paddingValues", "paddingPropDefs", "overflowValues", "positionValues", "positionEdgeValues", "flexShrinkValues", "flexGrowValues", "alignSelfValues", "justifySelfValues", "layoutPropDefs", "paddingPropDefs", "widthPropDefs", "heightPropDefs", "Box", "props", "forwardedRef", "className", "asChild", "Tag", "boxProps", "extractProps", "boxPropDefs", "layoutPropDefs", "marginPropDefs", "Slot", "classNames", "React", "import_classnames", "React", "import_classnames", "import_radix_ui", "import_internal", "sizes", "variants", "panelBackgrounds", "materials", "baseButtonPropDefs", "asChildPropDef", "accentColorPropDef", "highContrastPropDef", "radiusPropDef", "React", "import_classnames", "gapValues", "gapPropDefs", "as", "displayValues", "directionValues", "alignValues", "justifyValues", "wrapValues", "flexPropDefs", "asChildPropDef", "parseJustifyValue", "gapPropDefs", "value", "Flex", "props", "forwardedRef", "className", "asChild", "Tag", "flexProps", "extractProps", "flexPropDefs", "layoutPropDefs", "marginPropDefs", "Slot", "classNames", "React", "import_classnames", "sizes", "spinnerPropDefs", "Spinner", "props", "forwardedRef", "className", "children", "loading", "spinnerProps", "extractProps", "spinnerPropDefs", "marginPropDefs", "spinner", "classNames", "Flex", "import_radix_ui", "VisuallyHidden", "VisuallyHiddenPrimitive", "Root", "mapResponsiveProp", "propValue", "mapValue", "key", "value", "mapCalloutSizeToTextSize", "size", "mapButtonSizeToSpinnerSize", "BaseButton", "props", "forwardedRef", "size", "baseButtonPropDefs", "className", "children", "asChild", "as", "color", "radius", "material", "panelBackground", "flush", "disabled", "baseButtonProps", "extractProps", "marginPropDefs", "effectiveMaterial", "buttonRef", "materialRef", "button", "timeoutId", "cleanup", "transitionDuration", "duration", "observer", "Comp", "shouldPassDisabled", "isNativeButtonElement", "hasExplicitTypeAttribute", "loadingId", "describedById", "buttonText", "accessibilityProps", "classNames", "VisuallyHidden", "Flex", "Spinner", "mapResponsiveProp", "mapButtonSizeToSpinnerSize", "React", "useTooltipWrapper", "tooltip", "tooltipId", "hasTooltip", "accessibilityProps", "Button", "className", "style", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "overrideStyles", "props", "forwardedRef", "tooltipId", "hasTooltip", "tooltipAccessibilityProps", "useTooltipWrapper", "overrideVars", "vars", "setVar", "key", "value", "apply", "prefix", "s", "combinedStyle", "button", "BaseButton", "classNames", "Tooltip", "callout_exports", "__export", "CalloutIcon", "CalloutRoot", "CalloutText", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "materials", "calloutRootPropDefs", "asChildPropDef", "accentColorPropDef", "highContrastPropDef", "CalloutContext", "CalloutRoot", "props", "forwardedRef", "size", "calloutRootPropDefs", "live", "role", "variant", "asChild", "children", "className", "color", "panelBackground", "material", "rootProps", "extractProps", "marginPropDefs", "Comp", "classNames", "CalloutIcon", "CalloutText", "Text", "mapResponsiveProp", "mapCalloutSizeToTextSize", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "materials", "cardPropDefs", "asChildPropDef", "Card", "props", "forwardedRef", "asChild", "className", "panelBackground", "material", "flush", "inset", "cardProps", "extractProps", "cardPropDefs", "marginPropDefs", "effectiveMaterial", "Comp", "classNames", "checkbox_cards_exports", "__export", "CheckboxCardsItem", "CheckboxCardsRoot", "React", "import_classnames", "import_internal", "React", "import_radix_ui", "import_internal", "useDirection", "CHECKBOX_GROUP_NAME", "createCheckboxGroupContext", "createCheckboxGroupScope", "CheckboxPrimitive", "useRovingFocusGroupScope", "useCheckboxScope", "CheckboxGroupProvider", "useCheckboxGroupContext", "CheckboxGroup", "props", "forwardedRef", "__scopeCheckboxGroup", "name", "defaultValue", "valueProp", "required", "disabled", "orientation", "dir", "loop", "onValueChange", "groupProps", "rovingFocusGroupScope", "direction", "value", "setValue", "handleItemCheck", "itemValue", "prevValue", "handleItemUncheck", "ITEM_NAME", "CheckboxGroupItem", "itemProps", "context", "isDisabled", "checkboxScope", "ref", "composedRefs", "checked", "INDICATOR_NAME", "CheckboxGroupIndicator", "indicatorProps", "Root", "Item", "Indicator", "as", "displayValues", "columnsValues", "rowsValues", "flowValues", "alignValues", "justifyValues", "alignContentValues", "justifyItemsValues", "gridPropDefs", "asChildPropDef", "parseGridValue", "parseJustifyValue", "parseAlignContentValue", "gapPropDefs", "value", "sizes", "variants", "panelBackgrounds", "checkboxCardsRootPropDefs", "asChildPropDef", "colorPropDef", "highContrastPropDef", "gridPropDefs", "sizes", "variants", "materials", "baseCheckboxPropDefs", "colorPropDef", "highContrastPropDef", "React", "import_classnames", "Grid", "props", "forwardedRef", "className", "asChild", "Tag", "gridProps", "extractProps", "gridPropDefs", "layoutPropDefs", "marginPropDefs", "Slot", "classNames", "import_react", "ThickDividerHorizontalIcon", "React", "props", "forwardedRef", "ThickCheckIcon", "ChevronDownIcon", "ThickChevronRightIcon", "ThickChevronLeftIcon", "ThickDotIcon", "CloseIcon", "React", "_props", "_forwardedRef", "PaperclipIcon", "props", "forwardedRef", "FileIcon", "FileTextIcon", "CHECKBOX_CARD_GROUP_NAME", "createCheckboxCardsContext", "createCheckboxGroupScope", "useCheckboxGroupScope", "CheckboxCardsProvider", "useCheckboxCardsContext", "CheckboxCardsRoot", "props", "forwardedRef", "themeContext", "useThemeContext", "panelBackground", "__scopeCheckboxCards", "className", "color", "_", "rootProps", "extractProps", "checkboxCardsRootPropDefs", "marginPropDefs", "checkboxGroupScope", "Grid", "Root", "classNames", "CheckboxCardsItem", "children", "style", "context", "checkboxClassName", "baseCheckboxPropDefs", "variantClass", "sizeClass", "Item", "Indicator", "ThickCheckIcon", "checkbox_group_exports", "__export", "CheckboxGroupItem", "CheckboxGroupRoot", "React", "import_classnames", "import_internal", "checkboxGroupRootPropDefs", "asChildPropDef", "baseCheckboxPropDefs", "CHECKBOX_GROUP_NAME", "createCheckboxGroupContext", "createCheckboxGroupScope", "useCheckboxGroupScope", "CheckboxGroupProvider", "useCheckboxGroupContext", "CheckboxGroupRoot", "color", "checkboxGroupRootPropDefs", "highContrast", "size", "variant", "props", "forwardedRef", "__scopeCheckboxGroup", "className", "rootProps", "extractProps", "marginPropDefs", "checkboxGroupScope", "Root", "classNames", "CheckboxGroupItem", "_props", "children", "style", "getTextSize", "sizeValue", "Text", "CheckboxGroupItemCheckbox", "context", "Item", "Indicator", "ThickCheckIcon", "React", "import_classnames", "import_radix_ui", "import_internal", "Checkbox", "props", "forwardedRef", "className", "color", "material", "checkedProp", "defaultCheckedProp", "onCheckedChange", "checkboxProps", "extractProps", "baseCheckboxPropDefs", "marginPropDefs", "checked", "setChecked", "CheckboxPrimitive", "classNames", "ThickDividerHorizontalIcon", "ThickCheckIcon", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "codePropDefs", "asChildPropDef", "weightPropDef", "accentColorPropDef", "highContrastPropDef", "truncatePropDef", "textWrapPropDef", "Code", "props", "forwardedRef", "asChild", "className", "color", "codeProps", "extractProps", "codePropDefs", "marginPropDefs", "resolvedColor", "Comp", "classNames", "React", "import_classnames", "import_radix_ui", "sizes", "displayValues", "alignValues", "containerPropDefs", "asChildPropDef", "parseDisplayValue", "parseAlignValue", "value", "Container", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "props", "forwardedRef", "asChild", "children", "className", "containerProps", "extractProps", "containerPropDefs", "layoutPropDefs", "marginPropDefs", "innerClassName", "innerStyle", "widthPropDefs", "heightPropDefs", "Comp", "classNames", "getSubtree", "context_menu_exports", "__export", "ContextMenuCheckboxItem", "ContextMenuContent", "ContextMenuGroup", "ContextMenuItem", "ContextMenuLabel", "ContextMenuRadioGroup", "ContextMenuRadioItem", "ContextMenuRoot", "ContextMenuSeparator", "ContextMenuSub", "ContextMenuSubContent", "ContextMenuSubTrigger", "ContextMenuTrigger", "React", "import_classnames", "import_radix_ui", "React", "import_classnames", "import_radix_ui", "sizes", "scrollbarsValues", "scrollAreaPropDefs", "asChildPropDef", "radiusPropDef", "extractMarginProps", "props", "m", "mx", "my", "mt", "mr", "mb", "ml", "rest", "import_classnames", "marginValues", "marginPropDefs", "getMarginStyles", "props", "mClassNames", "mCustomProperties", "getResponsiveStyles", "mxClassNames", "mxCustomProperties", "myClassNames", "myCustomProperties", "mtClassNames", "mtCustomProperties", "mrClassNames", "mrCustomProperties", "mbClassNames", "mbCustomProperties", "mlClassNames", "mlCustomProperties", "classNames", "mergeStyles", "ScrollArea", "props", "forwardedRef", "marginRest", "marginProps", "extractMarginProps", "marginClassNames", "marginCustomProperties", "getMarginStyles", "asChild", "children", "className", "style", "type", "scrollHideDelay", "dir", "size", "scrollAreaPropDefs", "radius", "scrollbars", "viewportProps", "ScrollAreaPrimitive", "classNames", "mergeStyles", "getSubtree", "getResponsiveClassNames", "contentSizes", "contentVariants", "panelBackgrounds", "materials", "submenuBehaviors", "baseMenuSharedPropDefs", "colorPropDef", "highContrastPropDef", "baseMenuContentPropDefs", "baseMenuSubContentPropDefs", "baseMenuItemPropDefs", "asChildPropDef", "baseMenuCheckboxItemPropDefs", "baseMenuRadioItemPropDefs", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "kbdPropDefs", "asChildPropDef", "Kbd", "props", "forwardedRef", "asChild", "className", "kbdProps", "extractProps", "kbdPropDefs", "marginPropDefs", "Comp", "classNames", "ContextMenuRoot", "props", "ContextMenuPrimitive", "ContextMenuTrigger", "children", "forwardedRef", "requireReactElement", "ContextMenuContentContext", "ContextMenuContent", "themeContext", "useThemeContext", "effectiveMaterial", "memoizedThemeContext", "size", "baseMenuContentPropDefs", "variant", "highContrast", "material", "className", "color", "container", "forceMount", "_", "__", "contentProps", "extractProps", "resolvedColor", "Theme", "classNames", "ScrollArea", "ContextMenuLabel", "ContextMenuItem", "baseMenuItemPropDefs", "shortcut", "itemProps", "Kbd", "ContextMenuGroup", "ContextMenuRadioGroup", "ContextMenuRadioItem", "baseMenuRadioItemPropDefs", "ThickCheckIcon", "ContextMenuCheckboxItem", "baseMenuCheckboxItemPropDefs", "ContextMenuSub", "ContextMenuSubTrigger", "subTriggerProps", "ThickChevronRightIcon", "ContextMenuSubContent", "subContentProps", "ContextMenuSeparator", "data_list_exports", "__export", "DataListItem", "DataListLabel", "DataListRoot", "DataListValue", "import_classnames", "React", "alignValues", "orientationValues", "sizes", "dataListRootPropDefs", "leadingTrimPropDef", "dataListItemPropDefs", "dataListLabelPropDefs", "widthPropDefs", "colorPropDef", "highContrastPropDef", "DataListRoot", "props", "forwardedRef", "className", "dataListProps", "extractProps", "dataListRootPropDefs", "marginPropDefs", "Text", "classNames", "DataListItem", "itemProps", "dataListItemPropDefs", "DataListLabel", "color", "labelProps", "dataListLabelPropDefs", "DataListValue", "children", "dialog_exports", "__export", "DialogClose", "DialogContent", "DialogDescription", "DialogRoot", "DialogTitle", "DialogTrigger", "React", "import_classnames", "import_radix_ui", "React", "cleanupInstalled", "useBodyPointerEventsCleanup", "hasOpenModal", "hasDialogs", "hasRadixOverlays", "forceCleanup", "safeCleanup", "onDocumentClick", "event", "target", "onEscapeKey", "onInteraction", "intervalId", "DialogRoot", "props", "DialogPrimitive", "DialogTrigger", "children", "forwardedRef", "requireReactElement", "DialogContent", "align", "alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "dialogContentPropDefs", "alignClassName", "extractProps", "extractedPanelBackground", "extractedMaterial", "materialValue", "className", "forceMount", "container", "_", "__", "contentProps", "contentRef", "combinedRef", "node", "useBodyPointerEventsCleanup", "content", "focusableElements", "firstElement", "lastElement", "handleKeyDown", "event", "Theme", "classNames", "DialogTitle", "Heading", "DialogDescription", "Text", "DialogClose", "dropdown_menu_exports", "__export", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuRoot", "DropdownMenuSeparator", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger", "DropdownMenuTriggerIcon", "React", "import_classnames", "import_radix_ui", "React", "React", "_BREAKPOINTS", "useBreakpoint", "currentBp", "setCurrentBp", "ready", "setReady", "mqls", "_BREAKPOINTS", "k", "q", "compute", "_e", "matched", "m", "next", "cleanups", "mm", "fn", "resolveResponsiveValue", "value", "currentBreakpoint", "defaultValue", "map", "bpOrder", "startIdx", "i", "bp", "DrillDownActionsContext", "DrillDownStateContext", "DrillDownProvider", "children", "submenuBehavior", "breakpoint", "ready", "useBreakpoint", "stack", "setStack", "animationDirection", "setAnimationDirection", "behavior", "prevBehaviorRef", "push", "id", "prev", "pop", "reset", "actionsValue", "isActive", "stateValue", "useDrillDownActionsOptional", "DrillDownActionsContext", "useDrillDownStateOptional", "DrillDownStateContext", "SubContext", "useSubContext", "React", "MenuContext", "resolveSize", "size", "MenuProvider", "children", "resolvedSize", "value", "useMenuContext", "menuSizeToItemHeight", "DropdownMenuRoot", "props", "DropdownMenuPrimitive", "DropdownMenuTrigger", "children", "forwardedRef", "requireReactElement", "DrillDownRoot", "drillDownState", "useDrillDownStateOptional", "DropdownMenuContentContext", "DropdownMenuContent", "themeContext", "useThemeContext", "effectiveMaterial", "memoizedThemeContext", "size", "baseMenuContentPropDefs", "variant", "highContrast", "material", "submenuBehavior", "virtualized", "className", "color", "container", "forceMount", "_", "__", "___", "____", "contentProps", "extractProps", "resolvedColor", "contentBody", "MenuProvider", "DrillDownProvider", "Theme", "classNames", "ScrollArea", "DropdownMenuLabel", "DropdownMenuItem", "baseMenuItemPropDefs", "shortcut", "itemProps", "Kbd", "DropdownMenuGroup", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "baseMenuRadioItemPropDefs", "ThickDotIcon", "DropdownMenuCheckboxItem", "baseMenuCheckboxItemPropDefs", "ThickCheckIcon", "useSubId", "DropdownMenuSub", "label", "subId", "subContextValue", "SubContext", "DropdownMenuSubTrigger", "onClick", "subTriggerProps", "drillDownActions", "useDrillDownActionsOptional", "subContext", "useSubContext", "onClickRef", "handleClick", "e", "handleKeyDown", "ThickChevronRightIcon", "DropdownMenuSeparator", "DrillDownBackItem", "pop", "ThickChevronLeftIcon", "DropdownMenuSubContent", "subContentProps", "baseMenuSubContentPropDefs", "isActive", "DropdownMenuTriggerIcon", "ChevronDownIcon", "combobox_exports", "__export", "ComboboxContent", "ComboboxEmpty", "ComboboxGroup", "ComboboxInput", "ComboboxItem", "ComboboxLabel", "ComboboxList", "ComboboxRoot", "ComboboxSeparator", "ComboboxTrigger", "ComboboxValue", "React", "import_classnames", "import_internal", "import_cmdk", "sizes", "comboboxRootPropDefs", "highContrastPropDef", "triggerVariants", "comboboxTriggerPropDefs", "colorPropDef", "radiusPropDef", "widthPropDefs", "contentVariants", "comboboxContentPropDefs", "popover_exports", "__export", "PopoverAnchor", "PopoverClose", "PopoverContent", "PopoverRoot", "PopoverToolbar", "PopoverTrigger", "React", "import_classnames", "import_radix_ui", "contentSizes", "panelBackgrounds", "popoverContentPropDefs", "asChildPropDef", "widthPropDefs", "heightPropDefs", "PopoverContentContext", "usePopoverContentContext", "caller", "ctx", "PopoverRoot", "props", "PopoverPrimitive", "PopoverTrigger", "children", "forwardedRef", "requireReactElement", "PopoverContent", "themeContext", "useThemeContext", "panelBackground", "className", "forceMount", "container", "_", "contentProps", "extractProps", "popoverContentPropDefs", "contentRef", "combinedRef", "node", "labelId", "setLabelId", "setToolbarOffset", "offsetPx", "el", "Theme", "classNames", "PopoverClose", "PopoverAnchor", "PopoverToolbarBase", "localRef", "setRefs", "update", "height", "ro", "PopoverToolbarLeft", "ref", "PopoverToolbarCenter", "PopoverToolbarRight", "PopoverToolbarTitle", "idProp", "reactId", "id", "PopoverToolbar", "sizes", "variants", "panelBackgrounds", "materials", "textFieldRootPropDefs", "colorPropDef", "radiusPropDef", "sides", "textFieldSlotPropDefs", "flexPropDefs", "paddingPropDefs", "ComboboxContext", "useComboboxContext", "componentName", "ctx", "name", "ComboboxContentContext", "useComboboxContentContext", "ComboboxRoot", "props", "children", "size", "comboboxRootPropDefs", "highContrast", "valueProp", "defaultValue", "onValueChange", "openProp", "defaultOpen", "onOpenChange", "placeholder", "searchPlaceholder", "searchValueProp", "defaultSearchValue", "onSearchValueChange", "filter", "shouldFilter", "loop", "disabled", "resetSearchOnSelect", "color", "displayValueProp", "rootProps", "listboxId", "open", "setOpen", "value", "setValue", "searchValue", "setSearchValue", "resolvedDisplayValue", "onSelect", "nextValue", "contextValue", "cmdkConfigRef", "CmdkConfigContext", "PopoverRoot", "ComboboxTrigger", "forwardedRef", "className", "readOnly", "error", "loading", "radius", "triggerProps", "extractProps", "comboboxTriggerPropDefs", "marginPropDefs", "material", "panelBackground", "isDisabled", "resolvedColor", "defaultContent", "ChevronDownIcon", "buttonType", "restTriggerProps", "PopoverTrigger", "classNames", "requireReactElement", "ComboboxValue", "valueProps", "display", "ComboboxContent", "themeContext", "useThemeContext", "effectiveMaterial", "sizeProp", "comboboxContentPropDefs", "variantProp", "highContrastProp", "forceMount", "container", "contentProps", "contentContextValue", "PopoverContent", "Theme", "CommandPrimitive", "ComboboxInput", "startAdornment", "endAdornment", "inputVariant", "inputProps", "contentContext", "contentVariant", "textFieldVariant", "handleSearchChange", "sizeClass", "inputField", "ComboboxList", "listProps", "ComboboxEmpty", "emptyProps", "ComboboxGroup", "groupProps", "ComboboxLabel", "labelProps", "ComboboxSeparator", "separatorProps", "ComboboxItem", "label", "keywords", "itemProps", "isSelected", "onSelectFromContext", "handleSelect", "searchKeywords", "ThickCheckIcon", "Slottable", "React", "import_classnames", "import_radix_ui", "emPropDefs", "asChildPropDef", "truncatePropDef", "textWrapPropDef", "Em", "props", "forwardedRef", "asChild", "className", "emProps", "extractProps", "emPropDefs", "Comp", "classNames", "hover_card_exports", "__export", "HoverCardContent", "HoverCardRoot", "HoverCardTrigger", "React", "import_classnames", "import_radix_ui", "contentSizes", "hoverCardContentPropDefs", "asChildPropDef", "widthPropDefs", "heightPropDefs", "HoverCardRoot", "props", "HoverCardPrimitive", "HoverCardTrigger", "children", "className", "forwardedRef", "classNames", "requireReactElement", "HoverCardContent", "forceMount", "container", "contentProps", "extractProps", "hoverCardContentPropDefs", "Theme", "React", "import_classnames", "IconButton", "className", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "props", "forwardedRef", "tooltipId", "hasTooltip", "tooltipAccessibilityProps", "useTooltipWrapper", "hasAriaLabel", "hasAriaLabelledBy", "hasChildren", "iconButton", "BaseButton", "classNames", "Tooltip", "React", "import_classnames", "objectFitValues", "imagePropDefs", "asChildPropDef", "radiusPropDef", "React", "import_classnames", "import_radix_ui", "React", "inert", "skeletonPropDefs", "widthPropDefs", "heightPropDefs", "Skeleton", "props", "forwardedRef", "children", "className", "loading", "skeletonProps", "extractProps", "skeletonPropDefs", "marginPropDefs", "Tag", "classNames", "inert", "Image", "props", "forwardedRef", "nativeWidth", "nativeHeight", "hasFill", "Component", "_asChild", "_fill", "className", "style", "loading", "alt", "src", "placeholder", "showSkeleton", "fadeIn", "loadingAriaLabel", "errorAriaLabel", "radius", "caption", "userOnLoad", "userOnError", "restProps", "extractProps", "imagePropDefs", "marginPropDefs", "widthPropDefs", "heightPropDefs", "layoutPropDefs", "componentDimensionProps", "loadingState", "setLoadingState", "showPlaceholder", "setShowPlaceholder", "imgRef", "handleLoad", "event", "handleError", "img", "isLoading", "isError", "isLoaded", "imgStyle", "imageElement", "node", "classNames", "loadingAnnouncement", "errorAnnouncement", "skeletonElement", "Skeleton", "placeholderElement", "wrapperStyle", "React", "import_classnames", "import_radix_ui", "sides", "clipValues", "paddingValues", "insetPropDefs", "asChildPropDef", "parsePaddingValue", "value", "Inset", "props", "forwardedRef", "asChild", "className", "insetProps", "extractProps", "insetPropDefs", "marginPropDefs", "Comp", "classNames", "React", "import_classnames", "sizes", "underline", "linkPropDefs", "asChildPropDef", "weightPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "accentColorPropDef", "highContrastPropDef", "Link", "props", "forwardedRef", "children", "className", "color", "asChild", "linkProps", "extractProps", "linkPropDefs", "Text", "classNames", "navbar_exports", "__export", "NavbarActions", "NavbarLogo", "NavbarNavigation", "NavbarRoot", "React", "import_classnames", "positions", "sizes", "navbarRootPropDefs", "NavbarRoot", "props", "forwardedRef", "children", "className", "rootProps", "extractProps", "navbarRootPropDefs", "position", "size", "classNames", "NavbarLogo", "asChild", "gap", "align", "justify", "ref", "Slot", "Flex", "NavbarNavigation", "NavbarActions", "import_radix_ui", "Portal", "PortalPrimitive", "Root", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "progressPropDefs", "colorPropDef", "highContrastPropDef", "radiusPropDef", "Progress", "props", "forwardedRef", "className", "style", "color", "radius", "duration", "progressProps", "extractProps", "progressPropDefs", "marginPropDefs", "ProgressPrimitive", "classNames", "mergeStyles", "React", "import_classnames", "import_radix_ui", "quotePropDefs", "asChildPropDef", "truncatePropDef", "textWrapPropDef", "Quote", "props", "forwardedRef", "asChild", "className", "quoteProps", "extractProps", "quotePropDefs", "Comp", "classNames", "radio_cards_exports", "__export", "RadioCardsItem", "RadioCardsRoot", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "radioCardsRootPropDefs", "asChildPropDef", "colorPropDef", "highContrastPropDef", "gridPropDefs", "RadioCardsContext", "useRadioCardsContext", "RadioCardsRoot", "props", "forwardedRef", "themeContext", "useThemeContext", "panelBackground", "className", "color", "_", "rootProps", "extractProps", "radioCardsRootPropDefs", "marginPropDefs", "Grid", "RadioGroupPrimitive", "classNames", "RadioCardsItem", "context", "variantClass", "sizeClass", "radio_group_exports", "__export", "RadioGroupItem", "RadioGroupRoot", "React", "import_classnames", "import_internal", "import_radix_ui", "sizes", "variants", "radioGroupRootPropDefs", "asChildPropDef", "colorPropDef", "highContrastPropDef", "RADIO_GROUP_NAME", "createRadioGroupContext", "RadioGroupPrimitive", "useRadioGroupScope", "RadioGroupProvider", "useRadioGroupContext", "RadioGroupRoot", "color", "radioGroupRootPropDefs", "highContrast", "size", "variant", "props", "forwardedRef", "__scopeRadioGroup", "className", "rootProps", "extractProps", "marginPropDefs", "radioGroupScope", "classNames", "RadioGroupItem", "_props", "children", "style", "Text", "RadioGroupItemRadio", "context", "React", "import_classnames", "import_internal", "sizes", "variants", "materials", "baseRadioPropDefs", "colorPropDef", "highContrastPropDef", "Radio", "props", "forwardedRef", "className", "color", "material", "onChange", "onValueChange", "radioProps", "extractProps", "baseRadioPropDefs", "marginPropDefs", "event", "classNames", "React", "import_classnames", "import_radix_ui", "Reset", "className", "children", "props", "forwardedRef", "classNames", "requireReactElement", "segmented_control_exports", "__export", "SegmentedControlItem", "SegmentedControlRoot", "React", "import_classnames", "import_radix_ui", "import_internal", "sizes", "variants", "orientations", "segmentedControlRootPropDefs", "radiusPropDef", "SegmentedControlRoot", "props", "forwardedRef", "className", "children", "radius", "valueProp", "defaultValueProp", "onValueChangeProp", "rootProps", "extractProps", "segmentedControlRootPropDefs", "marginPropDefs", "value", "setValue", "ToggleGroupPrimitive", "classNames", "SegmentedControlItem", "iconOnly", "React", "import_classnames", "import_radix_ui", "sizes", "displayValues", "sectionPropDefs", "asChildPropDef", "parseDisplayValue", "value", "Section", "props", "forwardedRef", "asChild", "className", "sectionProps", "extractProps", "sectionPropDefs", "layoutPropDefs", "marginPropDefs", "Comp", "classNames", "select_exports", "__export", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectRoot", "SelectSeparator", "SelectTrigger", "React", "import_classnames", "import_radix_ui", "sizes", "selectRootPropDefs", "triggerVariants", "selectTriggerPropDefs", "colorPropDef", "radiusPropDef", "contentVariants", "selectContentPropDefs", "highContrastPropDef", "SelectContext", "SelectRoot", "props", "children", "size", "selectRootPropDefs", "rootProps", "SelectPrimitive", "SelectTrigger", "forwardedRef", "context", "className", "color", "radius", "placeholder", "error", "loading", "disabled", "readOnly", "triggerProps", "extractProps", "selectTriggerPropDefs", "marginPropDefs", "panelBackground", "ariaProps", "classNames", "ChevronDownIcon", "SelectContent", "container", "contentProps", "selectContentPropDefs", "themeContext", "useThemeContext", "resolvedColor", "Theme", "ScrollAreaPrimitive", "SelectItem", "itemProps", "isRichContent", "ThickCheckIcon", "SelectGroup", "SelectLabel", "SelectSeparator", "React", "import_classnames", "orientationValues", "sizes", "separatorPropDefs", "colorPropDef", "Separator", "props", "forwardedRef", "className", "color", "decorative", "separatorProps", "extractProps", "separatorPropDefs", "marginPropDefs", "classNames", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "sliderPropDefs", "colorPropDef", "highContrastPropDef", "radiusPropDef", "Slider", "props", "forwardedRef", "className", "color", "radius", "tabIndex", "sliderProps", "extractProps", "sliderPropDefs", "marginPropDefs", "ticks", "showTickLabels", "snapToTicks", "unit", "min", "max", "currentValue", "isRange", "step", "sortedTicks", "a", "b", "snapToNearestTick", "value", "left", "right", "mid", "leftDistance", "rightDistance", "formatValueText", "values", "formatValue", "val", "tickElements", "tick", "index", "announceRef", "announceTimeoutRef", "onValueChange", "handleValueChange", "newValue", "finalValue", "v", "valueText", "SliderPrimitive", "classNames", "currentValues", "React", "import_classnames", "import_radix_ui", "strongPropDefs", "asChildPropDef", "truncatePropDef", "textWrapPropDef", "Strong", "props", "forwardedRef", "asChild", "className", "strongProps", "extractProps", "strongPropDefs", "Comp", "classNames", "React", "import_classnames", "import_radix_ui", "sizes", "variants", "panelBackgrounds", "materials", "switchPropDefs", "colorPropDef", "highContrastPropDef", "Switch", "props", "forwardedRef", "className", "color", "panelBackground", "material", "switchProps", "extractProps", "switchPropDefs", "marginPropDefs", "effectiveMaterial", "SwitchPrimitive", "classNames", "tab_nav_exports", "__export", "TabNavLink", "TabNavRoot", "React", "import_classnames", "import_radix_ui", "sizes", "wrapValues", "justifyValues", "panelBackgrounds", "baseTabListPropDefs", "colorPropDef", "highContrastPropDef", "tabNavLinkPropDefs", "asChildPropDef", "TabNavRoot", "props", "forwardedRef", "children", "className", "color", "panelBackground", "rootProps", "extractProps", "baseTabListPropDefs", "marginPropDefs", "classNames", "TabNavLink", "asChild", "active", "linkProps", "getSubtree", "table_exports", "__export", "TableBody", "TableCell", "TableColumnHeaderCell", "TableHeader", "TableRoot", "TableRow", "TableRowHeaderCell", "React", "import_classnames", "sizes", "variants", "layoutValues", "tableRootPropDefs", "rowAlign", "tableRowPropDefs", "parseAlignValue", "value", "justifyValues", "tableCellPropDefs", "parseJustifyValue", "widthPropDefs", "paddingPropDefs", "TableRoot", "props", "forwardedRef", "layoutPropDef", "rootPropDefs", "tableRootPropDefs", "className", "children", "layout", "rootProps", "extractProps", "marginPropDefs", "tableLayoutClassNames", "getResponsiveClassNames", "classNames", "ScrollArea", "TableHeader", "TableBody", "TableRow", "rowProps", "tableRowPropDefs", "TableCell", "cellProps", "tableCellPropDefs", "TableColumnHeaderCell", "TableRowHeaderCell", "tabs_exports", "__export", "TabsContent", "TabsList", "TabsRoot", "TabsTrigger", "React", "import_classnames", "import_radix_ui", "tabsRootPropDefs", "asChildPropDef", "tabsContentPropDefs", "TabsRoot", "props", "forwardedRef", "className", "rootProps", "extractProps", "marginPropDefs", "TabsPrimitive", "classNames", "TabsList", "color", "panelBackground", "listProps", "baseTabListPropDefs", "TabsTrigger", "children", "triggerProps", "TabsContent", "contentProps", "React", "import_classnames", "sizes", "variants", "resizeValues", "panelBackgrounds", "materials", "textAreaPropDefs", "colorPropDef", "radiusPropDef", "TextArea", "props", "forwardedRef", "className", "color", "radius", "panelBackground", "material", "style", "textAreaProps", "extractProps", "textAreaPropDefs", "marginPropDefs", "effectiveMaterial", "errorId", "ariaDescribedby", "ariaLabelledby", "isInvalid", "describedBy", "parts", "ariaProps", "error", "errorMessage", "_isInvalid", "required", "_ariaDescribedby", "_ariaLabelledby", "nativeTextAreaProps", "classNames", "text_field_exports", "__export", "TextFieldRoot", "TextFieldSlot", "React", "ReactDOM", "import_classnames", "import_internal", "TextFieldRoot", "props", "forwardedRef", "inputRef", "children", "className", "color", "radius", "panelBackground", "material", "style", "inputProps", "extractProps", "textFieldRootPropDefs", "marginPropDefs", "effectiveMaterial", "errorId", "isInvalid", "ariaDescribedby", "ariaLabelledby", "describedBy", "parts", "ariaProps", "error", "errorMessage", "_isInvalid", "required", "_ariaDescribedby", "_ariaLabelledby", "nativeInputProps", "handlePointerDown", "event", "target", "input", "cursorPosition", "classNames", "usePointerCapture", "ua", "isSafari", "isFirefox", "TextFieldSlot", "scrub", "scrubValue", "scrubStep", "scrubSensitivity", "scrubMin", "scrubMax", "scrubShiftMultiplier", "scrubAltMultiplier", "onScrub", "restProps", "side", "slotProps", "textFieldSlotPropDefs", "slotRef", "isScrubbing", "setIsScrubbing", "setCursorPosition", "accumulatedMovement", "currentValue", "virtualX", "pointerIdRef", "lastXRef", "scrubConfigRef", "slot", "handlePointerLockChange", "isLocked", "processScrubMovement", "movementX", "movementY", "shiftKey", "altKey", "config", "viewportWidth", "viewportHeight", "prev", "newY", "stepsFromMovement", "multiplier", "wholeSteps", "delta", "clampedDelta", "newValue", "clampedValue", "endScrubbing", "handlePointerMove", "handlePointerUp", "handleLostPointerCapture", "handleMouseMove", "handleMouseUp", "virtualCursor", "React", "import_internal", "import_react_dom", "keyboardInputElement", "ThemePanel", "defaultOpen", "props", "forwardedRef", "open", "setOpen", "triggerRef", "previouslyFocusedElementRef", "handleKeydown", "event", "isModifierActive", "isKeyboardInputActive", "isOpen", "ThemePanelImpl", "Tooltip", "Kbd", "onAppearanceChange", "shortcut", "panelProps", "themeContext", "useThemeContext", "Theme", "Flex", "inert", "ScrollArea", "Box", "ThemePanelContent", "onAppearanceChangeProp", "contextProp", "contentProps", "appearance", "accentColor", "onAccentColorChange", "grayColor", "onGrayColorChange", "panelBackground", "onPanelBackgroundChange", "radius", "onRadiusChange", "scaling", "onScalingChange", "resolvedAppearance", "setResolvedAppearance", "hasOnAppearanceChangeProp", "handleAppearanceChangeProp", "handleAppearanceChange", "value", "cleanup", "disableAnimation", "updateRootAppearanceClass", "autoMatchedGray", "getMatchingGrayColor", "resolvedGrayColor", "copyState", "setCopyState", "handleCopyThemeConfig", "theme", "themePropDefs", "key", "textToCopy", "root", "body", "update", "hasDarkClass", "classNameObserver", "mutations", "mutation", "Heading", "ThemePanelSection", "ThemePanelHeading", "color", "upperFirst", "gray", "Grid", "Text", "PopoverRoot", "PopoverTrigger", "IconButton", "AccessibleIcon", "PopoverContent", "Button", "css", "string", "hasLightTheme", "hasDarkTheme", "hasLight", "hasDark", "React", "import_radix_ui", "React", "React", "liveRegionRefCount", "useLiveAnnouncer", "timeoutRef", "liveRegion", "region", "message", "useToggleState", "pressed", "onPressedChange", "getAccessibleName", "componentName", "announce", "useLiveAnnouncer", "warnedRef", "handlePressedChange", "newPressed", "accessibleName", "ToggleButton", "pressed", "onPressedChange", "defaultPressed", "children", "buttonProps", "forwardedRef", "getAccessibleName", "handlePressedChange", "useToggleState", "Button", "React", "import_radix_ui", "ToggleIconButton", "pressed", "onPressedChange", "defaultPressed", "iconButtonProps", "forwardedRef", "ariaLabel", "ariaLabelledBy", "children", "cachedLabelRef", "getAccessibleName", "labelElement", "handlePressedChange", "useToggleState", "IconButton", "React", "import_classnames", "ToolbarRoot", "props", "forwardedRef", "anchor", "floating", "offset", "size", "variant", "material", "className", "style", "children", "restProps", "isHorizontal", "internalRef", "mergedRef", "node", "element", "parent", "update", "dimension", "computedStyle", "margin", "resizeObserver", "Card", "classNames", "ToolbarLeft", "gap", "align", "Flex", "ToolbarCenter", "justify", "ToolbarRight", "ToolbarTitle", "weight", "truncate", "Heading", "Toolbar", "React", "import_classnames", "sizes", "variants", "avatarVariants", "panelBackgrounds", "userCardPropDefs", "asChildPropDef", "radiusPropDef", "accentColorPropDef", "highContrastPropDef", "UserCard", "props", "forwardedRef", "themeContext", "useThemeContext", "resolvedPanelBackground", "asChild", "children", "className", "src", "fallback", "name", "description", "avatarVariant", "radius", "color", "panelBackground", "flush", "restProps", "extractProps", "userCardPropDefs", "marginPropDefs", "sizeMap", "currentSize", "sizes", "content", "Flex", "Avatar", "Text", "Card", "classNames", "getSubtree", "React", "import_classnames", "import_react_virtual", "SimpleItem", "label", "_isHighlighted", "id", "style", "tabIndex", "dataHighlighted", "dataIndex", "onMouseEnter", "onMouseLeave", "onClick", "onKeyDown", "classNames", "prev", "next", "VirtualMenuRoot", "items", "itemLabel", "RenderItem", "sizeProp", "estimatedItemSizeProp", "overscan", "onSelect", "className", "ariaLabel", "menuId", "parentRef", "highlightedIndex", "setHighlightedIndex", "isInsideMenu", "contextSize", "useMenuContext", "estimatedItemSize", "menuSizeToItemHeight", "getLabel", "item", "safeHighlightedIndex", "getItemSize", "virtualizer", "virtualItems", "itemsRef", "onSelectRef", "scrollToIndexRef", "highlightedIndexRef", "handleItemMouseEnter", "e", "index", "handleItemClick", "idx", "currentItems", "noop", "handleItemKeyDown", "handleKeyDown", "currentHighlightedIndex", "nextIndex", "prevIndex", "lastIndex", "getItemId", "rootStyle", "totalSize", "viewportStyle", "virtualRow", "isHighlighted", "itemStyle", "commonProps", "VirtualMenuItemInner", "children", "props", "forwardedRef", "VirtualMenuItem", "prevProps", "nextProps", "prevStyle", "nextStyle", "VirtualMenu", "sidebar_exports", "__export", "SidebarContent", "SidebarFooter", "SidebarGroup", "SidebarGroupContent", "SidebarGroupLabel", "SidebarHeader", "SidebarMenu", "SidebarMenuButton", "SidebarMenuItem", "SidebarMenuSub", "SidebarMenuSubContent", "SidebarMenuSubTrigger", "Sidebar", "SidebarSearch", "SidebarSeparator", "React", "import_classnames", "Accordion", "sizes", "variants", "menuVariants", "types", "sides", "collapsibleModes", "layouts", "sidebarPropDefs", "asChildPropDef", "colorPropDef", "highContrastPropDef", "SidebarVisualContext", "useSidebarVisual", "Sidebar", "props", "forwardedRef", "themeContext", "useThemeContext", "size", "sidebarPropDefs", "variant", "menuVariant", "layout", "presentation", "panelBackground", "color", "highContrast", "className", "children", "rootProps", "extractProps", "_", "__", "___", "safeRootProps", "resolvedColor", "resolvedLayout", "resolvedSize", "visualContextValue", "classNames", "SidebarContent", "role", "ariaLabel", "id", "visual", "ScrollArea", "SidebarHeader", "asContainer", "SidebarFooter", "SidebarSeparator", "Separator", "SidebarMenu", "SidebarMenuItem", "separateIconsAndLabels", "node", "icons", "labels", "child", "el", "wrapTextNodes", "index", "newChildren", "SidebarMenuButton", "asChild", "isActive", "shortcut", "badge", "onKeyDown", "sidebarSize", "isThinMode", "Comp", "Slot", "onClick", "handleKeyDown", "event", "nextItem", "prevItem", "processedChildren", "slottedChildren", "onlyChild", "originalInnerChildren", "enhancedInnerChildren", "Badge", "Kbd", "label", "SidebarSubMenuModeContext", "SidebarMenuSub", "defaultOpen", "DropdownMenuRoot", "SidebarMenuSubTrigger", "DropdownMenuTrigger", "ThickChevronRightIcon", "SidebarMenuSubContent", "unwrapMenuButton", "n", "i", "normalized", "itemChildren", "content", "DropdownMenuItem", "dropdownSize", "DropdownMenuContent", "DropdownMenuGroup", "SidebarGroup", "SidebarGroupLabel", "SidebarGroupContent", "SearchIcon", "ClearIcon", "SidebarSearch", "value", "onValueChange", "placeholder", "isThin", "inputRef", "popoverRef", "resultsId", "valueRef", "onValueChangeRef", "searchLabel", "e", "handlePopoverKeyDown", "container", "resultsGroup", "items", "active", "isOnInput", "currentIndex", "PopoverRoot", "PopoverTrigger", "PopoverContent", "shell_exports", "__export", "Bottom", "Content", "Header", "Inspector", "Left", "Panel", "Rail", "Root", "Sidebar", "Trigger", "useResponsivePresentation", "useShell", "useSidebarMode", "React", "import_classnames", "sheet_exports", "__export", "Close", "Content", "Description", "Root", "Title", "Trigger", "React", "import_classnames", "import_radix_ui", "Root", "props", "DialogPrimitive", "Trigger", "children", "ref", "requireReactElement", "Content", "allProps", "forwardedRef", "side", "forceMount", "container", "className", "panelBackgroundProp", "materialProp", "restProps", "normalizedSide", "_alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "dialogContentPropDefs", "resolvedPanelBackground", "resolvedMaterial", "extractProps", "materialValue", "_mwDefault", "maxWidthWithoutDefault", "sheetPropDefs", "extractedClassName", "contentProps", "contentRef", "combinedRef", "node", "useBodyPointerEventsCleanup", "content", "focusableElements", "firstElement", "lastElement", "handleKeyDown", "event", "Theme", "classNames", "Title", "size", "weight", "Heading", "Description", "color", "rest", "Text", "Close", "React", "React", "ShellContext", "useShell", "ctx", "ShellProvider", "value", "children", "LeftModeContext", "useLeftMode", "PanelModeContext", "usePanelMode", "SidebarModeContext", "useSidebarMode", "InspectorModeContext", "useInspectorMode", "BottomModeContext", "useBottomMode", "PresentationContext", "usePresentation", "PeekContext", "usePeek", "ActionsContext", "useShellActions", "CompositionContext", "useComposition", "InsetContext", "useInset", "useResponsivePresentation", "presentation", "currentBreakpoint", "useShell", "order", "_BREAKPOINTS", "startIdx", "i", "bp", "useResponsiveValue", "value", "map", "useResponsiveInitialState", "controlledValue", "defaultValue", "currentValue", "setValue", "breakpointReady", "onInit", "onResponsiveChange", "controlledIsResponsive", "resolvedControlled", "resolvedDefault", "lastControlledRef", "pendingSyncRef", "latestControlledRef", "latestValueRef", "setValueRef", "controlledChanged", "latestControlled", "latestValue", "didInitRef", "React", "PaneResizeContext", "usePaneResize", "ctx", "React", "import_classnames", "PaneHandle", "className", "children", "props", "ref", "containerRef", "cssVarName", "minSize", "maxSize", "defaultSize", "orientation", "edge", "computeNext", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "collapsible", "target", "requestCollapse", "requestToggle", "usePaneResize", "activeCleanupRef", "ariaOrientation", "ariaLabel", "classNames", "e", "container", "handleEl", "pointerId", "startClient", "startSize", "clamp", "v", "body", "prevCursor", "prevUserSelect", "handleMove", "ev", "client", "next", "cleanup", "handleUp", "handleKey", "finalSize", "snapped", "nearest", "acc", "p", "kev", "rawCurrent", "parsedCurrent", "current", "step", "delta", "docDir", "cssDir", "hasRtlAncestor", "isRtl", "signedDelta", "PanelHandle", "SidebarHandle", "InspectorHandle", "BottomHandle", "omitPaneProps", "source", "keys", "omitSet", "result", "key", "PANE_BASE_INTERNAL_PROPS", "extractPaneDomProps", "extraKeys", "omitKeys", "mapResponsiveBooleanToPaneMode", "value", "mapped", "bp", "val", "React", "import_classnames", "normalizeToPx", "value", "orientation", "str", "rem", "pct", "base", "n", "SIDEBAR_DOM_PROP_KEYS", "Sidebar", "initialProps", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "sidebarDomProps", "extractPaneDomProps", "sidebarMode", "setSidebarMode", "useSidebarMode", "currentBreakpointReady", "usePresentation", "peekTarget", "usePeek", "togglePane", "setSidebarToggleComputer", "useShellActions", "setHasSidebar", "useComposition", "registerInset", "unregisterInset", "useInset", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "SidebarHandle", "contentChildren", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "onStateChangeRef", "stateRef", "stateIsResponsive", "resolvedSidebarControlled", "resolvedSidebarDefault", "useResponsiveInitialState", "next", "initial", "lastNotifyModeRef", "lastResolvedSidebarControlledRef", "current", "prevMode", "controlledChanged", "onExpandRef", "onCollapseRef", "prevSidebarModeRef", "hasInitializedRef", "currentMode", "isContentVisible", "persistenceAdapter", "key", "v", "mounted", "loaded", "resolveDefaultSidebarMode", "resolved", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "isRtl", "delta", "i", "PaneHandle", "normalizeSizeToPx", "value", "normalizeToPx", "px", "clamped", "controlledSize", "peekStyles", "open", "Root", "o", "Content", "VisuallyHidden", "Title", "classNames", "React", "import_classnames", "BOTTOM_DOM_PROP_KEYS", "Bottom", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "inset", "bottomDomProps", "extractPaneDomProps", "bottomMode", "setBottomMode", "useBottomMode", "currentBreakpointReady", "usePresentation", "peekTarget", "usePeek", "togglePane", "useShellActions", "registerInset", "unregisterInset", "useInset", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "BottomHandle", "contentChildren", "onOpenChangeRef", "openRef", "normalizedControlledOpen", "mapResponsiveBooleanToPaneMode", "normalizedDefaultOpen", "openIsResponsive", "resolvedBottomControlled", "useResponsiveInitialState", "next", "initial", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "lastBottomModeRef", "lastResolvedBottomControlledRef", "prevMode", "controlledChanged", "nextOpen", "onExpandRef", "onCollapseRef", "prevBottomModeRef", "hasInitializedRef", "currentMode", "isExpanded", "persistenceAdapter", "key", "v", "mounted", "loaded", "applyLoaded", "value", "err", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "delta", "i", "PaneHandle", "normalizeSizeToPx", "normalizeToPx", "px", "clamped", "controlledSize", "Root", "o", "Content", "VisuallyHidden", "Title", "classNames", "React", "import_classnames", "INSPECTOR_DOM_PROP_KEYS", "Inspector", "initialProps", "ref", "className", "presentation", "defaultOpen", "open", "onOpenChange", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "size", "defaultSize", "inset", "inspectorDomProps", "extractPaneDomProps", "inspectorMode", "setInspectorMode", "useInspectorMode", "currentBreakpointReady", "usePresentation", "peekTarget", "usePeek", "togglePane", "useShellActions", "registerInset", "unregisterInset", "useInset", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "InspectorHandle", "contentChildren", "onOpenChangeRef", "openRef", "normalizedControlledOpen", "mapResponsiveBooleanToPaneMode", "normalizedDefaultOpen", "openIsResponsive", "resolvedInspectorControlled", "useResponsiveInitialState", "next", "initial", "debounceTimeoutRef", "emitSizeChange", "cb", "strategy", "ms", "s", "meta", "last", "now", "wasControlledRef", "isControlled", "lastInspectorModeRef", "lastResolvedInspectorControlledRef", "prevInspectorMode", "controlledChanged", "nextOpen", "onExpandRef", "onCollapseRef", "prevInspectorModeRef", "hasInitializedRef", "currentMode", "prevMode", "isExpanded", "persistenceAdapter", "key", "v", "mounted", "loaded", "applyLoaded", "value", "err", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "isRtl", "delta", "i", "PaneHandle", "normalizeSizeToPx", "normalizeToPx", "px", "clamped", "controlledSize", "Root", "o", "Content", "VisuallyHidden", "Title", "classNames", "SHELL_SLOT", "assignShellSlot", "component", "slot", "isShellComponentType", "el", "comp", "Sidebar", "Inspector", "Bottom", "paneReducer", "state", "action", "next", "Root", "className", "children", "height", "props", "ref", "currentBreakpoint", "currentBreakpointReady", "useBreakpoint", "hasPanelDefaultOpenRef", "paneState", "dispatchPane", "initialChildren", "childArray", "hasPanelDefaultOpen", "railEl", "railDefaultOpen", "hasRailDefaultOpen", "hasInspectorDefaultOpen", "hasInspectorOpenControlled", "hasPanelOpenControlled", "openProp", "getSidebarInitialState", "sidebarEl", "sidebarProps", "getBottomInitialState", "bottomEl", "bottomProps", "setLeftMode", "mode", "setPanelMode", "setSidebarMode", "setInspectorMode", "setBottomMode", "hasLeft", "setHasLeft", "hasSidebar", "setHasSidebar", "sidebarToggleComputerRef", "current", "setSidebarToggleComputer", "fn", "devLeftPres", "setDevLeftPres", "onLeftPres", "p", "railDefaultSizeRef", "panelDefaultSizeRef", "onRailDefaults", "size", "onPanelDefaults", "hasLeftChildren", "Rail", "Panel", "hasSidebarChildren", "sidebarModeRef", "togglePane", "target", "expandPane", "collapsePane", "baseContextValue", "headerEls", "railEls", "panelEls", "sidebarEls", "contentEls", "inspectorEls", "bottomEls", "result", "Header", "Content", "firstRailOpen", "resolvedFirstRailOpen", "responsive", "fallbackOrder", "startIdx", "i", "bp", "firstPanelOpen", "resolvedFirstPanelOpen", "controlSeqRef", "lastRailChangeRef", "lastPanelChangeRef", "lastRailOpenRef", "lastPanelOpenRef", "railOnOpenChange", "panelOnOpenChange", "lastConflictRef", "panelWins", "lastConflict", "leftControlledOpen", "heightStyle", "peekTarget", "setPeekTarget", "peekPane", "clearPeek", "presentationCtxValue", "leftModeCtxValue", "panelModeCtxValue", "sidebarModeCtxValue", "inspectorModeCtxValue", "bottomModeCtxValue", "compositionCtxValue", "insetPanes", "setInsetPanes", "registerInset", "id", "prev", "unregisterInset", "hasAnyInset", "insetCtxValue", "peekCtxValue", "actionsCtxValue", "shellContextValue", "leftContent", "firstRail", "firstPanel", "leftInset", "passthroughProps", "Left", "classNames", "ShellProvider", "PresentationContext", "LeftModeContext", "PanelModeContext", "SidebarModeContext", "InspectorModeContext", "BottomModeContext", "CompositionContext", "PeekContext", "ActionsContext", "InsetContext", "style", "LEFT_DOM_OMIT_PROPS", "initialProps", "presentation", "_collapsible", "onExpand", "onCollapse", "inset", "restProps", "useInset", "propsOpen", "propsDefaultOpen", "propsOnOpenChange", "domProps", "omitPaneProps", "shell", "useShell", "resolvedPresentation", "useResponsivePresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "lastLeftModeRef", "lastResolvedLeftControlledRef", "normalizedLeftControlled", "normalizedLeftDefault", "mapResponsiveBooleanToPaneMode", "propsOnOpenChangeRef", "propsOpenRef", "resolvedLeftControlled", "useResponsiveInitialState", "initial", "prevPanelModeRef", "prevLeftMode", "prevPanelMode", "controlledChanged", "isControlled", "controlledTarget", "nextOpen", "reason", "onExpandRef", "onCollapseRef", "prevLeftModeForCallbackRef", "hasLeftInitializedRef", "currentMode", "prevMode", "_isExpanded", "open", "panelEl", "railSize", "panelSize", "hasRail", "hasPanel", "overlayPx", "o", "VisuallyHidden", "Title", "_railSize", "_panelSize", "_hasRail", "_includePanel", "expandedSize", "collapsible", "defaultOpen", "onOpenChange", "_inset", "wasControlledRef", "isExpanded", "PANEL_DOM_PROP_KEYS", "defaultSize", "minSize", "maxSize", "resizable", "_onExpand", "_onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "panelDomProps", "extractPaneDomProps", "debounceTimeoutRef", "emitSizeChange", "s", "meta", "last", "now", "prevLeftModeRef", "lastResolvedPanelControlledRef", "normalizedControlledOpen", "normalizedDefaultOpen", "openIsResponsive", "onOpenChangeRef", "resolvedPanelControlled", "handleChildren", "PanelHandle", "contentChildren", "normalizeSizeToPx", "value", "normalizeToPx", "persistenceAdapter", "key", "v", "mounted", "loaded", "px", "clamped", "leftEl", "prevPanel", "prevLeft", "handleEl", "PaneResizeContext", "client", "startClient", "startSize", "isRtl", "delta", "PaneHandle", "Trigger", "peekOnHover", "onClick", "onMouseEnter", "onMouseLeave", "leftMode", "useLeftMode", "panelMode", "usePanelMode", "sidebarMode", "useSidebarMode", "inspectorMode", "useInspectorMode", "bottomMode", "useBottomMode", "usePeek", "useShellActions", "handleClick", "event", "isCollapsed", "handleMouseEnter", "handleMouseLeave", "chatbar_exports", "__export", "AttachTrigger", "Attachment", "AttachmentsRow", "InlineEnd", "InlineStart", "Root", "Row", "RowEnd", "RowStart", "Send", "Textarea", "React", "import_classnames", "import_react", "import_react_dropzone", "useIsomorphicLayoutEffect", "ChatbarContext", "useChatbarContext", "ctx", "Root", "props", "forwardedRef", "className", "style", "children", "valueProp", "defaultValue", "onValueChangeProp", "openProp", "defaultOpen", "onOpenChangeProp", "expandOn", "minLines", "maxLines", "sendMode", "disabled", "readOnly", "onSubmit", "size", "variant", "color", "radius", "panelBackground", "material", "width", "maxWidth", "asChild", "attachmentsProp", "defaultAttachments", "onAttachmentsChange", "accept", "multiple", "maxAttachments", "maxFileSize", "paste", "pasteAccept", "clearOnSubmit", "onAttachmentReject", "dropzone", "apiRef", "divProps", "effectiveMaterial", "isValueControlled", "valueUncontrolled", "setValueUncontrolled", "value", "isOpenControlled", "openUncontrolled", "setOpenUncontrolled", "open", "rootRef", "textareaRef", "fileDialogOpenRef", "isAttachmentsControlled", "attachmentsUncontrolled", "setAttachmentsUncontrolled", "attachments", "generatedUrlSetRef", "toArray", "val", "s", "accepts", "pasteAccepts", "matchesAccept", "file", "patterns", "mime", "name", "patRaw", "pat", "type", "subtype", "fmType", "fmSubtype", "attachmentsRef", "acceptsRef", "pasteAcceptsRef", "maxAttachmentsRef", "maxFileSizeRef", "onAttachmentRejectRef", "onAttachmentsChangeRef", "onOpenChangePropRef", "appendFiles", "files", "currentAttachments", "currentAccepts", "currentMaxAttachments", "currentMaxFileSize", "next", "rejected", "remainingSlots", "id", "looksLikeImageByExt", "url", "merged", "appendFilesFromPaste", "currentPasteAccepts", "acceptedFiles", "currentUrls", "a", "urlSet", "Comp", "Slot", "handleSetOpen", "handleSetValue", "handleSetAttachments", "handleBlurCapture", "event", "nextTarget", "rootEl", "getRootProps", "getInputProps", "isDragActive", "openFileDialog", "rejectedFiles", "rejections", "errors", "reason", "acc", "pattern", "isInteractiveTarget", "target", "el", "handleContainerPointerDown", "node", "classNames", "Text", "Textarea", "onFocus", "onInput", "onChange", "onPaste", "onKeyDown", "submitOnEnter", "rows", "textareaProps", "setOpen", "setValue", "lineHeightRef", "paddingRef", "compactHeightRef", "recomputeMetrics", "computedStyle", "lineHeight", "paddingTop", "paddingBottom", "updateHeight", "forceOpen", "textarea", "padding", "isOpen", "effectiveMinLines", "effectiveMaxLines", "minHeight", "maxHeight", "contentHeight", "finalHeight", "prevLineHeight", "ro", "lh", "handleFocus", "handleChange", "nextValue", "handlePaste", "i", "f", "handleKeyDown", "hasContent", "InlineStart", "InlineEnd", "AttachmentsRow", "forceMount", "renderAttachment", "ScrollArea", "Flex", "att", "Attachment", "attachment", "isImage", "FileTextIcon", "IconButton", "CloseIcon", "AttachTrigger", "buttonProps", "inputRef", "mergedAccept", "actualAccept", "handleWindowFocus", "e", "Row", "RowStart", "RowEnd", "Send", "clearOnSend", "sizeProp", "variantProp", "ariaLabel", "ariaLabelledby", "visible", "handleClick"]
7
+ }