@womp/kookie-ui 0.6.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1047) hide show
  1. package/components.css +741 -1078
  2. package/dist/cjs/components/_internal/base-button.js +1 -1
  3. package/dist/cjs/components/_internal/base-button.js.map +4 -4
  4. package/dist/cjs/components/_internal/base-button.props.d.ts +2 -7
  5. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  6. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  7. package/dist/cjs/components/_internal/base-button.props.js.map +4 -4
  8. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +0 -5
  9. package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -1
  10. package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
  11. package/dist/cjs/components/_internal/base-checkbox.props.js.map +4 -4
  12. package/dist/cjs/components/_internal/base-menu.props.d.ts +0 -10
  13. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  14. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  15. package/dist/cjs/components/_internal/base-menu.props.js.map +4 -4
  16. package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
  17. package/dist/cjs/components/_internal/base-menu.utils.js.map +3 -3
  18. package/dist/cjs/components/_internal/base-radio.props.d.ts +0 -5
  19. package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -1
  20. package/dist/cjs/components/_internal/base-radio.props.js +1 -1
  21. package/dist/cjs/components/_internal/base-radio.props.js.map +4 -4
  22. package/dist/cjs/components/_internal/base-tab-list.props.d.ts +0 -5
  23. package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -1
  24. package/dist/cjs/components/_internal/base-tab-list.props.js +1 -1
  25. package/dist/cjs/components/_internal/base-tab-list.props.js.map +4 -4
  26. package/dist/cjs/components/_internal/menu-context.js +1 -1
  27. package/dist/cjs/components/_internal/menu-context.js.map +3 -3
  28. package/dist/cjs/components/_internal/shell-bottom.d.ts +6 -7
  29. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  30. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  31. package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
  32. package/dist/cjs/components/_internal/shell-handles.d.ts +9 -0
  33. package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
  34. package/dist/cjs/components/_internal/shell-handles.js +1 -1
  35. package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
  36. package/dist/cjs/components/_internal/shell-inspector.d.ts +4 -6
  37. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  38. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  39. package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
  40. package/dist/cjs/components/_internal/shell-pane.d.ts +70 -0
  41. package/dist/cjs/components/_internal/shell-pane.d.ts.map +1 -0
  42. package/dist/cjs/components/_internal/shell-pane.js +2 -0
  43. package/dist/cjs/components/_internal/shell-pane.js.map +7 -0
  44. package/dist/cjs/components/_internal/shell-resizable.d.ts +48 -0
  45. package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -0
  46. package/dist/cjs/components/_internal/shell-resizable.js +2 -0
  47. package/dist/cjs/components/_internal/shell-resizable.js.map +7 -0
  48. package/dist/cjs/components/_internal/shell-resize.d.ts +11 -3
  49. package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -1
  50. package/dist/cjs/components/_internal/shell-resize.js +1 -1
  51. package/dist/cjs/components/_internal/shell-resize.js.map +2 -2
  52. package/dist/cjs/components/_internal/shell-rest.d.ts +27 -0
  53. package/dist/cjs/components/_internal/shell-rest.d.ts.map +1 -0
  54. package/dist/cjs/components/_internal/shell-rest.js +2 -0
  55. package/dist/cjs/components/_internal/shell-rest.js.map +7 -0
  56. package/dist/cjs/components/_internal/shell-sidebar.d.ts +7 -12
  57. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  58. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  59. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  60. package/dist/cjs/components/_internal/shell-store.d.ts +99 -0
  61. package/dist/cjs/components/_internal/shell-store.d.ts.map +1 -0
  62. package/dist/cjs/components/_internal/shell-store.js +2 -0
  63. package/dist/cjs/components/_internal/shell-store.js.map +7 -0
  64. package/dist/cjs/components/accordion.js +1 -1
  65. package/dist/cjs/components/accordion.js.map +4 -4
  66. package/dist/cjs/components/accordion.props.d.ts +0 -6
  67. package/dist/cjs/components/accordion.props.d.ts.map +1 -1
  68. package/dist/cjs/components/accordion.props.js +1 -1
  69. package/dist/cjs/components/accordion.props.js.map +4 -4
  70. package/dist/cjs/components/alert-dialog.js +1 -1
  71. package/dist/cjs/components/alert-dialog.js.map +4 -4
  72. package/dist/cjs/components/avatar.js +1 -1
  73. package/dist/cjs/components/avatar.js.map +4 -4
  74. package/dist/cjs/components/avatar.props.d.ts +0 -5
  75. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  76. package/dist/cjs/components/avatar.props.js +1 -1
  77. package/dist/cjs/components/avatar.props.js.map +4 -4
  78. package/dist/cjs/components/badge.js +1 -1
  79. package/dist/cjs/components/badge.js.map +4 -4
  80. package/dist/cjs/components/badge.props.d.ts +0 -5
  81. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  82. package/dist/cjs/components/badge.props.js +1 -1
  83. package/dist/cjs/components/badge.props.js.map +4 -4
  84. package/dist/cjs/components/blockquote.js +1 -1
  85. package/dist/cjs/components/blockquote.js.map +4 -4
  86. package/dist/cjs/components/blockquote.props.d.ts +3 -2
  87. package/dist/cjs/components/blockquote.props.d.ts.map +1 -1
  88. package/dist/cjs/components/blockquote.props.js +1 -1
  89. package/dist/cjs/components/blockquote.props.js.map +4 -4
  90. package/dist/cjs/components/button.js +1 -1
  91. package/dist/cjs/components/button.js.map +4 -4
  92. package/dist/cjs/components/button.props.js +1 -1
  93. package/dist/cjs/components/button.props.js.map +4 -4
  94. package/dist/cjs/components/callout.js +1 -1
  95. package/dist/cjs/components/callout.js.map +4 -4
  96. package/dist/cjs/components/callout.props.d.ts +0 -5
  97. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  98. package/dist/cjs/components/callout.props.js +1 -1
  99. package/dist/cjs/components/callout.props.js.map +4 -4
  100. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  101. package/dist/cjs/components/chatbar.js +2 -2
  102. package/dist/cjs/components/chatbar.js.map +4 -4
  103. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
  104. package/dist/cjs/components/checkbox-cards.js +1 -1
  105. package/dist/cjs/components/checkbox-cards.js.map +4 -4
  106. package/dist/cjs/components/checkbox-cards.props.d.ts +0 -5
  107. package/dist/cjs/components/checkbox-cards.props.d.ts.map +1 -1
  108. package/dist/cjs/components/checkbox-cards.props.js +1 -1
  109. package/dist/cjs/components/checkbox-cards.props.js.map +4 -4
  110. package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
  111. package/dist/cjs/components/checkbox-group.js +1 -1
  112. package/dist/cjs/components/checkbox-group.js.map +4 -4
  113. package/dist/cjs/components/checkbox-group.props.d.ts +0 -5
  114. package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
  115. package/dist/cjs/components/checkbox-group.props.js +1 -1
  116. package/dist/cjs/components/checkbox-group.props.js.map +4 -4
  117. package/dist/cjs/components/checkbox.js +1 -1
  118. package/dist/cjs/components/checkbox.js.map +4 -4
  119. package/dist/cjs/components/checkbox.props.js +1 -1
  120. package/dist/cjs/components/checkbox.props.js.map +4 -4
  121. package/dist/cjs/components/code.js +1 -1
  122. package/dist/cjs/components/code.js.map +4 -4
  123. package/dist/cjs/components/code.props.d.ts +3 -2
  124. package/dist/cjs/components/code.props.d.ts.map +1 -1
  125. package/dist/cjs/components/code.props.js +1 -1
  126. package/dist/cjs/components/code.props.js.map +4 -4
  127. package/dist/cjs/components/combobox.d.ts.map +1 -1
  128. package/dist/cjs/components/combobox.js +1 -1
  129. package/dist/cjs/components/combobox.js.map +4 -4
  130. package/dist/cjs/components/combobox.props.d.ts +1 -11
  131. package/dist/cjs/components/combobox.props.d.ts.map +1 -1
  132. package/dist/cjs/components/combobox.props.js +1 -1
  133. package/dist/cjs/components/combobox.props.js.map +4 -4
  134. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  135. package/dist/cjs/components/context-menu.js +1 -1
  136. package/dist/cjs/components/context-menu.js.map +4 -4
  137. package/dist/cjs/components/context-menu.props.js +1 -1
  138. package/dist/cjs/components/context-menu.props.js.map +4 -4
  139. package/dist/cjs/components/data-list.js +1 -1
  140. package/dist/cjs/components/data-list.js.map +4 -4
  141. package/dist/cjs/components/data-list.props.d.ts +4 -3
  142. package/dist/cjs/components/data-list.props.d.ts.map +1 -1
  143. package/dist/cjs/components/data-list.props.js +1 -1
  144. package/dist/cjs/components/data-list.props.js.map +4 -4
  145. package/dist/cjs/components/dialog.js +1 -1
  146. package/dist/cjs/components/dialog.js.map +4 -4
  147. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  148. package/dist/cjs/components/dropdown-menu.js +1 -1
  149. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  150. package/dist/cjs/components/dropdown-menu.props.js +1 -1
  151. package/dist/cjs/components/dropdown-menu.props.js.map +4 -4
  152. package/dist/cjs/components/heading.js +1 -1
  153. package/dist/cjs/components/heading.js.map +4 -4
  154. package/dist/cjs/components/heading.props.d.ts +3 -2
  155. package/dist/cjs/components/heading.props.d.ts.map +1 -1
  156. package/dist/cjs/components/heading.props.js +1 -1
  157. package/dist/cjs/components/heading.props.js.map +4 -4
  158. package/dist/cjs/components/hover-card.js.map +1 -1
  159. package/dist/cjs/components/icon-button.js +2 -2
  160. package/dist/cjs/components/icon-button.js.map +4 -4
  161. package/dist/cjs/components/icon-button.props.js +1 -1
  162. package/dist/cjs/components/icon-button.props.js.map +4 -4
  163. package/dist/cjs/components/index.js +5 -5
  164. package/dist/cjs/components/index.js.map +4 -4
  165. package/dist/cjs/components/link.js +1 -1
  166. package/dist/cjs/components/link.js.map +4 -4
  167. package/dist/cjs/components/link.props.d.ts +0 -5
  168. package/dist/cjs/components/link.props.d.ts.map +1 -1
  169. package/dist/cjs/components/link.props.js +1 -1
  170. package/dist/cjs/components/link.props.js.map +4 -4
  171. package/dist/cjs/components/popover.js.map +1 -1
  172. package/dist/cjs/components/progress.js +1 -1
  173. package/dist/cjs/components/progress.js.map +4 -4
  174. package/dist/cjs/components/progress.props.d.ts +0 -5
  175. package/dist/cjs/components/progress.props.d.ts.map +1 -1
  176. package/dist/cjs/components/progress.props.js +1 -1
  177. package/dist/cjs/components/progress.props.js.map +4 -4
  178. package/dist/cjs/components/radio-cards.js +1 -1
  179. package/dist/cjs/components/radio-cards.js.map +4 -4
  180. package/dist/cjs/components/radio-cards.props.d.ts +0 -5
  181. package/dist/cjs/components/radio-cards.props.d.ts.map +1 -1
  182. package/dist/cjs/components/radio-cards.props.js +1 -1
  183. package/dist/cjs/components/radio-cards.props.js.map +4 -4
  184. package/dist/cjs/components/radio-group.d.ts.map +1 -1
  185. package/dist/cjs/components/radio-group.js +1 -1
  186. package/dist/cjs/components/radio-group.js.map +4 -4
  187. package/dist/cjs/components/radio-group.props.d.ts +0 -5
  188. package/dist/cjs/components/radio-group.props.d.ts.map +1 -1
  189. package/dist/cjs/components/radio-group.props.js +1 -1
  190. package/dist/cjs/components/radio-group.props.js.map +4 -4
  191. package/dist/cjs/components/radio.js +1 -1
  192. package/dist/cjs/components/radio.js.map +4 -4
  193. package/dist/cjs/components/radio.props.js +1 -1
  194. package/dist/cjs/components/radio.props.js.map +4 -4
  195. package/dist/cjs/components/schemas/base-button.schema.d.ts +0 -1
  196. package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -1
  197. package/dist/cjs/components/schemas/base-button.schema.js +1 -1
  198. package/dist/cjs/components/schemas/base-button.schema.js.map +2 -2
  199. package/dist/cjs/components/schemas/button.schema.d.ts +0 -1
  200. package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -1
  201. package/dist/cjs/components/schemas/button.schema.js +1 -1
  202. package/dist/cjs/components/schemas/button.schema.js.map +2 -2
  203. package/dist/cjs/components/schemas/icon-button.schema.d.ts +0 -1
  204. package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +1 -1
  205. package/dist/cjs/components/schemas/icon-button.schema.js +1 -1
  206. package/dist/cjs/components/schemas/icon-button.schema.js.map +2 -2
  207. package/dist/cjs/components/schemas/index.js +1 -1
  208. package/dist/cjs/components/schemas/index.js.map +3 -3
  209. package/dist/cjs/components/schemas/shell.schema.d.ts +277 -229
  210. package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
  211. package/dist/cjs/components/schemas/shell.schema.js +1 -1
  212. package/dist/cjs/components/schemas/shell.schema.js.map +3 -3
  213. package/dist/cjs/components/schemas/toggle-button.schema.d.ts +0 -1
  214. package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +1 -1
  215. package/dist/cjs/components/schemas/toggle-button.schema.js +1 -1
  216. package/dist/cjs/components/schemas/toggle-button.schema.js.map +2 -2
  217. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +0 -1
  218. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +1 -1
  219. package/dist/cjs/components/schemas/toggle-icon-button.schema.js +1 -1
  220. package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +2 -2
  221. package/dist/cjs/components/select.js +1 -1
  222. package/dist/cjs/components/select.js.map +4 -4
  223. package/dist/cjs/components/select.props.d.ts +0 -5
  224. package/dist/cjs/components/select.props.d.ts.map +1 -1
  225. package/dist/cjs/components/select.props.js +1 -1
  226. package/dist/cjs/components/select.props.js.map +4 -4
  227. package/dist/cjs/components/separator.js.map +1 -1
  228. package/dist/cjs/components/separator.props.js.map +1 -1
  229. package/dist/cjs/components/sheet.js +1 -1
  230. package/dist/cjs/components/sheet.js.map +4 -4
  231. package/dist/cjs/components/shell.context.d.ts +25 -114
  232. package/dist/cjs/components/shell.context.d.ts.map +1 -1
  233. package/dist/cjs/components/shell.context.js +1 -1
  234. package/dist/cjs/components/shell.context.js.map +4 -4
  235. package/dist/cjs/components/shell.d.ts +42 -21
  236. package/dist/cjs/components/shell.d.ts.map +1 -1
  237. package/dist/cjs/components/shell.hooks.d.ts +7 -23
  238. package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
  239. package/dist/cjs/components/shell.hooks.js +1 -1
  240. package/dist/cjs/components/shell.hooks.js.map +4 -4
  241. package/dist/cjs/components/shell.js +1 -1
  242. package/dist/cjs/components/shell.js.map +4 -4
  243. package/dist/cjs/components/shell.types.d.ts +19 -2
  244. package/dist/cjs/components/shell.types.d.ts.map +1 -1
  245. package/dist/cjs/components/shell.types.js +1 -1
  246. package/dist/cjs/components/shell.types.js.map +3 -3
  247. package/dist/cjs/components/sidebar.d.ts +0 -1
  248. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  249. package/dist/cjs/components/sidebar.js +1 -1
  250. package/dist/cjs/components/sidebar.js.map +4 -4
  251. package/dist/cjs/components/sidebar.props.d.ts +0 -5
  252. package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
  253. package/dist/cjs/components/sidebar.props.js +1 -1
  254. package/dist/cjs/components/sidebar.props.js.map +4 -4
  255. package/dist/cjs/components/slider.js +1 -1
  256. package/dist/cjs/components/slider.js.map +4 -4
  257. package/dist/cjs/components/slider.props.d.ts +0 -5
  258. package/dist/cjs/components/slider.props.d.ts.map +1 -1
  259. package/dist/cjs/components/slider.props.js +1 -1
  260. package/dist/cjs/components/slider.props.js.map +4 -4
  261. package/dist/cjs/components/switch.d.ts.map +1 -1
  262. package/dist/cjs/components/switch.js +1 -1
  263. package/dist/cjs/components/switch.js.map +4 -4
  264. package/dist/cjs/components/switch.props.d.ts +0 -5
  265. package/dist/cjs/components/switch.props.d.ts.map +1 -1
  266. package/dist/cjs/components/switch.props.js +1 -1
  267. package/dist/cjs/components/switch.props.js.map +4 -4
  268. package/dist/cjs/components/tab-nav.js +1 -1
  269. package/dist/cjs/components/tab-nav.js.map +4 -4
  270. package/dist/cjs/components/tab-nav.props.js +1 -1
  271. package/dist/cjs/components/tab-nav.props.js.map +4 -4
  272. package/dist/cjs/components/tabs.js +1 -1
  273. package/dist/cjs/components/tabs.js.map +4 -4
  274. package/dist/cjs/components/tabs.props.js +1 -1
  275. package/dist/cjs/components/tabs.props.js.map +4 -4
  276. package/dist/cjs/components/text-area.js.map +1 -1
  277. package/dist/cjs/components/text-area.props.js.map +1 -1
  278. package/dist/cjs/components/text-field.js.map +1 -1
  279. package/dist/cjs/components/text-field.props.js.map +1 -1
  280. package/dist/cjs/components/text.js +1 -1
  281. package/dist/cjs/components/text.js.map +4 -4
  282. package/dist/cjs/components/text.props.d.ts +3 -2
  283. package/dist/cjs/components/text.props.d.ts.map +1 -1
  284. package/dist/cjs/components/text.props.js +1 -1
  285. package/dist/cjs/components/text.props.js.map +4 -4
  286. package/dist/cjs/components/theme-panel.js +3 -3
  287. package/dist/cjs/components/theme-panel.js.map +4 -4
  288. package/dist/cjs/components/theme.js.map +1 -1
  289. package/dist/cjs/components/theme.props.js.map +1 -1
  290. package/dist/cjs/components/toggle-button.js +2 -2
  291. package/dist/cjs/components/toggle-button.js.map +4 -4
  292. package/dist/cjs/components/toggle-icon-button.js +3 -3
  293. package/dist/cjs/components/toggle-icon-button.js.map +4 -4
  294. package/dist/cjs/components/toolbar.js +1 -1
  295. package/dist/cjs/components/toolbar.js.map +4 -4
  296. package/dist/cjs/components/tooltip.js +1 -1
  297. package/dist/cjs/components/tooltip.js.map +4 -4
  298. package/dist/cjs/components/user-card.d.ts.map +1 -1
  299. package/dist/cjs/components/user-card.js +1 -1
  300. package/dist/cjs/components/user-card.js.map +4 -4
  301. package/dist/cjs/components/user-card.props.d.ts +0 -5
  302. package/dist/cjs/components/user-card.props.d.ts.map +1 -1
  303. package/dist/cjs/components/user-card.props.js +1 -1
  304. package/dist/cjs/components/user-card.props.js.map +4 -4
  305. package/dist/cjs/components/virtual-menu.js.map +1 -1
  306. package/dist/cjs/hooks/use-breakpoint.d.ts +5 -0
  307. package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -1
  308. package/dist/cjs/hooks/use-breakpoint.js +1 -1
  309. package/dist/cjs/hooks/use-breakpoint.js.map +3 -3
  310. package/dist/cjs/index.js +5 -5
  311. package/dist/cjs/index.js.map +4 -4
  312. package/dist/cjs/props/color.prop.js.map +1 -1
  313. package/dist/cjs/props/emphasis.prop.d.ts +11 -0
  314. package/dist/cjs/props/emphasis.prop.d.ts.map +1 -0
  315. package/dist/cjs/props/emphasis.prop.js +2 -0
  316. package/dist/cjs/props/emphasis.prop.js.map +7 -0
  317. package/dist/cjs/props/index.d.ts +1 -1
  318. package/dist/cjs/props/index.d.ts.map +1 -1
  319. package/dist/cjs/props/index.js +1 -1
  320. package/dist/cjs/props/index.js.map +4 -4
  321. package/dist/esm/{chunk-MBCBP73P.js → chunk-25X75TI7.js} +2 -2
  322. package/dist/esm/chunk-26I257HE.js +2 -0
  323. package/dist/esm/chunk-26I257HE.js.map +7 -0
  324. package/dist/esm/chunk-2CMM7MEL.js +2 -0
  325. package/dist/esm/chunk-2CMM7MEL.js.map +7 -0
  326. package/dist/esm/chunk-2EQWBT2S.js +2 -0
  327. package/dist/esm/chunk-2EQWBT2S.js.map +7 -0
  328. package/dist/esm/{chunk-GLERJXVS.js → chunk-2Q7BJ7YG.js} +2 -2
  329. package/dist/esm/chunk-3AOFY2B4.js +2 -0
  330. package/dist/esm/chunk-3AOFY2B4.js.map +7 -0
  331. package/dist/esm/chunk-3J6AUDID.js +2 -0
  332. package/dist/esm/chunk-3J6AUDID.js.map +7 -0
  333. package/dist/esm/chunk-3KSGRY6I.js +2 -0
  334. package/dist/esm/chunk-3KSGRY6I.js.map +7 -0
  335. package/dist/esm/chunk-3PTSRBVY.js +2 -0
  336. package/dist/esm/{chunk-SZTZ2XLI.js.map → chunk-3PTSRBVY.js.map} +2 -2
  337. package/dist/esm/chunk-3XSB7YIM.js +2 -0
  338. package/dist/esm/{chunk-FMBECDL4.js.map → chunk-3XSB7YIM.js.map} +3 -3
  339. package/dist/esm/{chunk-FIB3XATL.js → chunk-44JZYS7A.js} +3 -3
  340. package/dist/esm/{chunk-FIB3XATL.js.map → chunk-44JZYS7A.js.map} +2 -2
  341. package/dist/esm/{chunk-CTA5ODAO.js → chunk-4WU2WKUJ.js} +2 -2
  342. package/dist/esm/chunk-4WVNMGI5.js +2 -0
  343. package/dist/esm/chunk-4WVNMGI5.js.map +7 -0
  344. package/dist/esm/chunk-5M7STAH3.js +2 -0
  345. package/dist/esm/chunk-5M7STAH3.js.map +7 -0
  346. package/dist/esm/chunk-5SNHUVDA.js +2 -0
  347. package/dist/esm/{chunk-H7ST535H.js → chunk-5TAHT6VC.js} +2 -2
  348. package/dist/esm/chunk-5XV4QEP5.js +2 -0
  349. package/dist/esm/chunk-5XV4QEP5.js.map +7 -0
  350. package/dist/esm/chunk-667BKCUG.js +2 -0
  351. package/dist/esm/chunk-667BKCUG.js.map +7 -0
  352. package/dist/esm/{chunk-MHPPVJDB.js → chunk-67MKPTZJ.js} +2 -2
  353. package/dist/esm/{chunk-UFI53QUC.js → chunk-6J6YX2VX.js} +2 -2
  354. package/dist/esm/chunk-7FKKGUHK.js +2 -0
  355. package/dist/esm/chunk-7FKKGUHK.js.map +7 -0
  356. package/dist/esm/{chunk-UUUZXUIP.js → chunk-7NYODT3Z.js} +2 -2
  357. package/dist/esm/{chunk-NVDXXGVW.js → chunk-7PMMYHZV.js} +2 -2
  358. package/dist/esm/chunk-A2XVR7GL.js +2 -0
  359. package/dist/esm/chunk-A2XVR7GL.js.map +7 -0
  360. package/dist/esm/chunk-ADXZNG4F.js +2 -0
  361. package/dist/esm/chunk-ADXZNG4F.js.map +7 -0
  362. package/dist/esm/chunk-AF6XKU3W.js +2 -0
  363. package/dist/esm/chunk-AF6XKU3W.js.map +7 -0
  364. package/dist/esm/chunk-AGNIFHOE.js +2 -0
  365. package/dist/esm/chunk-AGNIFHOE.js.map +7 -0
  366. package/dist/esm/chunk-AIHQ3MVK.js +2 -0
  367. package/dist/esm/{chunk-SO67YEVQ.js.map → chunk-AIHQ3MVK.js.map} +2 -2
  368. package/dist/esm/{chunk-UBOOUDS4.js → chunk-AO32NT75.js} +2 -2
  369. package/dist/esm/chunk-BZZXXZ3O.js +2 -0
  370. package/dist/esm/chunk-BZZXXZ3O.js.map +7 -0
  371. package/dist/esm/{chunk-JDGJSNWT.js → chunk-C5RVO3C3.js} +2 -2
  372. package/dist/esm/{chunk-IHK3H2OM.js → chunk-CBNTPHYK.js} +2 -2
  373. package/dist/esm/chunk-CFNESRYI.js +2 -0
  374. package/dist/esm/chunk-CFNESRYI.js.map +7 -0
  375. package/dist/esm/{chunk-SESAEJ6W.js → chunk-CLMOWP5T.js} +2 -2
  376. package/dist/esm/{chunk-BBJUB52V.js → chunk-CRBOJ7N7.js} +2 -2
  377. package/dist/esm/{chunk-DUHJVT64.js → chunk-CRSHBENJ.js} +2 -2
  378. package/dist/esm/{chunk-56TS6OKQ.js → chunk-DCIQHXAR.js} +2 -2
  379. package/dist/esm/chunk-EBQZ3Z22.js +2 -0
  380. package/dist/esm/chunk-EBQZ3Z22.js.map +7 -0
  381. package/dist/esm/chunk-EDKQURDU.js +2 -0
  382. package/dist/esm/chunk-EDKQURDU.js.map +7 -0
  383. package/dist/esm/{chunk-43A5GUSI.js → chunk-EHBAK3LQ.js} +2 -2
  384. package/dist/esm/{chunk-2TIADHPD.js → chunk-F3AXE27Q.js} +2 -2
  385. package/dist/esm/chunk-F6V7GBNQ.js +2 -0
  386. package/dist/esm/chunk-F6V7GBNQ.js.map +7 -0
  387. package/dist/esm/{chunk-VA4CTVQL.js → chunk-FB3PD4Z3.js} +2 -2
  388. package/dist/esm/{chunk-OYF6YXH7.js → chunk-FEAOFF77.js} +2 -2
  389. package/dist/esm/chunk-G4YKBAZT.js +2 -0
  390. package/dist/esm/{chunk-666GX7O5.js.map → chunk-G4YKBAZT.js.map} +2 -2
  391. package/dist/esm/{chunk-ADBLURLJ.js → chunk-GDAKJS64.js} +2 -2
  392. package/dist/esm/{chunk-IEWCQU2S.js → chunk-GGSJXOKR.js} +2 -2
  393. package/dist/esm/chunk-GM7KMQDI.js +2 -0
  394. package/dist/esm/chunk-GMHA5CFH.js +2 -0
  395. package/dist/esm/chunk-GMHA5CFH.js.map +7 -0
  396. package/dist/esm/{chunk-HBR42MIX.js → chunk-H4GR4262.js} +2 -2
  397. package/dist/esm/chunk-HBIF43PT.js +2 -0
  398. package/dist/esm/chunk-HBIF43PT.js.map +7 -0
  399. package/dist/esm/chunk-HCNO7PX6.js +2 -0
  400. package/dist/esm/chunk-HCNO7PX6.js.map +7 -0
  401. package/dist/esm/chunk-HMSSFU6I.js +2 -0
  402. package/dist/esm/{chunk-UIRSGVJG.js.map → chunk-HMSSFU6I.js.map} +2 -2
  403. package/dist/esm/chunk-HWQ3NTJP.js +2 -0
  404. package/dist/esm/chunk-HWQ3NTJP.js.map +7 -0
  405. package/dist/esm/{chunk-S5C5YRBS.js → chunk-IDUVJJYG.js} +2 -2
  406. package/dist/esm/{chunk-P7IAHW4V.js → chunk-IK3MQHA5.js} +2 -2
  407. package/dist/esm/{chunk-SPIU5JYC.js → chunk-JDEBKA56.js} +2 -2
  408. package/dist/esm/{chunk-E67CIG6A.js → chunk-JDWCQ2XP.js} +2 -2
  409. package/dist/esm/chunk-JFWMAYEH.js +2 -0
  410. package/dist/esm/chunk-JFWMAYEH.js.map +7 -0
  411. package/dist/esm/chunk-JQSZF3E2.js +2 -0
  412. package/dist/esm/chunk-JQSZF3E2.js.map +7 -0
  413. package/dist/esm/{chunk-JBO5YOUM.js → chunk-JQW4XYBS.js} +2 -2
  414. package/dist/esm/{chunk-P5OSU4NX.js → chunk-JRFZ535T.js} +2 -2
  415. package/dist/esm/{chunk-GYBLXQ4R.js → chunk-KEEPKI2X.js} +2 -2
  416. package/dist/esm/{chunk-WXP6MMUB.js → chunk-KOFEFBB3.js} +2 -2
  417. package/dist/esm/{chunk-YMUGKYGW.js → chunk-KV4SZP3F.js} +2 -2
  418. package/dist/esm/chunk-KZYFTDGO.js +2 -0
  419. package/dist/esm/chunk-KZYFTDGO.js.map +7 -0
  420. package/dist/esm/{chunk-FG7XM7KJ.js → chunk-LJCUPAOI.js} +2 -2
  421. package/dist/esm/{chunk-MBE2YSBU.js → chunk-MBCQA7UZ.js} +2 -2
  422. package/dist/esm/chunk-MM5IHQFM.js +2 -0
  423. package/dist/esm/{chunk-YVBCDTTD.js → chunk-MN3XALXD.js} +2 -2
  424. package/dist/esm/chunk-NIIEIZKQ.js +2 -0
  425. package/dist/esm/chunk-NIIEIZKQ.js.map +7 -0
  426. package/dist/esm/{chunk-3R7XMRV5.js → chunk-NQXRWBQM.js} +2 -2
  427. package/dist/esm/{chunk-CSKZZOI2.js → chunk-NTNMJX5M.js} +2 -2
  428. package/dist/esm/chunk-NV3P2CKH.js +2 -0
  429. package/dist/esm/chunk-NV3P2CKH.js.map +7 -0
  430. package/dist/esm/{chunk-4ME6O27S.js → chunk-O4CSXNST.js} +2 -2
  431. package/dist/esm/chunk-ODCVOXEV.js +2 -0
  432. package/dist/esm/{chunk-DMJJM5IS.js → chunk-OEEF6KJG.js} +2 -2
  433. package/dist/esm/chunk-OGVKSYLL.js +2 -0
  434. package/dist/esm/chunk-OGVKSYLL.js.map +7 -0
  435. package/dist/esm/{chunk-ABSKRHVM.js → chunk-OJSOX3AX.js} +2 -2
  436. package/dist/esm/chunk-OJU5GCDZ.js +2 -0
  437. package/dist/esm/chunk-OJU5GCDZ.js.map +7 -0
  438. package/dist/esm/{chunk-JGLAE5G7.js → chunk-OQU2SKLN.js} +2 -2
  439. package/dist/esm/chunk-OTKQN2KY.js +2 -0
  440. package/dist/esm/chunk-OTKQN2KY.js.map +7 -0
  441. package/dist/esm/{chunk-UWT6TE5D.js → chunk-OTXCKEWT.js} +2 -2
  442. package/dist/esm/chunk-OWMA6GTG.js +2 -0
  443. package/dist/esm/chunk-OWMA6GTG.js.map +7 -0
  444. package/dist/esm/{chunk-LAOMR7SE.js → chunk-P27KV2LS.js} +2 -2
  445. package/dist/esm/{chunk-LAOMR7SE.js.map → chunk-P27KV2LS.js.map} +3 -3
  446. package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
  447. package/dist/esm/{chunk-L6PVH3RM.js → chunk-PDUHBDFC.js} +2 -2
  448. package/dist/esm/{chunk-HW324FK3.js → chunk-POG3YABW.js} +2 -2
  449. package/dist/esm/chunk-PYHEBG5I.js +2 -0
  450. package/dist/esm/chunk-PYHEBG5I.js.map +7 -0
  451. package/dist/esm/{chunk-TOOSHJOA.js → chunk-PYXMGEO7.js} +2 -2
  452. package/dist/esm/{chunk-T4UHUQFJ.js → chunk-QEGEUD4D.js} +2 -2
  453. package/dist/esm/chunk-QEL55MLF.js +2 -0
  454. package/dist/esm/chunk-QFPHEY77.js +2 -0
  455. package/dist/esm/chunk-QFPHEY77.js.map +7 -0
  456. package/dist/esm/{chunk-F7IYL2VW.js → chunk-QJVAS7AK.js} +2 -2
  457. package/dist/esm/chunk-QQ62LO3X.js +2 -0
  458. package/dist/esm/chunk-QQ62LO3X.js.map +7 -0
  459. package/dist/esm/chunk-RDAMYQFF.js +2 -0
  460. package/dist/esm/chunk-RDAMYQFF.js.map +7 -0
  461. package/dist/esm/chunk-ROSWI2CL.js +2 -0
  462. package/dist/esm/chunk-ROSWI2CL.js.map +7 -0
  463. package/dist/esm/chunk-RY67WG3O.js +2 -0
  464. package/dist/esm/chunk-RY67WG3O.js.map +7 -0
  465. package/dist/esm/{chunk-DXL6V2A5.js → chunk-SEY4NA45.js} +2 -2
  466. package/dist/esm/{chunk-TS623UPD.js → chunk-TLGXIWAS.js} +2 -2
  467. package/dist/esm/{chunk-6FLLFCBU.js → chunk-UBSLEGQZ.js} +2 -2
  468. package/dist/esm/{chunk-37OGSEQR.js → chunk-UNWPH3SO.js} +2 -2
  469. package/dist/esm/chunk-V5ZSDDVZ.js +2 -0
  470. package/dist/esm/chunk-V5ZSDDVZ.js.map +7 -0
  471. package/dist/esm/chunk-VLTXI4A7.js +2 -0
  472. package/dist/esm/chunk-VLTXI4A7.js.map +7 -0
  473. package/dist/esm/{chunk-HIKVMKYQ.js → chunk-VTIL55SR.js} +2 -2
  474. package/dist/esm/{chunk-CQNPBTM5.js → chunk-W2LD2YE6.js} +2 -2
  475. package/dist/esm/chunk-WGWUEU4K.js +2 -0
  476. package/dist/esm/chunk-WGWUEU4K.js.map +7 -0
  477. package/dist/esm/{chunk-NMKPFUNP.js → chunk-WIDJYVZF.js} +2 -2
  478. package/dist/esm/{chunk-3OBXZUFJ.js → chunk-WJBOOAIO.js} +2 -2
  479. package/dist/esm/chunk-WMGIFPI2.js +2 -0
  480. package/dist/esm/chunk-WMGIFPI2.js.map +7 -0
  481. package/dist/esm/{chunk-7FC7HF76.js → chunk-WQCB7KSH.js} +2 -2
  482. package/dist/esm/{chunk-OWAUCLRT.js → chunk-WZFVTC7P.js} +2 -2
  483. package/dist/esm/chunk-XDDKT4NF.js +2 -0
  484. package/dist/esm/{chunk-DX5JJYMZ.js → chunk-XYVLQDGR.js} +2 -2
  485. package/dist/esm/{chunk-KFA53SVQ.js → chunk-YA5DF67M.js} +2 -2
  486. package/dist/esm/chunk-YA5DF67M.js.map +7 -0
  487. package/dist/esm/chunk-YAQBIO2B.js +2 -0
  488. package/dist/esm/chunk-YAQBIO2B.js.map +7 -0
  489. package/dist/esm/{chunk-VNPNEJI6.js → chunk-YG66IRW4.js} +2 -2
  490. package/dist/esm/chunk-YVSM2LGS.js +2 -0
  491. package/dist/esm/chunk-YVSM2LGS.js.map +7 -0
  492. package/dist/esm/chunk-Z7AZNMNX.js +2 -0
  493. package/dist/esm/chunk-Z7AZNMNX.js.map +7 -0
  494. package/dist/esm/chunk-ZJ33QP5N.js +2 -0
  495. package/dist/esm/{chunk-66ZLZAAJ.js → chunk-ZNK6AH2G.js} +1 -1
  496. package/dist/esm/{chunk-66ZLZAAJ.js.map → chunk-ZNK6AH2G.js.map} +1 -1
  497. package/dist/esm/{chunk-KPBG7CIL.js → chunk-ZO7TTWJI.js} +2 -2
  498. package/dist/esm/{chunk-OGXZHAQL.js → chunk-ZW26J2SA.js} +2 -2
  499. package/dist/esm/chunk-ZWZGUBL4.js +2 -0
  500. package/dist/esm/chunk-ZWZGUBL4.js.map +7 -0
  501. package/dist/esm/components/_internal/base-button.js +1 -1
  502. package/dist/esm/components/_internal/base-button.props.d.ts +2 -7
  503. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  504. package/dist/esm/components/_internal/base-button.props.js +1 -1
  505. package/dist/esm/components/_internal/base-checkbox.props.d.ts +0 -5
  506. package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
  507. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  508. package/dist/esm/components/_internal/base-menu.props.d.ts +0 -10
  509. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  510. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  511. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  512. package/dist/esm/components/_internal/base-radio.props.d.ts +0 -5
  513. package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
  514. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  515. package/dist/esm/components/_internal/base-tab-list.props.d.ts +0 -5
  516. package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -1
  517. package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
  518. package/dist/esm/components/_internal/menu-context.js +1 -1
  519. package/dist/esm/components/_internal/shell-bottom.d.ts +6 -7
  520. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  521. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  522. package/dist/esm/components/_internal/shell-handles.d.ts +9 -0
  523. package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
  524. package/dist/esm/components/_internal/shell-handles.js +1 -1
  525. package/dist/esm/components/_internal/shell-inspector.d.ts +4 -6
  526. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  527. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  528. package/dist/esm/components/_internal/shell-pane.d.ts +70 -0
  529. package/dist/esm/components/_internal/shell-pane.d.ts.map +1 -0
  530. package/dist/esm/components/_internal/shell-pane.js +2 -0
  531. package/dist/esm/components/_internal/shell-resizable.d.ts +48 -0
  532. package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -0
  533. package/dist/esm/components/_internal/shell-resizable.js +2 -0
  534. package/dist/esm/components/_internal/shell-resize.d.ts +11 -3
  535. package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -1
  536. package/dist/esm/components/_internal/shell-resize.js +1 -1
  537. package/dist/esm/components/_internal/shell-rest.d.ts +27 -0
  538. package/dist/esm/components/_internal/shell-rest.d.ts.map +1 -0
  539. package/dist/esm/components/_internal/shell-rest.js +2 -0
  540. package/dist/esm/components/_internal/shell-rest.js.map +7 -0
  541. package/dist/esm/components/_internal/shell-sidebar.d.ts +7 -12
  542. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  543. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  544. package/dist/esm/components/_internal/shell-store.d.ts +99 -0
  545. package/dist/esm/components/_internal/shell-store.d.ts.map +1 -0
  546. package/dist/esm/components/_internal/shell-store.js +2 -0
  547. package/dist/esm/components/_internal/shell-store.js.map +7 -0
  548. package/dist/esm/components/accordion.js +1 -1
  549. package/dist/esm/components/accordion.props.d.ts +0 -6
  550. package/dist/esm/components/accordion.props.d.ts.map +1 -1
  551. package/dist/esm/components/accordion.props.js +1 -1
  552. package/dist/esm/components/alert-dialog.js +1 -1
  553. package/dist/esm/components/avatar.js +1 -1
  554. package/dist/esm/components/avatar.props.d.ts +0 -5
  555. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  556. package/dist/esm/components/avatar.props.js +1 -1
  557. package/dist/esm/components/badge.js +1 -1
  558. package/dist/esm/components/badge.props.d.ts +0 -5
  559. package/dist/esm/components/badge.props.d.ts.map +1 -1
  560. package/dist/esm/components/badge.props.js +1 -1
  561. package/dist/esm/components/blockquote.js +1 -1
  562. package/dist/esm/components/blockquote.props.d.ts +3 -2
  563. package/dist/esm/components/blockquote.props.d.ts.map +1 -1
  564. package/dist/esm/components/blockquote.props.js +1 -1
  565. package/dist/esm/components/box.js +1 -1
  566. package/dist/esm/components/button.js +1 -1
  567. package/dist/esm/components/button.props.js +1 -1
  568. package/dist/esm/components/callout.js +1 -1
  569. package/dist/esm/components/callout.props.d.ts +0 -5
  570. package/dist/esm/components/callout.props.d.ts.map +1 -1
  571. package/dist/esm/components/callout.props.js +1 -1
  572. package/dist/esm/components/card.js +1 -1
  573. package/dist/esm/components/chatbar.d.ts.map +1 -1
  574. package/dist/esm/components/chatbar.js +1 -1
  575. package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
  576. package/dist/esm/components/checkbox-cards.js +1 -1
  577. package/dist/esm/components/checkbox-cards.props.d.ts +0 -5
  578. package/dist/esm/components/checkbox-cards.props.d.ts.map +1 -1
  579. package/dist/esm/components/checkbox-cards.props.js +1 -1
  580. package/dist/esm/components/checkbox-group.d.ts.map +1 -1
  581. package/dist/esm/components/checkbox-group.js +1 -1
  582. package/dist/esm/components/checkbox-group.props.d.ts +0 -5
  583. package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
  584. package/dist/esm/components/checkbox-group.props.js +1 -1
  585. package/dist/esm/components/checkbox.js +1 -1
  586. package/dist/esm/components/checkbox.props.js +1 -1
  587. package/dist/esm/components/code.js +1 -1
  588. package/dist/esm/components/code.props.d.ts +3 -2
  589. package/dist/esm/components/code.props.d.ts.map +1 -1
  590. package/dist/esm/components/code.props.js +1 -1
  591. package/dist/esm/components/combobox.d.ts.map +1 -1
  592. package/dist/esm/components/combobox.js +1 -1
  593. package/dist/esm/components/combobox.props.d.ts +1 -11
  594. package/dist/esm/components/combobox.props.d.ts.map +1 -1
  595. package/dist/esm/components/combobox.props.js +1 -1
  596. package/dist/esm/components/container.js +1 -1
  597. package/dist/esm/components/context-menu.d.ts.map +1 -1
  598. package/dist/esm/components/context-menu.js +1 -1
  599. package/dist/esm/components/context-menu.props.js +1 -1
  600. package/dist/esm/components/data-list.js +1 -1
  601. package/dist/esm/components/data-list.props.d.ts +4 -3
  602. package/dist/esm/components/data-list.props.d.ts.map +1 -1
  603. package/dist/esm/components/data-list.props.js +1 -1
  604. package/dist/esm/components/dialog.js +1 -1
  605. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  606. package/dist/esm/components/dropdown-menu.js +1 -1
  607. package/dist/esm/components/dropdown-menu.props.js +1 -1
  608. package/dist/esm/components/em.js +1 -1
  609. package/dist/esm/components/em.props.js +1 -1
  610. package/dist/esm/components/flex.js +1 -1
  611. package/dist/esm/components/grid.js +1 -1
  612. package/dist/esm/components/heading.js +1 -1
  613. package/dist/esm/components/heading.props.d.ts +3 -2
  614. package/dist/esm/components/heading.props.d.ts.map +1 -1
  615. package/dist/esm/components/heading.props.js +1 -1
  616. package/dist/esm/components/hover-card.js +1 -1
  617. package/dist/esm/components/icon-button.js +1 -1
  618. package/dist/esm/components/icon-button.props.js +1 -1
  619. package/dist/esm/components/image.js +1 -1
  620. package/dist/esm/components/index.js +1 -1
  621. package/dist/esm/components/inset.js +1 -1
  622. package/dist/esm/components/kbd.js +1 -1
  623. package/dist/esm/components/link.js +1 -1
  624. package/dist/esm/components/link.props.d.ts +0 -5
  625. package/dist/esm/components/link.props.d.ts.map +1 -1
  626. package/dist/esm/components/link.props.js +1 -1
  627. package/dist/esm/components/navbar.js +1 -1
  628. package/dist/esm/components/popover.js +1 -1
  629. package/dist/esm/components/progress.js +1 -1
  630. package/dist/esm/components/progress.props.d.ts +0 -5
  631. package/dist/esm/components/progress.props.d.ts.map +1 -1
  632. package/dist/esm/components/progress.props.js +1 -1
  633. package/dist/esm/components/quote.js +1 -1
  634. package/dist/esm/components/quote.props.js +1 -1
  635. package/dist/esm/components/radio-cards.js +1 -1
  636. package/dist/esm/components/radio-cards.props.d.ts +0 -5
  637. package/dist/esm/components/radio-cards.props.d.ts.map +1 -1
  638. package/dist/esm/components/radio-cards.props.js +1 -1
  639. package/dist/esm/components/radio-group.d.ts.map +1 -1
  640. package/dist/esm/components/radio-group.js +1 -1
  641. package/dist/esm/components/radio-group.props.d.ts +0 -5
  642. package/dist/esm/components/radio-group.props.d.ts.map +1 -1
  643. package/dist/esm/components/radio-group.props.js +1 -1
  644. package/dist/esm/components/radio.js +1 -1
  645. package/dist/esm/components/radio.props.js +1 -1
  646. package/dist/esm/components/schemas/base-button.schema.d.ts +0 -1
  647. package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -1
  648. package/dist/esm/components/schemas/base-button.schema.js +1 -1
  649. package/dist/esm/components/schemas/button.schema.d.ts +0 -1
  650. package/dist/esm/components/schemas/button.schema.d.ts.map +1 -1
  651. package/dist/esm/components/schemas/button.schema.js +1 -1
  652. package/dist/esm/components/schemas/icon-button.schema.d.ts +0 -1
  653. package/dist/esm/components/schemas/icon-button.schema.d.ts.map +1 -1
  654. package/dist/esm/components/schemas/icon-button.schema.js +1 -1
  655. package/dist/esm/components/schemas/index.js +1 -1
  656. package/dist/esm/components/schemas/shell.schema.d.ts +277 -229
  657. package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
  658. package/dist/esm/components/schemas/shell.schema.js +1 -1
  659. package/dist/esm/components/schemas/toggle-button.schema.d.ts +0 -1
  660. package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +1 -1
  661. package/dist/esm/components/schemas/toggle-button.schema.js +1 -1
  662. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +0 -1
  663. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +1 -1
  664. package/dist/esm/components/schemas/toggle-icon-button.schema.js +1 -1
  665. package/dist/esm/components/scroll-area.js +1 -1
  666. package/dist/esm/components/section.js +1 -1
  667. package/dist/esm/components/segmented-control.js +1 -1
  668. package/dist/esm/components/select.js +1 -1
  669. package/dist/esm/components/select.props.d.ts +0 -5
  670. package/dist/esm/components/select.props.d.ts.map +1 -1
  671. package/dist/esm/components/select.props.js +1 -1
  672. package/dist/esm/components/separator.js +1 -1
  673. package/dist/esm/components/separator.props.js +1 -1
  674. package/dist/esm/components/sheet.js +1 -1
  675. package/dist/esm/components/shell.context.d.ts +25 -114
  676. package/dist/esm/components/shell.context.d.ts.map +1 -1
  677. package/dist/esm/components/shell.context.js +1 -1
  678. package/dist/esm/components/shell.d.ts +42 -21
  679. package/dist/esm/components/shell.d.ts.map +1 -1
  680. package/dist/esm/components/shell.hooks.d.ts +7 -23
  681. package/dist/esm/components/shell.hooks.d.ts.map +1 -1
  682. package/dist/esm/components/shell.hooks.js +1 -1
  683. package/dist/esm/components/shell.js +1 -1
  684. package/dist/esm/components/shell.types.d.ts +19 -2
  685. package/dist/esm/components/shell.types.d.ts.map +1 -1
  686. package/dist/esm/components/shell.types.js +1 -1
  687. package/dist/esm/components/sidebar.d.ts +0 -1
  688. package/dist/esm/components/sidebar.d.ts.map +1 -1
  689. package/dist/esm/components/sidebar.js +1 -1
  690. package/dist/esm/components/sidebar.props.d.ts +0 -5
  691. package/dist/esm/components/sidebar.props.d.ts.map +1 -1
  692. package/dist/esm/components/sidebar.props.js +1 -1
  693. package/dist/esm/components/skeleton.js +1 -1
  694. package/dist/esm/components/slider.js +1 -1
  695. package/dist/esm/components/slider.props.d.ts +0 -5
  696. package/dist/esm/components/slider.props.d.ts.map +1 -1
  697. package/dist/esm/components/slider.props.js +1 -1
  698. package/dist/esm/components/spinner.js +1 -1
  699. package/dist/esm/components/strong.js +1 -1
  700. package/dist/esm/components/strong.props.js +1 -1
  701. package/dist/esm/components/switch.d.ts.map +1 -1
  702. package/dist/esm/components/switch.js +1 -1
  703. package/dist/esm/components/switch.props.d.ts +0 -5
  704. package/dist/esm/components/switch.props.d.ts.map +1 -1
  705. package/dist/esm/components/switch.props.js +1 -1
  706. package/dist/esm/components/tab-nav.js +1 -1
  707. package/dist/esm/components/tab-nav.props.js +1 -1
  708. package/dist/esm/components/table.js +1 -1
  709. package/dist/esm/components/tabs.js +1 -1
  710. package/dist/esm/components/tabs.props.js +1 -1
  711. package/dist/esm/components/text-area.js +1 -1
  712. package/dist/esm/components/text-area.props.js +1 -1
  713. package/dist/esm/components/text-field.js +1 -1
  714. package/dist/esm/components/text-field.props.js +1 -1
  715. package/dist/esm/components/text.js +1 -1
  716. package/dist/esm/components/text.props.d.ts +3 -2
  717. package/dist/esm/components/text.props.d.ts.map +1 -1
  718. package/dist/esm/components/text.props.js +1 -1
  719. package/dist/esm/components/theme-panel.js +1 -1
  720. package/dist/esm/components/theme.js +1 -1
  721. package/dist/esm/components/theme.props.js +1 -1
  722. package/dist/esm/components/toggle-button.js +1 -1
  723. package/dist/esm/components/toggle-icon-button.js +1 -1
  724. package/dist/esm/components/toolbar.js +1 -1
  725. package/dist/esm/components/tooltip.js +1 -1
  726. package/dist/esm/components/user-card.d.ts.map +1 -1
  727. package/dist/esm/components/user-card.js +1 -1
  728. package/dist/esm/components/user-card.props.d.ts +0 -5
  729. package/dist/esm/components/user-card.props.d.ts.map +1 -1
  730. package/dist/esm/components/user-card.props.js +1 -1
  731. package/dist/esm/components/virtual-menu.js +1 -1
  732. package/dist/esm/helpers/extract-props.js +1 -1
  733. package/dist/esm/helpers/get-margin-styles.js +1 -1
  734. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  735. package/dist/esm/helpers/index.js +1 -1
  736. package/dist/esm/hooks/index.js +1 -1
  737. package/dist/esm/hooks/use-breakpoint.d.ts +5 -0
  738. package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -1
  739. package/dist/esm/hooks/use-breakpoint.js +1 -1
  740. package/dist/esm/index.js +1 -1
  741. package/dist/esm/props/color.prop.js +1 -1
  742. package/dist/esm/props/emphasis.prop.d.ts +11 -0
  743. package/dist/esm/props/emphasis.prop.d.ts.map +1 -0
  744. package/dist/esm/props/emphasis.prop.js +2 -0
  745. package/dist/esm/props/emphasis.prop.js.map +7 -0
  746. package/dist/esm/props/index.d.ts +1 -1
  747. package/dist/esm/props/index.d.ts.map +1 -1
  748. package/dist/esm/props/index.js +1 -1
  749. package/package.json +7 -2
  750. package/schemas/base-button.json +0 -5
  751. package/schemas/button.json +0 -5
  752. package/schemas/icon-button.json +0 -5
  753. package/schemas/index.json +1655 -25
  754. package/schemas/shell-bottom.d.ts +2 -0
  755. package/schemas/shell-bottom.json +180 -76
  756. package/schemas/shell-content.d.ts +2 -0
  757. package/schemas/shell-content.json +11 -5
  758. package/schemas/shell-handle.d.ts +2 -0
  759. package/schemas/shell-handle.json +7 -5
  760. package/schemas/shell-header.d.ts +2 -0
  761. package/schemas/shell-header.json +9 -10
  762. package/schemas/shell-inspector.d.ts +2 -0
  763. package/schemas/shell-inspector.json +183 -79
  764. package/schemas/shell-panel.d.ts +2 -0
  765. package/schemas/shell-panel.json +180 -76
  766. package/schemas/shell-rail.d.ts +2 -0
  767. package/schemas/shell-rail.json +137 -64
  768. package/schemas/shell-root.d.ts +2 -0
  769. package/schemas/shell-root.json +11 -9
  770. package/schemas/shell-sidebar.d.ts +2 -0
  771. package/schemas/shell-sidebar.json +274 -85
  772. package/schemas/shell-trigger.d.ts +2 -0
  773. package/schemas/shell-trigger.json +29 -17
  774. package/schemas/toggle-button.json +0 -5
  775. package/schemas/toggle-icon-button.json +0 -5
  776. package/src/components/_internal/base-button.css +14 -69
  777. package/src/components/_internal/base-button.props.ts +2 -4
  778. package/src/components/_internal/base-checkbox.css +9 -63
  779. package/src/components/_internal/base-checkbox.props.ts +0 -2
  780. package/src/components/_internal/base-menu.css +7 -59
  781. package/src/components/_internal/base-menu.props.ts +0 -2
  782. package/src/components/_internal/base-radio.css +9 -46
  783. package/src/components/_internal/base-radio.props.ts +0 -2
  784. package/src/components/_internal/base-sidebar-menu.css +3 -3
  785. package/src/components/_internal/base-tab-list.css +1 -7
  786. package/src/components/_internal/base-tab-list.props.ts +0 -2
  787. package/src/components/_internal/shell-bottom.tsx +92 -361
  788. package/src/components/_internal/shell-handles.tsx +193 -108
  789. package/src/components/_internal/shell-inspector.tsx +93 -360
  790. package/src/components/_internal/shell-pane.tsx +283 -0
  791. package/src/components/_internal/shell-resizable.tsx +263 -0
  792. package/src/components/_internal/shell-resize.tsx +11 -3
  793. package/src/components/_internal/shell-rest.ts +45 -0
  794. package/src/components/_internal/shell-sidebar.tsx +130 -441
  795. package/src/components/_internal/shell-store.tsx +204 -0
  796. package/src/components/accordion.css +4 -62
  797. package/src/components/accordion.props.tsx +0 -3
  798. package/src/components/avatar.css +10 -61
  799. package/src/components/avatar.props.tsx +0 -2
  800. package/src/components/badge.css +7 -32
  801. package/src/components/badge.props.tsx +0 -2
  802. package/src/components/blockquote.props.tsx +2 -2
  803. package/src/components/callout.css +5 -25
  804. package/src/components/callout.props.tsx +0 -2
  805. package/src/components/chatbar.tsx +6 -3
  806. package/src/components/checkbox-cards.props.tsx +0 -2
  807. package/src/components/checkbox-cards.tsx +1 -4
  808. package/src/components/checkbox-group.tsx +0 -2
  809. package/src/components/code.css +36 -36
  810. package/src/components/code.props.tsx +2 -2
  811. package/src/components/combobox.css +4 -10
  812. package/src/components/combobox.props.tsx +1 -5
  813. package/src/components/combobox.tsx +4 -8
  814. package/src/components/context-menu.tsx +5 -8
  815. package/src/components/data-list.css +14 -9
  816. package/src/components/data-list.props.tsx +5 -2
  817. package/src/components/dropdown-menu.tsx +5 -9
  818. package/src/components/heading.css +16 -5
  819. package/src/components/heading.props.tsx +2 -2
  820. package/src/components/link.css +3 -4
  821. package/src/components/link.props.tsx +0 -2
  822. package/src/components/progress.css +3 -10
  823. package/src/components/progress.props.tsx +0 -2
  824. package/src/components/radio-cards.css +1 -4
  825. package/src/components/radio-cards.props.tsx +0 -2
  826. package/src/components/radio-group.props.tsx +0 -2
  827. package/src/components/radio-group.tsx +0 -2
  828. package/src/components/schemas/base-button.schema.ts +0 -10
  829. package/src/components/schemas/shell.schema.ts +162 -153
  830. package/src/components/select.css +13 -96
  831. package/src/components/select.props.tsx +0 -2
  832. package/src/components/sheet.tsx +2 -2
  833. package/src/components/shell.context.tsx +112 -124
  834. package/src/components/shell.css +637 -496
  835. package/src/components/shell.hooks.ts +12 -170
  836. package/src/components/shell.tsx +566 -1497
  837. package/src/components/shell.types.ts +22 -2
  838. package/src/components/sidebar.css +21 -115
  839. package/src/components/sidebar.props.tsx +0 -2
  840. package/src/components/sidebar.tsx +2 -5
  841. package/src/components/slider.css +4 -37
  842. package/src/components/slider.props.tsx +0 -2
  843. package/src/components/slider.tsx +1 -1
  844. package/src/components/switch.css +4 -23
  845. package/src/components/switch.props.tsx +0 -2
  846. package/src/components/switch.tsx +1 -3
  847. package/src/components/text.css +16 -5
  848. package/src/components/text.props.tsx +2 -2
  849. package/src/components/theme-panel.tsx +1 -1
  850. package/src/components/user-card.props.tsx +0 -2
  851. package/src/components/user-card.tsx +1 -2
  852. package/src/hooks/use-breakpoint.ts +9 -0
  853. package/src/props/color.prop.ts +1 -1
  854. package/src/props/emphasis.prop.ts +19 -0
  855. package/src/props/index.ts +1 -1
  856. package/src/styles/tokens/color.css +109 -0
  857. package/src/styles/tokens/constants.css +0 -1
  858. package/styles.css +970 -1254
  859. package/tokens/base.css +204 -150
  860. package/tokens.css +204 -151
  861. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +0 -7
  862. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +0 -1
  863. package/dist/cjs/components/_internal/shell-prop-helpers.js +0 -2
  864. package/dist/cjs/components/_internal/shell-prop-helpers.js.map +0 -7
  865. package/dist/cjs/props/high-contrast.prop.d.ts +0 -9
  866. package/dist/cjs/props/high-contrast.prop.d.ts.map +0 -1
  867. package/dist/cjs/props/high-contrast.prop.js +0 -2
  868. package/dist/cjs/props/high-contrast.prop.js.map +0 -7
  869. package/dist/esm/chunk-3DC63EZP.js +0 -2
  870. package/dist/esm/chunk-3DC63EZP.js.map +0 -7
  871. package/dist/esm/chunk-4JQZUQY7.js +0 -2
  872. package/dist/esm/chunk-4SMJ7D4S.js +0 -2
  873. package/dist/esm/chunk-4SMJ7D4S.js.map +0 -7
  874. package/dist/esm/chunk-4TCXI3L3.js +0 -2
  875. package/dist/esm/chunk-4TCXI3L3.js.map +0 -7
  876. package/dist/esm/chunk-5BYHEYO6.js +0 -2
  877. package/dist/esm/chunk-5BYHEYO6.js.map +0 -7
  878. package/dist/esm/chunk-5LXFJMFB.js +0 -2
  879. package/dist/esm/chunk-5LXFJMFB.js.map +0 -7
  880. package/dist/esm/chunk-5MNBQROW.js +0 -2
  881. package/dist/esm/chunk-5MNBQROW.js.map +0 -7
  882. package/dist/esm/chunk-666GX7O5.js +0 -2
  883. package/dist/esm/chunk-6HEAF5IT.js +0 -2
  884. package/dist/esm/chunk-6HEAF5IT.js.map +0 -7
  885. package/dist/esm/chunk-7ESHXHHO.js +0 -2
  886. package/dist/esm/chunk-7ESHXHHO.js.map +0 -7
  887. package/dist/esm/chunk-A3NH376A.js +0 -2
  888. package/dist/esm/chunk-A3NH376A.js.map +0 -7
  889. package/dist/esm/chunk-BI7W34WW.js +0 -2
  890. package/dist/esm/chunk-BI7W34WW.js.map +0 -7
  891. package/dist/esm/chunk-CBR3VIRS.js +0 -2
  892. package/dist/esm/chunk-CBR3VIRS.js.map +0 -7
  893. package/dist/esm/chunk-CECQNGUL.js +0 -2
  894. package/dist/esm/chunk-CECQNGUL.js.map +0 -7
  895. package/dist/esm/chunk-D2AZAGGP.js +0 -2
  896. package/dist/esm/chunk-D2AZAGGP.js.map +0 -7
  897. package/dist/esm/chunk-DCAZPMOB.js +0 -2
  898. package/dist/esm/chunk-DCAZPMOB.js.map +0 -7
  899. package/dist/esm/chunk-DQAUX5ZL.js +0 -2
  900. package/dist/esm/chunk-DQAUX5ZL.js.map +0 -7
  901. package/dist/esm/chunk-F7IUK2I2.js +0 -2
  902. package/dist/esm/chunk-FLBLS7M4.js +0 -2
  903. package/dist/esm/chunk-FLBLS7M4.js.map +0 -7
  904. package/dist/esm/chunk-FMBECDL4.js +0 -2
  905. package/dist/esm/chunk-GSIE6SUD.js +0 -2
  906. package/dist/esm/chunk-GSIE6SUD.js.map +0 -7
  907. package/dist/esm/chunk-HOHUDTTL.js +0 -2
  908. package/dist/esm/chunk-HOHUDTTL.js.map +0 -7
  909. package/dist/esm/chunk-HSAG7C53.js +0 -2
  910. package/dist/esm/chunk-HUKPWYG2.js +0 -2
  911. package/dist/esm/chunk-HUKPWYG2.js.map +0 -7
  912. package/dist/esm/chunk-IDYHZIS6.js +0 -2
  913. package/dist/esm/chunk-IDYHZIS6.js.map +0 -7
  914. package/dist/esm/chunk-IGQRZCAI.js +0 -2
  915. package/dist/esm/chunk-IGQRZCAI.js.map +0 -7
  916. package/dist/esm/chunk-ILRJA7FU.js +0 -2
  917. package/dist/esm/chunk-ILRJA7FU.js.map +0 -7
  918. package/dist/esm/chunk-JJKQ7CGI.js +0 -2
  919. package/dist/esm/chunk-KFA53SVQ.js.map +0 -7
  920. package/dist/esm/chunk-KRDP5SQ7.js +0 -2
  921. package/dist/esm/chunk-KRDP5SQ7.js.map +0 -7
  922. package/dist/esm/chunk-KTAFIHJY.js +0 -2
  923. package/dist/esm/chunk-KTAFIHJY.js.map +0 -7
  924. package/dist/esm/chunk-MCQAJV4K.js +0 -2
  925. package/dist/esm/chunk-MCQAJV4K.js.map +0 -7
  926. package/dist/esm/chunk-MCQCG6AS.js +0 -2
  927. package/dist/esm/chunk-MJ47O7KH.js +0 -2
  928. package/dist/esm/chunk-MJ47O7KH.js.map +0 -7
  929. package/dist/esm/chunk-N2B7TWIP.js +0 -2
  930. package/dist/esm/chunk-N2B7TWIP.js.map +0 -7
  931. package/dist/esm/chunk-NIQT45PJ.js +0 -2
  932. package/dist/esm/chunk-NKEJTTIL.js +0 -2
  933. package/dist/esm/chunk-NKEJTTIL.js.map +0 -7
  934. package/dist/esm/chunk-NNO7M466.js +0 -2
  935. package/dist/esm/chunk-NNO7M466.js.map +0 -7
  936. package/dist/esm/chunk-PTS6QYQW.js +0 -2
  937. package/dist/esm/chunk-PTS6QYQW.js.map +0 -7
  938. package/dist/esm/chunk-RLPKKCBL.js +0 -2
  939. package/dist/esm/chunk-RLPKKCBL.js.map +0 -7
  940. package/dist/esm/chunk-SNHEJU2S.js +0 -2
  941. package/dist/esm/chunk-SNHEJU2S.js.map +0 -7
  942. package/dist/esm/chunk-SO67YEVQ.js +0 -2
  943. package/dist/esm/chunk-SZTZ2XLI.js +0 -2
  944. package/dist/esm/chunk-T2FZN7G3.js +0 -2
  945. package/dist/esm/chunk-T2FZN7G3.js.map +0 -7
  946. package/dist/esm/chunk-TBJ6L4NL.js +0 -2
  947. package/dist/esm/chunk-TBJ6L4NL.js.map +0 -7
  948. package/dist/esm/chunk-TGN5ZJU5.js +0 -2
  949. package/dist/esm/chunk-TGN5ZJU5.js.map +0 -7
  950. package/dist/esm/chunk-TLWTUKKL.js +0 -2
  951. package/dist/esm/chunk-TLWTUKKL.js.map +0 -7
  952. package/dist/esm/chunk-UIRSGVJG.js +0 -2
  953. package/dist/esm/chunk-UMX5MGLG.js +0 -2
  954. package/dist/esm/chunk-UMX5MGLG.js.map +0 -7
  955. package/dist/esm/chunk-WR7YLY46.js +0 -2
  956. package/dist/esm/chunk-WR7YLY46.js.map +0 -7
  957. package/dist/esm/chunk-WZETC7WV.js +0 -2
  958. package/dist/esm/chunk-WZETC7WV.js.map +0 -7
  959. package/dist/esm/chunk-XGGLYV5D.js +0 -2
  960. package/dist/esm/chunk-XGGLYV5D.js.map +0 -7
  961. package/dist/esm/chunk-XI5YXUCK.js +0 -2
  962. package/dist/esm/chunk-XKASPWCJ.js +0 -2
  963. package/dist/esm/chunk-XKASPWCJ.js.map +0 -7
  964. package/dist/esm/chunk-ZRKE3NVU.js +0 -2
  965. package/dist/esm/chunk-ZRKE3NVU.js.map +0 -7
  966. package/dist/esm/chunk-ZWYYPFZW.js +0 -2
  967. package/dist/esm/chunk-ZWYYPFZW.js.map +0 -7
  968. package/dist/esm/chunk-ZXZOH63L.js +0 -2
  969. package/dist/esm/chunk-ZXZOH63L.js.map +0 -7
  970. package/dist/esm/components/_internal/shell-prop-helpers.d.ts +0 -7
  971. package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +0 -1
  972. package/dist/esm/components/_internal/shell-prop-helpers.js +0 -2
  973. package/dist/esm/props/high-contrast.prop.d.ts +0 -9
  974. package/dist/esm/props/high-contrast.prop.d.ts.map +0 -1
  975. package/dist/esm/props/high-contrast.prop.js +0 -2
  976. package/src/components/_internal/shell-prop-helpers.ts +0 -54
  977. package/src/props/high-contrast.prop.ts +0 -13
  978. /package/dist/esm/{chunk-MBCBP73P.js.map → chunk-25X75TI7.js.map} +0 -0
  979. /package/dist/esm/{chunk-GLERJXVS.js.map → chunk-2Q7BJ7YG.js.map} +0 -0
  980. /package/dist/esm/{chunk-CTA5ODAO.js.map → chunk-4WU2WKUJ.js.map} +0 -0
  981. /package/dist/esm/{chunk-F7IUK2I2.js.map → chunk-5SNHUVDA.js.map} +0 -0
  982. /package/dist/esm/{chunk-H7ST535H.js.map → chunk-5TAHT6VC.js.map} +0 -0
  983. /package/dist/esm/{chunk-MHPPVJDB.js.map → chunk-67MKPTZJ.js.map} +0 -0
  984. /package/dist/esm/{chunk-UFI53QUC.js.map → chunk-6J6YX2VX.js.map} +0 -0
  985. /package/dist/esm/{chunk-UUUZXUIP.js.map → chunk-7NYODT3Z.js.map} +0 -0
  986. /package/dist/esm/{chunk-NVDXXGVW.js.map → chunk-7PMMYHZV.js.map} +0 -0
  987. /package/dist/esm/{chunk-UBOOUDS4.js.map → chunk-AO32NT75.js.map} +0 -0
  988. /package/dist/esm/{chunk-JDGJSNWT.js.map → chunk-C5RVO3C3.js.map} +0 -0
  989. /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-CBNTPHYK.js.map} +0 -0
  990. /package/dist/esm/{chunk-SESAEJ6W.js.map → chunk-CLMOWP5T.js.map} +0 -0
  991. /package/dist/esm/{chunk-BBJUB52V.js.map → chunk-CRBOJ7N7.js.map} +0 -0
  992. /package/dist/esm/{chunk-DUHJVT64.js.map → chunk-CRSHBENJ.js.map} +0 -0
  993. /package/dist/esm/{chunk-56TS6OKQ.js.map → chunk-DCIQHXAR.js.map} +0 -0
  994. /package/dist/esm/{chunk-43A5GUSI.js.map → chunk-EHBAK3LQ.js.map} +0 -0
  995. /package/dist/esm/{chunk-2TIADHPD.js.map → chunk-F3AXE27Q.js.map} +0 -0
  996. /package/dist/esm/{chunk-VA4CTVQL.js.map → chunk-FB3PD4Z3.js.map} +0 -0
  997. /package/dist/esm/{chunk-OYF6YXH7.js.map → chunk-FEAOFF77.js.map} +0 -0
  998. /package/dist/esm/{chunk-ADBLURLJ.js.map → chunk-GDAKJS64.js.map} +0 -0
  999. /package/dist/esm/{chunk-IEWCQU2S.js.map → chunk-GGSJXOKR.js.map} +0 -0
  1000. /package/dist/esm/{chunk-4JQZUQY7.js.map → chunk-GM7KMQDI.js.map} +0 -0
  1001. /package/dist/esm/{chunk-HBR42MIX.js.map → chunk-H4GR4262.js.map} +0 -0
  1002. /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IDUVJJYG.js.map} +0 -0
  1003. /package/dist/esm/{chunk-P7IAHW4V.js.map → chunk-IK3MQHA5.js.map} +0 -0
  1004. /package/dist/esm/{chunk-SPIU5JYC.js.map → chunk-JDEBKA56.js.map} +0 -0
  1005. /package/dist/esm/{chunk-E67CIG6A.js.map → chunk-JDWCQ2XP.js.map} +0 -0
  1006. /package/dist/esm/{chunk-JBO5YOUM.js.map → chunk-JQW4XYBS.js.map} +0 -0
  1007. /package/dist/esm/{chunk-P5OSU4NX.js.map → chunk-JRFZ535T.js.map} +0 -0
  1008. /package/dist/esm/{chunk-GYBLXQ4R.js.map → chunk-KEEPKI2X.js.map} +0 -0
  1009. /package/dist/esm/{chunk-WXP6MMUB.js.map → chunk-KOFEFBB3.js.map} +0 -0
  1010. /package/dist/esm/{chunk-YMUGKYGW.js.map → chunk-KV4SZP3F.js.map} +0 -0
  1011. /package/dist/esm/{chunk-FG7XM7KJ.js.map → chunk-LJCUPAOI.js.map} +0 -0
  1012. /package/dist/esm/{chunk-MBE2YSBU.js.map → chunk-MBCQA7UZ.js.map} +0 -0
  1013. /package/dist/esm/{chunk-JJKQ7CGI.js.map → chunk-MM5IHQFM.js.map} +0 -0
  1014. /package/dist/esm/{chunk-YVBCDTTD.js.map → chunk-MN3XALXD.js.map} +0 -0
  1015. /package/dist/esm/{chunk-3R7XMRV5.js.map → chunk-NQXRWBQM.js.map} +0 -0
  1016. /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-NTNMJX5M.js.map} +0 -0
  1017. /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-O4CSXNST.js.map} +0 -0
  1018. /package/dist/esm/{chunk-HSAG7C53.js.map → chunk-ODCVOXEV.js.map} +0 -0
  1019. /package/dist/esm/{chunk-DMJJM5IS.js.map → chunk-OEEF6KJG.js.map} +0 -0
  1020. /package/dist/esm/{chunk-ABSKRHVM.js.map → chunk-OJSOX3AX.js.map} +0 -0
  1021. /package/dist/esm/{chunk-JGLAE5G7.js.map → chunk-OQU2SKLN.js.map} +0 -0
  1022. /package/dist/esm/{chunk-UWT6TE5D.js.map → chunk-OTXCKEWT.js.map} +0 -0
  1023. /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
  1024. /package/dist/esm/{chunk-L6PVH3RM.js.map → chunk-PDUHBDFC.js.map} +0 -0
  1025. /package/dist/esm/{chunk-HW324FK3.js.map → chunk-POG3YABW.js.map} +0 -0
  1026. /package/dist/esm/{chunk-TOOSHJOA.js.map → chunk-PYXMGEO7.js.map} +0 -0
  1027. /package/dist/esm/{chunk-T4UHUQFJ.js.map → chunk-QEGEUD4D.js.map} +0 -0
  1028. /package/dist/esm/{chunk-MCQCG6AS.js.map → chunk-QEL55MLF.js.map} +0 -0
  1029. /package/dist/esm/{chunk-F7IYL2VW.js.map → chunk-QJVAS7AK.js.map} +0 -0
  1030. /package/dist/esm/{chunk-DXL6V2A5.js.map → chunk-SEY4NA45.js.map} +0 -0
  1031. /package/dist/esm/{chunk-TS623UPD.js.map → chunk-TLGXIWAS.js.map} +0 -0
  1032. /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-UBSLEGQZ.js.map} +0 -0
  1033. /package/dist/esm/{chunk-37OGSEQR.js.map → chunk-UNWPH3SO.js.map} +0 -0
  1034. /package/dist/esm/{chunk-HIKVMKYQ.js.map → chunk-VTIL55SR.js.map} +0 -0
  1035. /package/dist/esm/{chunk-CQNPBTM5.js.map → chunk-W2LD2YE6.js.map} +0 -0
  1036. /package/dist/esm/{chunk-NMKPFUNP.js.map → chunk-WIDJYVZF.js.map} +0 -0
  1037. /package/dist/esm/{chunk-3OBXZUFJ.js.map → chunk-WJBOOAIO.js.map} +0 -0
  1038. /package/dist/esm/{chunk-7FC7HF76.js.map → chunk-WQCB7KSH.js.map} +0 -0
  1039. /package/dist/esm/{chunk-OWAUCLRT.js.map → chunk-WZFVTC7P.js.map} +0 -0
  1040. /package/dist/esm/{chunk-XI5YXUCK.js.map → chunk-XDDKT4NF.js.map} +0 -0
  1041. /package/dist/esm/{chunk-DX5JJYMZ.js.map → chunk-XYVLQDGR.js.map} +0 -0
  1042. /package/dist/esm/{chunk-VNPNEJI6.js.map → chunk-YG66IRW4.js.map} +0 -0
  1043. /package/dist/esm/{chunk-NIQT45PJ.js.map → chunk-ZJ33QP5N.js.map} +0 -0
  1044. /package/dist/esm/{chunk-KPBG7CIL.js.map → chunk-ZO7TTWJI.js.map} +0 -0
  1045. /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-ZW26J2SA.js.map} +0 -0
  1046. /package/dist/esm/components/_internal/{shell-prop-helpers.js.map → shell-pane.js.map} +0 -0
  1047. /package/dist/esm/{props/high-contrast.prop.js.map → components/_internal/shell-resizable.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/text.props.tsx"],
4
- "sourcesContent": ["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"],
5
- "mappings": "wWAYA,IAAMA,EAAK,CAAC,OAAQ,MAAO,QAAS,GAAG,EACjCC,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAI,EAE3EC,EAAe,CACnB,GAAI,CAAE,KAAM,OAAQ,OAAQF,EAAI,QAAS,MAAO,EAChD,GAAGG,EACH,KAAM,CACJ,KAAM,OACN,UAAW,YACX,OAAQF,EACR,WAAY,EACd,EACA,GAAGG,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,CACL",
6
- "names": ["as", "sizes", "textPropDefs", "asChildPropDef", "fontFamilyPropDef", "weightPropDef", "textAlignPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "colorPropDef", "highContrastPropDef"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as Se}from"./chunk-7ESHXHHO.js";import{a as Ee}from"./chunk-RLPKKCBL.js";import{a as Me}from"./chunk-ZXZOH63L.js";import{a as cn}from"./chunk-2LYX5S7H.js";import{a as Ve,c as He,d as Fe}from"./chunk-LAOMR7SE.js";import{a as Le,c as ke}from"./chunk-5LXFJMFB.js";import{a as Re,b as je,c as Ue,d as We,e as $e,f as qe,g as Ge,h as Oe,i as Ke,j as Xe,k as Ye,l as Je,m as Qe,o as Ze,p as en,q as nn,r as tn,s as on,u as an,v as Te}from"./chunk-SNHEJU2S.js";import{a as ln,b as be}from"./chunk-TLWTUKKL.js";import{a as sn,b as dn,c as he}from"./chunk-CECQNGUL.js";import{a as rn}from"./chunk-NNO7M466.js";import{a as Ae}from"./chunk-AGAQC4HH.js";import{a as we}from"./chunk-FMBECDL4.js";import{a as Ie}from"./chunk-KFA53SVQ.js";import{a as On}from"./chunk-OS3FCYZY.js";var Nn={};On(Nn,{Bottom:()=>Se,Content:()=>xe,Header:()=>ze,Inspector:()=>Ee,Left:()=>Ce,Panel:()=>ie,Rail:()=>de,Root:()=>fn,Sidebar:()=>Me,Trigger:()=>Rn,useResponsivePresentation:()=>Le,useShell:()=>Re,useSidebarMode:()=>Oe});import*as e from"react";import se from"classnames";var Tn=Symbol("rtShellSlot");function ce(n,a){return n[Tn]=a,n}var j=(n,a)=>e.isValidElement(n)&&(n.type===a||n.type?.displayName===a.displayName);ce(Me,"Shell.Sidebar");ce(Ee,"Shell.Inspector");ce(Se,"Shell.Bottom");function Ln(n,a){switch(a.type){case"SET_LEFT_MODE":return a.mode==="collapsed"?n.leftMode==="collapsed"&&n.panelMode==="collapsed"?n:{...n,leftMode:"collapsed",panelMode:"collapsed"}:n.leftMode===a.mode?n:{...n,leftMode:a.mode};case"SET_PANEL_MODE":return a.mode==="expanded"&&n.leftMode!=="expanded"?{...n,leftMode:"expanded",panelMode:"expanded"}:n.panelMode===a.mode?n:{...n,panelMode:a.mode};case"SET_SIDEBAR_MODE":return n.sidebarMode===a.mode?n:{...n,sidebarMode:a.mode};case"SET_INSPECTOR_MODE":return n.inspectorMode===a.mode?n:{...n,inspectorMode:a.mode};case"SET_BOTTOM_MODE":return n.bottomMode===a.mode?n:{...n,bottomMode:a.mode};case"TOGGLE_PANE":switch(a.target){case"left":case"rail":return{...n,leftMode:n.leftMode==="expanded"?"collapsed":"expanded",panelMode:n.leftMode==="expanded"?"collapsed":n.panelMode};case"panel":return n.leftMode==="collapsed"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:n.panelMode==="expanded"?"collapsed":"expanded"};case"sidebar":{let p=n.sidebarMode==="collapsed"?"expanded":n.sidebarMode==="expanded"?"collapsed":"expanded";return{...n,sidebarMode:p}}case"inspector":return{...n,inspectorMode:n.inspectorMode==="expanded"?"collapsed":"expanded"};case"bottom":return{...n,bottomMode:n.bottomMode==="expanded"?"collapsed":"expanded"};default:return n}case"EXPAND_PANE":switch(a.target){case"left":case"rail":return n.leftMode==="expanded"?n:{...n,leftMode:"expanded"};case"panel":return n.leftMode==="expanded"&&n.panelMode==="expanded"?n:{...n,leftMode:"expanded",panelMode:"expanded"};case"sidebar":return n.sidebarMode==="expanded"?n:{...n,sidebarMode:"expanded"};case"inspector":return n.inspectorMode==="expanded"?n:{...n,inspectorMode:"expanded"};case"bottom":return n.bottomMode==="expanded"?n:{...n,bottomMode:"expanded"};default:return n}case"COLLAPSE_PANE":switch(a.target){case"left":case"rail":return n.leftMode==="collapsed"&&n.panelMode==="collapsed"?n:{...n,leftMode:"collapsed",panelMode:"collapsed"};case"panel":return n.panelMode==="collapsed"?n:{...n,panelMode:"collapsed"};case"sidebar":return n.sidebarMode==="collapsed"?n:{...n,sidebarMode:"collapsed"};case"inspector":return n.inspectorMode==="collapsed"?n:{...n,inspectorMode:"collapsed"};case"bottom":return n.bottomMode==="collapsed"?n:{...n,bottomMode:"collapsed"};default:return n}}return n}function pn(n,a){if(a===void 0)return n.initial??Object.values(n)[0];if(n[a]!==void 0)return n[a];let y=[...Object.keys(Ie)].reverse().concat("initial");for(let u=y.indexOf(a)+1;u<y.length;u++)if(n[y[u]]!==void 0)return n[y[u]]}function un(n,a){let p=e.Children.toArray(n),y=p.some(s=>e.isValidElement(s)&&s.type?.displayName==="Shell.Panel"&&!!s.props?.defaultOpen),u=p.find(s=>e.isValidElement(s)&&s.type?.displayName==="Shell.Rail"),f=u?u.props?.defaultOpen:void 0,T=u?f===void 0?!0:typeof f=="boolean"?f:typeof f=="object"?f.initial??Object.values(f)[0]??!0:!0:!1,L=p.some(s=>e.isValidElement(s)&&s.type?.displayName==="Shell.Inspector"&&!!s.props?.defaultOpen),i=p.some(s=>e.isValidElement(s)&&s.type?.displayName==="Shell.Inspector"&&typeof s.props?.open<"u"&&!!s.props?.open),R=p.some(s=>{if(!e.isValidElement(s)||s.type?.displayName!=="Shell.Panel")return!1;let d=s.props?.open;return typeof d>"u"?!1:typeof d=="boolean"?d:typeof d=="object"&&d!==null?d.initial??Object.values(d)[0]??!1:!1}),P=()=>{let s=p.find(h=>e.isValidElement(h)&&h.type?.displayName==="Shell.Sidebar");if(!s)return"expanded";let d=s.props;if(typeof d?.state<"u"){if(typeof d.state=="string")return d.state;if(typeof d.state=="object")return pn(d.state,a)??"expanded"}if(typeof d?.defaultState<"u"){if(typeof d.defaultState=="string")return d.defaultState;if(typeof d.defaultState=="object")return pn(d.defaultState,a)??"expanded"}return"expanded"},N=()=>{let s=p.find(h=>e.isValidElement(h)&&h.type?.displayName==="Shell.Bottom");if(!s)return"collapsed";let d=s.props;if(typeof d?.open<"u"){if(typeof d.open=="boolean")return d.open?"expanded":"collapsed";if(typeof d.open=="object")return d.open.initial??Object.values(d.open)[0]?"expanded":"collapsed"}return typeof d?.defaultOpen<"u"&&d.defaultOpen?"expanded":"collapsed"};return{hasPanelDefaultOpen:y,leftMode:y||R||T?"expanded":"collapsed",panelMode:y||R?"expanded":"collapsed",sidebarMode:P(),inspectorMode:L||i?"expanded":"collapsed",bottomMode:N()}}var fn=e.forwardRef(({className:n,children:a,height:p="full",...y},u)=>{let{breakpoint:f,ready:T}=we(),L=e.useRef(!1),[i,R]=e.useReducer(Ln,a,t=>{let{hasPanelDefaultOpen:l,...x}=un(t);return L.current=l,x}),P=e.useCallback(t=>R({type:"SET_LEFT_MODE",mode:t}),[]),N=e.useCallback(t=>R({type:"SET_PANEL_MODE",mode:t}),[]),s=e.useCallback(t=>R({type:"SET_SIDEBAR_MODE",mode:t}),[]),d=e.useCallback(t=>R({type:"SET_INSPECTOR_MODE",mode:t}),[]),h=e.useCallback(t=>R({type:"SET_BOTTOM_MODE",mode:t}),[]),[M,D]=e.useState(!1),[r,_]=e.useState(!1),V=e.useRef(t=>t==="collapsed"?"thin":t==="thin"?"expanded":"collapsed"),G=e.useCallback(t=>{V.current=t},[]);e.useLayoutEffect(()=>{r&&M&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[r,M]);let[H,Y]=e.useState(void 0),J=e.useCallback(t=>Y(t),[]),U=e.useRef(64),q=e.useRef(288),Q=e.useCallback(t=>{U.current=t},[]),Z=e.useCallback(t=>{q.current=t},[]),W=e.useMemo(()=>e.Children.toArray(a).some(l=>j(l,de)||j(l,ie)),[a]),k=e.useMemo(()=>e.Children.toArray(a).some(l=>j(l,Me)),[a]),B=e.useRef({left:W,sidebar:k});if(B.current.left!==W||B.current.sidebar!==k){let t=W&&!B.current.left,l=k&&!B.current.sidebar;if(B.current={left:W,sidebar:k},t||l){let{hasPanelDefaultOpen:x,...w}=un(a,f);t&&(L.current=x,w.leftMode!==i.leftMode&&R({type:"SET_LEFT_MODE",mode:w.leftMode}),w.panelMode!==i.panelMode&&R({type:"SET_PANEL_MODE",mode:w.panelMode})),l&&w.sidebarMode!==i.sidebarMode&&R({type:"SET_SIDEBAR_MODE",mode:w.sidebarMode})}}let c=e.useRef(i.sidebarMode);c.current=i.sidebarMode;let K=e.useCallback(t=>{if(t==="sidebar"){let l=V.current(c.current);s(l);return}R({type:"TOGGLE_PANE",target:t})},[s]),X=e.useCallback(t=>{if(t==="sidebar")return s("expanded");R({type:"EXPAND_PANE",target:t})},[s]),$=e.useCallback(t=>{if(t==="sidebar")return s("collapsed");R({type:"COLLAPSE_PANE",target:t})},[s]),le=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:P,panelMode:i.panelMode,setPanelMode:N,sidebarMode:i.sidebarMode,setSidebarMode:s,inspectorMode:i.inspectorMode,setInspectorMode:d,bottomMode:i.bottomMode,setBottomMode:h,hasLeft:M,setHasLeft:D,hasSidebar:r,setHasSidebar:_,currentBreakpoint:f,currentBreakpointReady:T,leftResolvedPresentation:H,togglePane:K,expandPane:X,collapsePane:$,setSidebarToggleComputer:G,onLeftPres:J,onRailDefaults:Q,onPanelDefaults:Z}),[i.leftMode,P,i.panelMode,N,i.sidebarMode,s,i.inspectorMode,d,i.bottomMode,h,M,r,f,T,H,K,X,$,G,J,Q,Z]),{headerEls:me,railEls:m,panelEls:S,sidebarEls:A,contentEls:I,inspectorEls:C,bottomEls:oe}=e.useMemo(()=>{let t={headerEls:[],railEls:[],panelEls:[],sidebarEls:[],contentEls:[],inspectorEls:[],bottomEls:[]};for(let l of e.Children.toArray(a))j(l,ze)?t.headerEls.push(l):j(l,de)?t.railEls.push(l):j(l,ie)?t.panelEls.push(l):j(l,Me)?t.sidebarEls.push(l):j(l,xe)?t.contentEls.push(l):j(l,Ee)?t.inspectorEls.push(l):j(l,Se)&&t.bottomEls.push(l);return t},[a]),z=m[0]?.props?.open,v=e.useMemo(()=>{if(typeof z>"u")return;if(typeof z=="boolean")return z;if(typeof z!="object"||z===null)return!!z;let t=z;if(t[f]!==void 0)return t[f];let l=["xl","lg","md","sm","xs","initial"],x=l.indexOf(f);for(let w=x+1;w<l.length;w++){let fe=l[w];if(t[fe]!==void 0)return t[fe]}},[z,f]),F=S[0]?.props?.open,E=e.useMemo(()=>{if(typeof F>"u")return;if(typeof F=="boolean")return F;if(typeof F!="object"||F===null)return!!F;let t=F;if(t[f]!==void 0)return t[f];let l=["xl","lg","md","sm","xs","initial"],x=l.indexOf(f);for(let w=x+1;w<l.length;w++){let fe=l[w];if(t[fe]!==void 0)return t[fe]}},[F,f]),pe=e.useRef(0),ee=e.useRef(0),ae=e.useRef(0),ue=e.useRef(v),o=e.useRef(E);e.useLayoutEffect(()=>{if(v===void 0){ue.current=void 0;return}ue.current!==v&&(ue.current=v,ee.current=++pe.current)},[v]),e.useLayoutEffect(()=>{if(E===void 0){o.current=void 0;return}o.current!==E&&(o.current=E,ae.current=++pe.current)},[E]),e.useLayoutEffect(()=>{typeof v>"u"||P(v?"expanded":"collapsed")},[v,P]);let b=m[0]?.props?.onOpenChange,g=S[0]?.props?.onOpenChange,O=e.useRef(null);e.useLayoutEffect(()=>{if(v!==!1||E!==!0){O.current=null;return}let t=ae.current>ee.current,l=t?"open-rail":"close-panel",x=O.current;x&&x.railSeq===ee.current&&x.panelSeq===ae.current&&x.action===l||(O.current={railSeq:ee.current,panelSeq:ae.current,action:l},t?b?.(!0,{reason:"panel"}):g?.(!1,{reason:"left"}))},[v,E,b,g]);let ne=v,Ne=e.useMemo(()=>p==="full"?{height:"100vh"}:p==="auto"?{height:"auto"}:typeof p=="string"?{height:p}:typeof p=="number"?{height:`${p}px`}:{},[p]),[re,te]=e.useState(null),Pe=e.useCallback(t=>te(t),[]),ye=e.useCallback(()=>te(null),[]),Mn=e.useMemo(()=>({currentBreakpoint:f,currentBreakpointReady:T,leftResolvedPresentation:H}),[f,T,H]),mn=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:P}),[i.leftMode,P]),Pn=e.useMemo(()=>({panelMode:i.panelMode,setPanelMode:N}),[i.panelMode,N]),yn=e.useMemo(()=>({sidebarMode:i.sidebarMode,setSidebarMode:s}),[i.sidebarMode,s]),bn=e.useMemo(()=>({inspectorMode:i.inspectorMode,setInspectorMode:d}),[i.inspectorMode,d]),hn=e.useMemo(()=>({bottomMode:i.bottomMode,setBottomMode:h}),[i.bottomMode,h]),Sn=e.useMemo(()=>({hasLeft:M,setHasLeft:D,hasSidebar:r,setHasSidebar:_}),[M,D,r,_]),[ve,De]=e.useState(new Set),_e=e.useCallback(t=>{De(l=>{if(l.has(t))return l;let x=new Set(l);return x.add(t),x})},[]),Be=e.useCallback(t=>{De(l=>{if(!l.has(t))return l;let x=new Set(l);return x.delete(t),x})},[]),ge=ve.size>0,En=e.useMemo(()=>({insetPanes:ve,registerInset:_e,unregisterInset:Be,hasAnyInset:ge}),[ve,_e,Be,ge]),Cn=e.useMemo(()=>({peekTarget:re,setPeekTarget:te,peekPane:Pe,clearPeek:ye}),[re,te,Pe,ye]),xn=e.useMemo(()=>({togglePane:K,expandPane:X,collapsePane:$,setSidebarToggleComputer:G}),[K,X,$,G]),vn=e.useMemo(()=>({...le,leftControlledOpen:ne,peekTarget:re,setPeekTarget:te,peekPane:Pe,clearPeek:ye}),[le,ne,re,te,Pe,ye]),gn=e.useMemo(()=>{if(!W||k)return null;let t=m[0],l=S[0],x=!!t?.props?.inset||!!l?.props?.inset,w=t?{onOpenChange:t.props?.onOpenChange,open:t.props?.open,defaultOpen:t.props?.defaultOpen,presentation:t.props?.presentation,collapsible:t.props?.collapsible,onExpand:t.props?.onExpand,onCollapse:t.props?.onCollapse,inset:x}:{defaultOpen:L.current?!0:void 0,inset:x};return e.createElement(Ce,{...w},m,S)},[W,k,m,S]);return e.createElement("div",{...y,ref:u,className:se("rt-ShellRoot",n),style:{...Ne,...y.style}},e.createElement(je,{value:vn},e.createElement(Qe.Provider,{value:Mn},e.createElement(Ue.Provider,{value:mn},e.createElement($e.Provider,{value:Pn},e.createElement(Ge.Provider,{value:yn},e.createElement(Ke.Provider,{value:bn},e.createElement(Ye.Provider,{value:hn},e.createElement(on.Provider,{value:Sn},e.createElement(Ze.Provider,{value:Cn},e.createElement(nn.Provider,{value:xn},e.createElement(an.Provider,{value:En},me,e.createElement("div",{className:"rt-ShellBody","data-peek-target":re??void 0,"data-has-inset":ge||void 0,style:re==="rail"||re==="panel"?{"--peek-rail-width":`${U.current}px`}:void 0},gn??A,I,C),oe))))))))))))});fn.displayName="Shell.Root";var ze=e.forwardRef(({className:n,height:a=64,style:p,...y},u)=>e.createElement("header",{...y,ref:u,className:se("rt-ShellHeader",n),style:{...p,"--shell-header-height":`${a}px`}}));ze.displayName="Shell.Header";var kn=["open","defaultOpen","onOpenChange","mode","defaultMode","onModeChange"],Ce=e.forwardRef((n,a)=>{let{className:p,presentation:y={initial:"fixed",sm:"fixed"},collapsible:u=!0,onExpand:f,onCollapse:T,children:L,style:i,inset:R,...P}=n,{registerInset:N,unregisterInset:s}=Te();e.useEffect(()=>{if(R)return N("left"),()=>s("left")},[R,N,s]);let d=P.open,h=P.defaultOpen,M=P.onOpenChange,D=sn(P,kn),r=Re(),{setHasLeft:_}=r,V=Le(y),G=V==="overlay",H=V==="stacked",Y=e.useRef(null);e.useEffect(()=>{r.onLeftPres?.(V)},[r,V]);let J=e.useCallback(m=>{Y.current=m,typeof a=="function"?a(m):a&&(a.current=m)},[a]);e.useEffect(()=>(_(!0),()=>_(!1)),[_]);let U=e.useRef(null),q=e.useRef(void 0),Q=e.useMemo(()=>{if(!(typeof d>"u"))return d?"expanded":"collapsed"},[d]),Z=e.useMemo(()=>he(h),[h]),W=e.useRef(M),k=e.useRef(d);e.useLayoutEffect(()=>{W.current=M,k.current=d});let{resolvedControlled:B}=ke({controlledValue:Q,defaultValue:Z,currentValue:r.leftMode,setValue:r.setLeftMode,breakpointReady:r.currentBreakpointReady,onInit:m=>W.current?.(m==="expanded",{reason:"init"})}),c=e.useRef(null);e.useEffect(()=>{let m=U.current,S=c.current,I=q.current!==B;if(m!==null&&m!==r.leftMode){let C=typeof k.current<"u",oe=B===void 0?void 0:B==="expanded",z=r.leftMode==="expanded";if(!C||!I&&z!==oe){let v="toggle";S!==null&&S!==r.panelMode&&m==="collapsed"&&r.leftMode==="expanded"&&r.panelMode==="expanded"&&(v="panel"),W.current?.(z,{reason:v})}}U.current=r.leftMode,c.current=r.panelMode,q.current=B},[r.leftMode,r.panelMode,B]);let K=e.useRef(f),X=e.useRef(T);e.useLayoutEffect(()=>{K.current=f,X.current=T});let $=e.useRef(null),le=e.useRef(!1);e.useEffect(()=>{let m=r.leftMode;if(!r.currentBreakpointReady){$.current=m;return}if(!le.current){le.current=!0,$.current=m;return}let S=$.current;S!==null&&S!==m&&(m==="expanded"?K.current?.():m==="collapsed"&&X.current?.(),$.current=m)},[r.leftMode,r.currentBreakpointReady]);let me=r.leftMode==="expanded";if(G){let m=r.leftMode==="expanded",S=e.Children.toArray(L),A=S.find(E=>j(E,de)),I=S.find(E=>j(E,ie)),C=typeof A?.props?.expandedSize=="number"?A.props.expandedSize:64,oe=typeof I?.props?.expandedSize=="number"?I.props.expandedSize:288,z=!!A,v=!!I,F=(z?C:0)+(r.panelMode==="expanded"&&v?oe:0);return e.createElement(Ve,{open:m,onOpenChange:E=>r.setLeftMode(E?"expanded":"collapsed")},e.createElement(He,{side:"start",style:{padding:0},"aria-label":"Navigation","aria-describedby":void 0,width:{initial:`${F}px`}},e.createElement(Ae,null,e.createElement(Fe,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},L)))}if(H){let m=r.leftMode==="expanded",S=e.Children.toArray(L),A=S.find(E=>j(E,de)),I=S.find(E=>j(E,ie)),C=typeof A?.props?.expandedSize=="number"?A.props.expandedSize:64,oe=typeof I?.props?.expandedSize=="number"?I.props.expandedSize:288,z=!!A,F=!!I&&(r.panelMode==="expanded"||r.peekTarget==="panel");return e.createElement("div",{...D,ref:J,className:se("rt-ShellLeft",p),"data-mode":r.leftMode,"data-peek":r.peekTarget==="left"||r.peekTarget==="rail"||r.peekTarget==="panel"||void 0,"data-presentation":V,"data-inset":R||void 0,style:{...i},"data-open":m||void 0},L)}return e.createElement("div",{...D,ref:J,className:se("rt-ShellLeft",p),"data-mode":r.leftMode,"data-peek":r.peekTarget==="left"||r.peekTarget==="rail"||r.peekTarget==="panel"||void 0,"data-presentation":V,"data-inset":R||void 0,style:{...i}},L)});Ce.displayName="Shell.Left";ce(Ce,"Shell.Left");var de=e.forwardRef((n,a)=>{let{className:p,presentation:y,expandedSize:u=64,collapsible:f,onExpand:T,onCollapse:L,children:i,style:R,open:P,defaultOpen:N,onOpenChange:s,inset:d,...h}=n,M=Re(),D=e.useRef(null);e.useEffect(()=>{let _=typeof P<"u";if(D.current===null){D.current=_;return}D.current!==_&&(console.warn("Shell.Rail: Switching between controlled and uncontrolled `open` is not supported."),D.current=_)},[P]),e.useEffect(()=>{M.onRailDefaults?.(u)},[M,u]);let r=M.leftMode==="expanded";return e.createElement("div",{...h,ref:a,className:se("rt-ShellRail",p),"data-mode":M.leftMode,"data-peek":M.currentBreakpointReady&&M.leftResolvedPresentation!=="overlay"&&M.peekTarget==="rail"||void 0,style:{...R,"--rail-size":`${u}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":M.currentBreakpointReady&&(r||M.leftResolvedPresentation!=="overlay"&&M.peekTarget==="rail")||void 0},i))});de.displayName="Shell.Rail";ce(de,"Shell.Rail");var zn=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],ie=ce(e.forwardRef((n,a)=>{let{className:p,defaultOpen:y,open:u,onOpenChange:f,size:T,defaultSize:L,expandedSize:i=288,minSize:R,maxSize:P,resizable:N,collapsible:s=!0,onExpand:d,onCollapse:h,onResize:M,onResizeStart:D,onResizeEnd:r,snapPoints:_,snapTolerance:V,collapseThreshold:G,paneId:H,persistence:Y,children:J,style:U,onSizeChange:q,sizeUpdate:Q,sizeUpdateMs:Z=50}=n,W=dn(n,zn),k=e.useRef(null);e.useLayoutEffect(()=>()=>{k.current&&(clearTimeout(k.current),k.current=null)},[q,Q,Z]);let B=e.useMemo(()=>{if(!q)return()=>{};if(Q==="debounce")return(b,g)=>{k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{q?.(b,g),k.current=null},Z)};if(Q==="throttle"){let o=0;return(b,g)=>{let O=Date.now();O-o>=Z&&(o=O,q?.(b,g))}}return(o,b)=>q?.(o,b)},[q,Q,Z]),c=Re(),K=e.useRef(null),X=e.useRef(null),$=e.useRef(void 0),le=e.useMemo(()=>he(u),[u]),me=e.useMemo(()=>he(y),[y]),m=typeof u=="object"&&u!==null,S=e.useRef(f);e.useLayoutEffect(()=>{S.current=f});let{resolvedControlled:A}=ke({controlledValue:le,defaultValue:me,currentValue:c.panelMode,setValue:o=>{o==="expanded"&&c.leftMode!=="expanded"&&c.leftControlledOpen!==!1&&c.setLeftMode("expanded"),c.setPanelMode(o)},breakpointReady:c.currentBreakpointReady,controlledIsResponsive:m,onResponsiveChange:o=>S.current?.(o==="expanded",{reason:"responsive"}),onInit:o=>{typeof u>"u"&&S.current?.(o==="expanded",{reason:"init"})}}),I=e.useRef(null);e.useEffect(()=>{let o=typeof u<"u";if(I.current===null){I.current=o;return}I.current!==o&&(console.warn("Shell.Panel: Switching between controlled and uncontrolled `open` is not supported."),I.current=o)},[u]),e.useEffect(()=>{c.onPanelDefaults?.(i)},[c,i]);let C=e.useRef(null),oe=e.useCallback(o=>{C.current=o,typeof a=="function"?a(o):a&&(a.current=o)},[a]),z=e.Children.toArray(J),v=z.filter(o=>e.isValidElement(o)&&o.type===be),F=z.filter(o=>!(e.isValidElement(o)&&o.type===be)),E=c.leftResolvedPresentation==="overlay",pe=e.useCallback(o=>cn(o,"horizontal"),[]),ee=e.useMemo(()=>{if(!H||Y)return Y;let o=`kookie-ui:shell:panel:${H}`;return{load:()=>{if(!(typeof window>"u"))try{let g=window.localStorage.getItem(o);return g?Number(g):void 0}catch{return}},save:g=>{if(!(typeof window>"u"))try{window.localStorage.setItem(o,String(g))}catch{}}}},[H,Y]);e.useEffect(()=>{let o=!0;return(async()=>{if(!N||!ee?.load||E)return;let b=await ee.load();o&&typeof b=="number"&&C.current&&(C.current.style.setProperty("--panel-size",`${b}px`),M?.(b))})(),()=>{o=!1}},[N,ee,M,E]),e.useEffect(()=>{C.current&&E&&C.current.style.setProperty("--panel-size",`${i}px`)},[E,i]),e.useEffect(()=>{if(C.current&&typeof T>"u"&&typeof L<"u"){let o=pe(L);if(typeof o=="number"&&Number.isFinite(o)){let O=Math.min((typeof P=="number"?P:void 0)??o,Math.max((typeof R=="number"?R:void 0)??o,o));C.current.style.setProperty("--panel-size",`${O}px`),B(O,{reason:"init"})}}},[]),e.useEffect(()=>{if(!C.current||typeof T>"u")return;let o=pe(T);if(typeof o=="number"&&Number.isFinite(o)){let O=Math.min((typeof P=="number"?P:void 0)??o,Math.max((typeof R=="number"?R:void 0)??o,o));C.current.style.setProperty("--panel-size",`${O}px`),B(O,{reason:"controlled"})}},[T,R,P,pe,B]),e.useEffect(()=>{if(C.current&&c.leftResolvedPresentation!=="overlay"&&c.leftMode==="expanded"&&c.panelMode==="expanded"){let o=C.current.parentElement||null;try{o?.style.removeProperty("width")}catch{}}},[c.leftResolvedPresentation,c.leftMode,c.panelMode]);let ae=c.leftMode==="expanded"&&c.panelMode==="expanded";e.useEffect(()=>{let o=K.current,b=X.current,O=$.current!==A;if(o!==null&&o!==c.panelMode){let ne=c.panelMode==="expanded";if(!(typeof u<"u")||!O&&ne!==(A===void 0?void 0:A==="expanded")){let te="toggle";b!==c.leftMode&&c.leftMode==="collapsed"&&!ne&&(te="left"),S.current?.(ne,{reason:te})}}K.current=c.panelMode,X.current=c.leftMode,$.current=A},[c.panelMode,c.leftMode,u,A]);let ue=N&&c.leftResolvedPresentation!=="overlay"&&ae?e.createElement(rn.Provider,{value:{containerRef:C,cssVarName:"--panel-size",minSize:typeof R=="number"?R:100,maxSize:typeof P=="number"?P:800,defaultSize:i,orientation:"vertical",edge:"end",computeNext:(o,b,g)=>{let O=getComputedStyle(C.current).direction==="rtl",ne=o-b;return g+(O?-ne:ne)},onResize:M,onResizeStart:o=>{let g=C.current?.parentElement;try{g?.style.removeProperty("width")}catch{}D?.(o)},onResizeEnd:o=>{r?.(o),B(o,{reason:"resize"}),ee?.save?.(o)},target:"panel",collapsible:!!s,snapPoints:_,snapTolerance:V??8,collapseThreshold:G,requestCollapse:()=>c.setPanelMode("collapsed"),requestToggle:()=>c.togglePane("panel")}},v.length>0?v.map((o,b)=>e.cloneElement(o,{key:o.key??b})):e.createElement(ln,null)):null;return e.createElement("div",{...W,ref:oe,className:se("rt-ShellPanel",p),"data-mode":c.panelMode,"data-visible":c.currentBreakpointReady&&(ae||c.leftResolvedPresentation!=="overlay"&&c.peekTarget==="panel")||void 0,"data-peek":c.currentBreakpointReady&&c.leftResolvedPresentation!=="overlay"&&c.peekTarget==="panel"||void 0,style:{...U,"--panel-size":`${i}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":ae||void 0},F),ue)}),"Shell.Panel");ie.displayName="Shell.Panel";ie.Handle=be;var xe=e.forwardRef(({className:n,inset:a,...p},y)=>{let{registerInset:u,unregisterInset:f}=Te();return e.useEffect(()=>{if(a)return u("content"),()=>f("content")},[a,u,f]),e.createElement("main",{...p,ref:y,className:se("rt-ShellContent",n),"data-inset":a||void 0})});xe.displayName="Shell.Content";ce(xe,"Shell.Content");var Rn=e.forwardRef(({target:n,action:a="toggle",peekOnHover:p,onClick:y,onMouseEnter:u,onMouseLeave:f,children:T,...L},i)=>{let{leftMode:R}=We(),{panelMode:P}=qe(),{sidebarMode:N}=Oe(),{inspectorMode:s}=Xe(),{bottomMode:d}=Je(),{peekTarget:h,clearPeek:M,peekPane:D}=en(),{togglePane:r,expandPane:_,collapsePane:V}=tn(),G=e.useCallback(U=>{switch(y?.(U),h===n&&M(),a){case"toggle":r(n);break;case"expand":_(n);break;case"collapse":V(n);break}},[h,M,r,_,V,n,a,y]),H=(()=>{switch(n){case"left":case"rail":return R==="collapsed";case"panel":return R==="collapsed"||P==="collapsed";case"sidebar":return N==="collapsed";case"inspector":return s==="collapsed";case"bottom":return d==="collapsed"}})(),Y=e.useCallback(U=>{u?.(U),!(!p||!H)&&D(n)},[u,p,H,D,n]),J=e.useCallback(U=>{f?.(U),p&&h===n&&M()},[f,p,h,M,n]);return e.createElement("button",{...L,ref:i,onClick:G,onMouseEnter:Y,onMouseLeave:J,"data-shell-trigger":n,"data-shell-action":a,"aria-expanded":!H},T)});Rn.displayName="Shell.Trigger";export{fn as a,ze as b,Ce as c,de as d,ie as e,xe as f,Rn as g,Nn as h};
2
- //# sourceMappingURL=chunk-5BYHEYO6.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/shell.tsx"],
4
- "sourcesContent": ["/**\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 { _BREAKPOINTS } from './shell.types.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\n/**\n * Read the pane modes a set of Shell children asks for.\n *\n * Runs once at mount, for the reducer's initial state, and again whenever a\n * pane family enters after mount. Pure - it only reads the children's props.\n */\n/**\n * Pick the entry of a responsive map that applies at `breakpoint`, falling\n * back down the scale the way useResponsiveValue does. With no breakpoint it\n * takes `initial`, which is what the mount path has always done.\n */\nfunction pickResponsive<T>(map: Partial<Record<Breakpoint, T>>, breakpoint?: Breakpoint): T | undefined {\n if (breakpoint === undefined) return (map.initial ?? Object.values(map)[0]) as T | undefined;\n if (map[breakpoint] !== undefined) return map[breakpoint];\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 for (let i = order.indexOf(breakpoint) + 1; i < order.length; i++) {\n if (map[order[i]] !== undefined) return map[order[i]];\n }\n return undefined;\n}\n\nfunction readPaneStateFromChildren(initialChildren: React.ReactNode, breakpoint?: Breakpoint): PaneState & { hasPanelDefaultOpen: boolean } {\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\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 (pickResponsive<SidebarMode>(sidebarProps.state, breakpoint) ?? '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 (pickResponsive<SidebarMode>(sidebarProps.defaultState, breakpoint) ?? '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 hasPanelDefaultOpen,\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\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 { hasPanelDefaultOpen, ...modes } = readPaneStateFromChildren(initialChildren);\n // Store for use in passthrough props\n hasPanelDefaultOpenRef.current = hasPanelDefaultOpen;\n return modes;\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 // Re-read the defaults when a pane family enters after mount.\n //\n // The initial modes are computed once, from the children present at mount.\n // That is right until an app swaps families at runtime - a Sidebar giving\n // way to Rail+Panel on one route, and back on the next. The entering pane\n // then renders against the mode left behind by the family that just went:\n // a Rail mounting 'collapsed', at width 0, with its content faded out, put\n // right one layout effect later. The reader sees a flicker in place where\n // the pane should have been there already.\n //\n // Adjusting state during render keeps this out of the paint: React re-runs\n // Root before the children render, so the entering pane never sees the\n // mode of the family it replaced. The ref guard is what makes the update\n // terminate - it fires only on the edge, never on a steady render.\n const enteredFamilyRef = React.useRef({ left: hasLeftChildren, sidebar: hasSidebarChildren });\n if (enteredFamilyRef.current.left !== hasLeftChildren || enteredFamilyRef.current.sidebar !== hasSidebarChildren) {\n const leftEntered = hasLeftChildren && !enteredFamilyRef.current.left;\n const sidebarEntered = hasSidebarChildren && !enteredFamilyRef.current.sidebar;\n enteredFamilyRef.current = { left: hasLeftChildren, sidebar: hasSidebarChildren };\n\n if (leftEntered || sidebarEntered) {\n // The live breakpoint, not the mount default: a responsive\n // defaultState like { initial: 'collapsed', md: 'expanded' } must be\n // read for the width the reader is on. Taking `initial` would send a\n // desktop sidebar in collapsed and let its own start-up effect open it\n // again after the paint, which is the blink this whole block exists to\n // remove.\n const { hasPanelDefaultOpen, ...modes } = readPaneStateFromChildren(children, currentBreakpoint as Breakpoint);\n if (leftEntered) {\n hasPanelDefaultOpenRef.current = hasPanelDefaultOpen;\n // Only when the mode actually differs, so a family that enters\n // already in the right mode dispatches nothing.\n if (modes.leftMode !== paneState.leftMode) dispatchPane({ type: 'SET_LEFT_MODE', mode: modes.leftMode });\n if (modes.panelMode !== paneState.panelMode) dispatchPane({ type: 'SET_PANEL_MODE', mode: modes.panelMode });\n }\n if (sidebarEntered && modes.sidebarMode !== paneState.sidebarMode) {\n dispatchPane({ type: 'SET_SIDEBAR_MODE', mode: modes.sidebarMode });\n }\n }\n }\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"],
5
- "mappings": "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",
6
- "names": ["shell_exports", "__export", "Bottom", "Content", "Header", "Inspector", "Left", "Panel", "Rail", "Root", "Sidebar", "Trigger", "useResponsivePresentation", "useShell", "useSidebarMode", "React", "classNames", "SHELL_SLOT", "assignShellSlot", "component", "slot", "isShellComponentType", "el", "comp", "Sidebar", "Inspector", "Bottom", "paneReducer", "state", "action", "next", "pickResponsive", "map", "breakpoint", "order", "_BREAKPOINTS", "i", "readPaneStateFromChildren", "initialChildren", "childArray", "hasPanelDefaultOpen", "railEl", "railDefaultOpen", "hasRailDefaultOpen", "hasInspectorDefaultOpen", "hasInspectorOpenControlled", "hasPanelOpenControlled", "openProp", "getSidebarInitialState", "sidebarEl", "sidebarProps", "getBottomInitialState", "bottomEl", "bottomProps", "Root", "className", "children", "height", "props", "ref", "currentBreakpoint", "currentBreakpointReady", "useBreakpoint", "hasPanelDefaultOpenRef", "paneState", "dispatchPane", "modes", "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", "enteredFamilyRef", "leftEntered", "sidebarEntered", "sidebarModeRef", "togglePane", "target", "expandPane", "collapsePane", "baseContextValue", "headerEls", "railEls", "panelEls", "sidebarEls", "contentEls", "inspectorEls", "bottomEls", "result", "Header", "Content", "firstRailOpen", "resolvedFirstRailOpen", "responsive", "fallbackOrder", "startIdx", "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"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as R}from"./chunk-SNHEJU2S.js";import{a as p}from"./chunk-KFA53SVQ.js";import*as t from"react";function C(e){let{currentBreakpoint:o}=R();return t.useMemo(()=>{if(typeof e=="string")return e;if(e[o])return e[o];let i=[...Object.keys(p)].reverse().concat("initial"),a=i.indexOf(o);for(let f=a+1;f<i.length;f++){let u=i[f];if(e[u])return e[u]}return"fixed"},[e,o])}function m(e){let{currentBreakpoint:o}=R();return t.useMemo(()=>{if(e==null)return;if(typeof e!="object")return e;let n=e;if(n[o]!==void 0)return n[o];let a=[...Object.keys(p)].reverse().concat("initial"),f=a.indexOf(o);for(let u=f+1;u<a.length;u++){let c=a[u];if(n[c]!==void 0)return n[c]}},[e,o])}function E({controlledValue:e,defaultValue:o,currentValue:n,setValue:i,breakpointReady:a,onInit:f,onResponsiveChange:u,controlledIsResponsive:c=!1}){let s=m(e),l=m(o),T=t.useRef(void 0),r=t.useRef(null),y=t.useRef(s),k=t.useRef(n),v=t.useRef(i);t.useLayoutEffect(()=>{y.current=s,k.current=n,v.current=i}),t.useEffect(()=>{if(s===void 0)return;let S=T.current!==s;if(T.current=s,n===s){r.current&&(clearTimeout(r.current),r.current=null),c&&u?.(s);return}if(S){r.current&&(clearTimeout(r.current),r.current=null),i(s),c&&u?.(s);return}r.current||(r.current=setTimeout(()=>{r.current=null;let d=y.current,b=k.current;d!==void 0&&b!==d&&v.current(d)},0))},[s,n,i,u,c]),t.useEffect(()=>()=>{r.current&&(clearTimeout(r.current),r.current=null)},[]);let B=t.useRef(!1);return t.useEffect(()=>{B.current||a&&(typeof e<"u"||l!==void 0&&(B.current=!0,n!==l&&i(l),f?.(l)))},[a,e,l,n,i,f]),{resolvedControlled:s,resolvedDefault:l}}export{C as a,m as b,E as c};
2
- //# sourceMappingURL=chunk-5LXFJMFB.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/shell.hooks.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": "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",
6
- "names": ["React", "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"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as R}from"./chunk-3DC63EZP.js";import{a as f}from"./chunk-H7ST535H.js";import{a as n}from"./chunk-GSTOGDAJ.js";import{a as u}from"./chunk-6FLLFCBU.js";import{a as N}from"./chunk-OS3FCYZY.js";var _={};N(_,{Item:()=>x,Root:()=>y});import*as o from"react";import G from"classnames";import{Context as v}from"radix-ui/internal";import{RadioGroup as d}from"radix-ui";var P="RadioGroup",[S]=v.createContextScope(P,[d.createRadioGroupScope]),l=d.createRadioGroupScope(),[E,I]=S(P),y=o.forwardRef(({color:a=R.color.default,highContrast:e=R.highContrast.default,size:t=R.size.default,variant:r=R.variant.default,...i},s)=>{let{__scopeRadioGroup:p,className:m,...C}=u(i,n),h=l(p);return o.createElement(E,{scope:p,color:a,highContrast:e,size:t,variant:r},o.createElement(d.Root,{...h,...C,ref:s,className:G("rt-RadioGroupRoot",m)}))});y.displayName="RadioGroup.Root";var x=o.forwardRef((a,e)=>{let{__scopeRadioGroup:t,children:r,className:i,style:s,...p}=a,{size:m}=I("RadioGroupItem",t);return r?o.createElement(f,{as:"label",size:m,className:G("rt-RadioGroupItem",i),style:s},o.createElement(c,{__scopeRadioGroup:t,...p,ref:e}),r&&o.createElement("span",{className:"rt-RadioGroupItemInner"},r)):o.createElement(c,{__scopeRadioGroup:t,...p,ref:e,className:i,style:s})});x.displayName="RadioGroup.Item";var c=o.forwardRef(({__scopeRadioGroup:a,...e},t)=>{let r=I("RadioGroupItemRadio",a),i=l(a),{color:s,className:p}=u({...e,...r},R,n);return o.createElement(d.Item,{...i,"data-accent-color":s,...e,asChild:!1,ref:t,className:G("rt-reset","rt-BaseRadioRoot",p)})});c.displayName="RadioGroup.ItemRadio";export{y as a,x as b,_ as c};
2
- //# sourceMappingURL=chunk-5MNBQROW.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/radio-group.tsx"],
4
- "sourcesContent": ["'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"],
5
- "mappings": "wMAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,SAAAC,IAEA,UAAYC,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,WAAAC,MAAe,oBACxB,OAAS,cAAcC,MAA2B,WAWlD,IAAMC,EAAmB,aAGnB,CAACC,CAAuB,EAAIC,EAAQ,mBAAmBF,EAAkB,CAC7EG,EAAoB,qBACtB,CAAC,EACKC,EAAqBD,EAAoB,sBAAsB,EAK/D,CAACE,EAAoBC,CAAoB,EAC7CL,EAAgDD,CAAgB,EAU5DO,EAAuB,aAC3B,CACE,CACE,MAAAC,EAAQC,EAAuB,MAAM,QACrC,aAAAC,EAAeD,EAAuB,aAAa,QACnD,KAAAE,EAAOF,EAAuB,KAAK,QACnC,QAAAG,EAAUH,EAAuB,QAAQ,QACzC,GAAGI,CACL,EACAC,IACG,CACH,GAAM,CAAE,kBAAAC,EAAmB,UAAAC,EAAW,GAAGC,CAAU,EAAIC,EAAaL,EAAOM,CAAc,EACnFC,EAAkBhB,EAAmBW,CAAiB,EAC5D,OACE,gBAACV,EAAA,CACC,MAAOU,EACP,MAAOP,EACP,aAAcE,EACd,KAAMC,EACN,QAASC,GAET,gBAACT,EAAoB,KAApB,CACE,GAAGiB,EACH,GAAGH,EACJ,IAAKH,EACL,UAAWO,EAAW,oBAAqBL,CAAS,EACtD,CACF,CAEJ,CACF,EACAT,EAAe,YAAc,kBAM7B,IAAMe,EAAuB,aAC3B,CAACC,EAA0CT,IAAiB,CAC1D,GAAM,CAAE,kBAAAC,EAAmB,SAAAS,EAAU,UAAAR,EAAW,MAAAS,EAAO,GAAGZ,CAAM,EAAIU,EAC9D,CAAE,KAAAZ,CAAK,EAAIL,EAAqB,iBAAkBS,CAAiB,EAIzE,OAAIS,EAEA,gBAACE,EAAA,CACC,GAAG,QACH,KAAMf,EACN,UAAWU,EAAW,oBAAqBL,CAAS,EACpD,MAAOS,GAEP,gBAACE,EAAA,CACC,kBAAmBZ,EAClB,GAAGF,EACJ,IAAKC,EACP,EACCU,GAAY,gBAAC,QAAK,UAAU,0BAA0BA,CAAS,CAClE,EAKF,gBAACG,EAAA,CACC,kBAAmBZ,EAClB,GAAGF,EACJ,IAAKC,EACL,UAAWE,EACX,MAAOS,EACT,CAEJ,CACF,EACAH,EAAe,YAAc,kBAK7B,IAAMK,EAA4B,aAGhC,CAAC,CAAE,kBAAAZ,EAAmB,GAAGF,CAAM,EAAGC,IAAiB,CACnD,IAAMc,EAAUtB,EAAqB,sBAAuBS,CAAiB,EACvEK,EAAkBhB,EAAmBW,CAAiB,EACtD,CAAE,MAAAP,EAAO,UAAAQ,CAAU,EAAIE,EAC3B,CAAE,GAAGL,EAAO,GAAGe,CAAQ,EACvBnB,EACAU,CACF,EACA,OACE,gBAAChB,EAAoB,KAApB,CACE,GAAGiB,EACJ,oBAAmBZ,EAClB,GAAGK,EACJ,QAAS,GACT,IAAKC,EACL,UAAWO,EAAW,WAAY,mBAAoBL,CAAS,EACjE,CAEJ,CAAC,EACDW,EAAoB,YAAc",
6
- "names": ["radio_group_exports", "__export", "RadioGroupItem", "RadioGroupRoot", "React", "classNames", "Context", "RadioGroupPrimitive", "RADIO_GROUP_NAME", "createRadioGroupContext", "Context", "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"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as C}from"./chunk-MCQAJV4K.js";import{a as x}from"./chunk-GSTOGDAJ.js";import{a as P}from"./chunk-6FLLFCBU.js";import*as t from"react";import N from"classnames";import{Slider as h}from"radix-ui";var G=t.forwardRef((p,A)=>{let{className:V,color:k,radius:M,tabIndex:g,...i}=P(p,C,x),{ticks:o,showTickLabels:w,snapToTicks:f,unit:l}=p,u=i.min??0,s=i.max??100,c=i.value??i.defaultValue??[u],y=Array.isArray(c)&&c.length>1,D=i.step,n=t.useMemo(()=>o?[...o].sort((e,r)=>e.value-r.value):[],[o]),S=t.useCallback(e=>{if(!f||!n.length)return e;let r=0,a=n.length-1;if(e<=n[r].value)return n[r].value;if(e>=n[a].value)return n[a].value;for(;r<=a;){let b=Math.floor((r+a)/2);if(n[b].value===e)return e;n[b].value<e?r=b+1:a=b-1}let E=Math.abs(e-n[a].value),j=Math.abs(e-n[r].value);return E<=j?n[a].value:n[r].value},[f,n]),v=t.useCallback(e=>{let r=a=>l?`${a} ${l}`:a.toString();return e.length===1?`${r(e[0])} out of ${r(s)}`:e.length===2?`${r(e[0])} to ${r(e[1])} out of ${r(s)}`:`${e.map(r).join(", ")} out of ${r(s)}`},[l,s]),R=t.useMemo(()=>o?o.map((e,r)=>({...e,percentage:(e.value-u)/(s-u)*100,index:r})):null,[o,u,s]),m=t.useRef(null),d=t.useRef(null),{onValueChange:$}=i,T=t.useCallback(e=>{let r=f&&o?e.map(a=>S(a)):e;if(m.current){let a=v(r);m.current.textContent=a,d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{m.current&&(m.current.textContent="")},1e3)}$?.(r)},[f,o,S,v,$]);return t.useEffect(()=>()=>{d.current&&clearTimeout(d.current)},[]),t.createElement("div",{className:"rt-SliderContainer"},t.createElement("div",{ref:m,"aria-live":"polite","aria-atomic":"true",className:"sr-only",style:{position:"absolute",left:"-10000px",width:"1px",height:"1px",overflow:"hidden"}}),t.createElement(h.Root,{"data-accent-color":k,"data-radius":M,ref:A,...i,step:D,onValueChange:T,asChild:!1,className:N("rt-SliderRoot",V),"aria-valuemin":u,"aria-valuemax":s,"aria-valuenow":Array.isArray(c)?c[0]:c,"aria-valuetext":v(c),"aria-label":p["aria-label"]||`${y?"Range":"Value"} slider`},t.createElement(h.Track,{className:"rt-SliderTrack"},t.createElement(h.Range,{className:N("rt-SliderRange",{"rt-high-contrast":p.highContrast}),"data-inverted":i.inverted?"":void 0})),(i.value??i.defaultValue??[]).map((e,r)=>t.createElement(h.Thumb,{key:r,className:"rt-SliderThumb",...g!==void 0?{tabIndex:g}:void 0,"aria-label":y?`${r===0?"Minimum":r===1?"Maximum":`Thumb ${r+1}`} value: ${l?`${e} ${l}`:e}`:`Slider value: ${l?`${e} ${l}`:e}`,"aria-valuetext":l?`${e} ${l}`:e.toString()}))),R&&t.createElement("div",{className:"rt-SliderTicks",role:"group","aria-label":"Slider tick marks"},R.map(e=>t.createElement("button",{key:e.index,className:"rt-SliderTick",style:{left:`${e.percentage}%`,transform:"translateX(-50%)"},onClick:()=>{let r=i.value??i.defaultValue??[u],a=Array.isArray(r)?r.map(()=>e.value):[e.value];T(a)},"aria-label":`Set to ${e.label||(l?`${e.value} ${l}`:e.value)}`,"aria-describedby":e.label?void 0:`tick-${e.index}-value`,type:"button"},t.createElement("div",{className:"rt-SliderTickMark"}),e.label&&w!==!1&&t.createElement("div",{className:"rt-SliderTickLabel"},e.label),!e.label&&t.createElement("span",{id:`tick-${e.index}-value`,className:"sr-only"},l?`${e.value} ${l}`:e.value)))))});G.displayName="Slider";export{G as a};
2
- //# sourceMappingURL=chunk-666GX7O5.js.map
@@ -1,2 +0,0 @@
1
- import{z as e}from"zod";var n=e.object({as:e.string().optional().describe("HTML element type to render as"),asChild:e.boolean().optional().describe("Merge props with child element instead of rendering wrapper"),size:e.union([e.enum(["1","2","3","4"]),e.object({initial:e.enum(["1","2","3","4"]).optional(),sm:e.enum(["1","2","3","4"]).optional(),md:e.enum(["1","2","3","4"]).optional(),lg:e.enum(["1","2","3","4"]).optional(),xl:e.enum(["1","2","3","4"]).optional()})]).default("2").describe("Button size for responsive design and interface density"),variant:e.enum(["classic","solid","soft","surface","outline","ghost","override"]).default("solid").describe("Visual variant that determines the button's appearance and context"),color:e.enum(["tomato","red","ruby","crimson","pink","plum","purple","violet","iris","indigo","blue","cyan","teal","jade","green","grass","brown","orange","sky","mint","lime","yellow","amber","gold","bronze","gray"]).optional().describe("Accent color for the button"),highContrast:e.boolean().optional().default(!1).describe("High contrast mode for better accessibility"),radius:e.enum(["none","small","medium","large","full"]).optional().describe("Border radius for the button"),loading:e.boolean().optional().default(!1).describe("Loading state that shows a spinner and disables interaction"),fullWidth:e.boolean().optional().default(!1).describe("Full width mode that expands the button to fill its container"),material:e.enum(["solid","translucent"]).optional().describe("Material type for visual rendering and depth effects"),panelBackground:e.enum(["solid","translucent"]).optional().describe("Panel background type (deprecated - use material instead)"),flush:e.boolean().optional().default(!1).describe("Flush mode that removes visual padding for seamless text integration"),disabled:e.boolean().optional().default(!1).describe("Disabled state"),type:e.enum(["button","submit","reset"]).optional().describe("Type attribute for form buttons"),className:e.string().optional().describe("Additional CSS class name"),style:e.record(e.string(),e.union([e.string(),e.number()])).optional().describe("Inline styles"),onClick:e.function().optional().describe("Click handler"),onFocus:e.function().optional().describe("Focus handler"),onBlur:e.function().optional().describe("Blur handler"),onMouseEnter:e.function().optional().describe("Mouse enter handler"),onMouseLeave:e.function().optional().describe("Mouse leave handler"),onKeyDown:e.function().optional().describe("Key down handler"),onKeyUp:e.function().optional().describe("Key up handler"),onSubmit:e.function().optional().describe("Form submission handler"),tabIndex:e.number().optional().describe("Tab index for keyboard navigation"),"aria-label":e.string().optional().describe("ARIA label for accessibility"),"aria-labelledby":e.string().optional().describe("ARIA labelled by reference"),"aria-describedby":e.string().optional().describe("ARIA described by reference"),"aria-expanded":e.boolean().optional().describe("ARIA expanded state"),"aria-pressed":e.boolean().optional().describe("ARIA pressed state"),"aria-current":e.union([e.boolean(),e.enum(["page","step","location","date","time"])]).optional().describe("ARIA current state"),"aria-controls":e.string().optional().describe("ARIA controls reference"),"aria-owns":e.string().optional().describe("ARIA owns reference"),"data-*":e.record(e.string(),e.string()).optional().describe("Data attributes"),id:e.string().optional().describe("ID attribute"),title:e.string().optional().describe("Title attribute for tooltip"),role:e.string().optional().describe("Role attribute"),children:e.any().optional().describe("Children elements")}).strict();function i(o){return o}export{n as a,i as b};
2
- //# sourceMappingURL=chunk-6HEAF5IT.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/schemas/base-button.schema.ts"],
4
- "sourcesContent": ["import { z } from 'zod';\n\n/**\n * BaseButton Zod schema - Single source of truth for all button component props\n *\n * This schema defines the core button functionality used by Button, IconButton,\n * ToggleButton, and ToggleIconButton components. It ensures consistency across\n * the design system and provides machine-readable validation.\n *\n * @example\n * ```tsx\n * // Basic validation\n * const props = BaseButtonSchema.parse({ size: '2', variant: 'solid' });\n *\n * // With responsive props\n * const responsiveProps = BaseButtonSchema.parse({\n * size: { initial: '1', sm: '2', md: '3' },\n * variant: 'solid'\n * });\n * ```\n */\nexport const BaseButtonSchema = z\n .object({\n /**\n * Polymorphic rendering - render as different HTML elements\n * @default 'button'\n */\n as: z.string().optional().describe('HTML element type to render as'),\n\n /**\n * Use asChild to merge props with child element\n * @default false\n */\n asChild: z\n .boolean()\n .optional()\n .describe('Merge props with child element instead of rendering wrapper'),\n\n /**\n * Button size for responsive design and interface density\n * Supports responsive objects: { initial: '1', sm: '2', md: '3', lg: '4' }\n * @default '2'\n */\n size: z\n .union([\n z.enum(['1', '2', '3', '4']),\n z.object({\n initial: z.enum(['1', '2', '3', '4']).optional(),\n sm: z.enum(['1', '2', '3', '4']).optional(),\n md: z.enum(['1', '2', '3', '4']).optional(),\n lg: z.enum(['1', '2', '3', '4']).optional(),\n xl: z.enum(['1', '2', '3', '4']).optional(),\n }),\n ])\n .default('2')\n .describe('Button size for responsive design and interface density'),\n\n /**\n * Visual variant that determines the button's appearance and context\n * @default 'solid'\n */\n variant: z\n .enum(['classic', 'solid', 'soft', 'surface', 'outline', 'ghost', 'override'])\n .default('solid')\n .describe(\"Visual variant that determines the button's appearance and context\"),\n\n /**\n * Accent color for the button\n */\n color: z\n .enum([\n 'tomato',\n 'red',\n 'ruby',\n 'crimson',\n 'pink',\n 'plum',\n 'purple',\n 'violet',\n 'iris',\n 'indigo',\n 'blue',\n 'cyan',\n 'teal',\n 'jade',\n 'green',\n 'grass',\n 'brown',\n 'orange',\n 'sky',\n 'mint',\n 'lime',\n 'yellow',\n 'amber',\n 'gold',\n 'bronze',\n 'gray',\n ])\n .optional()\n .describe('Accent color for the button'),\n\n /**\n * High contrast mode for better accessibility\n * @default false\n */\n highContrast: z\n .boolean()\n .optional()\n .default(false)\n .describe('High contrast mode for better accessibility'),\n\n /**\n * Border radius for the button\n */\n radius: z\n .enum(['none', 'small', 'medium', 'large', 'full'])\n .optional()\n .describe('Border radius for the button'),\n\n /**\n * Loading state that shows a spinner and disables interaction\n * Automatically sets disabled=true and provides accessibility announcements\n * @default false\n */\n loading: z\n .boolean()\n .optional()\n .default(false)\n .describe('Loading state that shows a spinner and disables interaction'),\n\n /**\n * Full width mode that expands the button to fill its container\n * Useful for mobile layouts and form submissions\n * @default false\n */\n fullWidth: z\n .boolean()\n .optional()\n .default(false)\n .describe('Full width mode that expands the button to fill its container'),\n\n /**\n * Material type for visual rendering and depth effects\n * Controls how the button renders its visual elements\n */\n material: z\n .enum(['solid', 'translucent'])\n .optional()\n .describe('Material type for visual rendering and depth effects'),\n\n /**\n * Panel background type (deprecated)\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n */\n panelBackground: z\n .enum(['solid', 'translucent'])\n .optional()\n .describe('Panel background type (deprecated - use material instead)'),\n\n /**\n * Flush mode that removes visual padding for seamless text integration\n * Only effective with ghost variant\n * @default false\n */\n flush: z\n .boolean()\n .optional()\n .default(false)\n .describe('Flush mode that removes visual padding for seamless text integration'),\n\n /**\n * Disabled state\n * @default false\n */\n disabled: z.boolean().optional().default(false).describe('Disabled state'),\n\n /**\n * Type attribute for form buttons\n * @default 'button'\n */\n type: z\n .enum(['button', 'submit', 'reset'])\n .optional()\n .describe('Type attribute for form buttons'),\n\n /**\n * Additional CSS class name\n */\n className: z.string().optional().describe('Additional CSS class name'),\n\n /**\n * Inline styles\n */\n style: z\n .record(z.string(), z.union([z.string(), z.number()]))\n .optional()\n .describe('Inline styles'),\n\n /**\n * Click handler\n */\n onClick: z.function().optional().describe('Click handler'),\n\n /**\n * Focus handler\n */\n onFocus: z.function().optional().describe('Focus handler'),\n\n /**\n * Blur handler\n */\n onBlur: z.function().optional().describe('Blur handler'),\n\n /**\n * Mouse enter handler\n */\n onMouseEnter: z.function().optional().describe('Mouse enter handler'),\n\n /**\n * Mouse leave handler\n */\n onMouseLeave: z.function().optional().describe('Mouse leave handler'),\n\n /**\n * Key down handler\n */\n onKeyDown: z.function().optional().describe('Key down handler'),\n\n /**\n * Key up handler\n */\n onKeyUp: z.function().optional().describe('Key up handler'),\n\n /**\n * Form submission handler\n */\n onSubmit: z.function().optional().describe('Form submission handler'),\n\n /**\n * Tab index for keyboard navigation\n */\n tabIndex: z.number().optional().describe('Tab index for keyboard navigation'),\n\n /**\n * ARIA label for accessibility\n */\n 'aria-label': z.string().optional().describe('ARIA label for accessibility'),\n\n /**\n * ARIA labelled by reference\n */\n 'aria-labelledby': z.string().optional().describe('ARIA labelled by reference'),\n\n /**\n * ARIA described by reference\n */\n 'aria-describedby': z.string().optional().describe('ARIA described by reference'),\n\n /**\n * ARIA expanded state\n */\n 'aria-expanded': z.boolean().optional().describe('ARIA expanded state'),\n\n /**\n * ARIA pressed state\n */\n 'aria-pressed': z.boolean().optional().describe('ARIA pressed state'),\n\n /**\n * ARIA current state\n */\n 'aria-current': z\n .union([z.boolean(), z.enum(['page', 'step', 'location', 'date', 'time'])])\n .optional()\n .describe('ARIA current state'),\n\n /**\n * ARIA controls reference\n */\n 'aria-controls': z.string().optional().describe('ARIA controls reference'),\n\n /**\n * ARIA owns reference\n */\n 'aria-owns': z.string().optional().describe('ARIA owns reference'),\n\n /**\n * Data attributes\n */\n 'data-*': z.record(z.string(), z.string()).optional().describe('Data attributes'),\n\n /**\n * ID attribute\n */\n id: z.string().optional().describe('ID attribute'),\n\n /**\n * Title attribute for tooltip\n */\n title: z.string().optional().describe('Title attribute for tooltip'),\n\n /**\n * Role attribute\n */\n role: z.string().optional().describe('Role attribute'),\n\n /**\n * Children elements\n */\n children: z.any().optional().describe('Children elements'),\n })\n .strict();\n\n/**\n * Type derived from BaseButton Zod schema\n * This ensures type safety and consistency with the schema\n */\nexport type BaseButtonProps = z.infer<typeof BaseButtonSchema>;\n\n/**\n * Development-only helper to validate and normalize props\n * This function should only be used in development mode\n *\n * @param props - Props to validate and normalize\n * @returns Validated and normalized props\n *\n * @example\n * ```tsx\n * // In development, this will validate props and show helpful errors\n * const validatedProps = parseBaseButtonProps({ size: 'invalid', variant: 'solid' });\n * // Throws: \"Invalid enum value. Expected '1' | '2' | '3' | '4', received 'invalid'\"\n * ```\n */\nexport function parseBaseButtonProps(props: unknown): BaseButtonProps {\n if (process.env.NODE_ENV === 'development') {\n return BaseButtonSchema.parse(props);\n }\n return props as BaseButtonProps;\n}\n"],
5
- "mappings": "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",
6
- "names": ["z", "BaseButtonSchema", "parseBaseButtonProps", "props"]
7
- }
@@ -1,2 +0,0 @@
1
- import{a as be}from"./chunk-2LYX5S7H.js";import{a as re,c as se,d as ae}from"./chunk-LAOMR7SE.js";import{a as pe,c as fe}from"./chunk-5LXFJMFB.js";import{l as ie,n as le,p as de,r as ce,v as ue}from"./chunk-SNHEJU2S.js";import{a as Re,e as S}from"./chunk-TLWTUKKL.js";import{b as he,c as I}from"./chunk-CECQNGUL.js";import{a as me}from"./chunk-NNO7M466.js";import{a as oe}from"./chunk-AGAQC4HH.js";import*as t from"react";import Ue from"classnames";var Le=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style","inset"],ye=t.forwardRef((U,p)=>{let{className:ze,presentation:Pe="fixed",defaultOpen:L,open:a,onOpenChange:_,expandedSize:C=200,minSize:l=100,maxSize:d=400,resizable:B=!1,collapsible:Se=!0,onExpand:$,onCollapse:A,onResize:v,onResizeStart:Ce,onResizeEnd:Be,snapPoints:ve,snapTolerance:ge,collapseThreshold:xe,paneId:g,persistence:x,children:Me,style:Ee,size:j,defaultSize:F,onSizeChange:M,sizeUpdate:E,sizeUpdateMs:O=50,inset:T}=U,Oe=he(U,Le),{bottomMode:s,setBottomMode:N}=ie(),{currentBreakpointReady:f}=le(),{peekTarget:Te}=de(),{togglePane:Ne}=ce(),{registerInset:q,unregisterInset:K}=ue();t.useLayoutEffect(()=>{if(T)return q("bottom"),()=>K("bottom")},[T,q,K]);let w=pe(Pe),R=w==="overlay",we=w==="stacked",i=t.useRef(null),ke=t.useCallback(e=>{i.current=e,typeof p=="function"?p(e):p&&(p.current=e)},[p]),W=t.Children.toArray(Me),Y=W.filter(e=>t.isValidElement(e)&&e.type===S),G=W.filter(e=>!(t.isValidElement(e)&&e.type===S)),h=t.useRef(_),k=t.useRef(a);t.useLayoutEffect(()=>{h.current=_,k.current=a});let De=t.useMemo(()=>I(a),[a]),Ve=t.useMemo(()=>I(L),[L]),He=typeof a=="object"&&a!==null,{resolvedControlled:m}=fe({controlledValue:De,defaultValue:Ve,currentValue:s,setValue:N,breakpointReady:f,controlledIsResponsive:He,onResponsiveChange:e=>h.current?.(e==="expanded",{reason:"responsive"}),onInit:e=>{typeof k.current>"u"&&h.current?.(e==="expanded",{reason:"init"})}}),c=t.useRef(null);t.useEffect(()=>()=>{c.current&&(clearTimeout(c.current),c.current=null)},[M,E,O]);let b=t.useMemo(()=>{let e=M,o=E,r=O??50;if(!e)return()=>{};if(o==="debounce")return(n,u)=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{e(n,u),c.current=null},r)};if(o==="throttle"){let n=0;return(u,te)=>{let ne=Date.now();ne-n>=r&&(n=ne,e(u,te))}}return(n,u)=>e(n,u)},[M,E,O]),y=t.useRef(null);t.useEffect(()=>{let e=typeof a<"u";if(y.current===null){y.current=e;return}y.current!==e&&(console.warn("Shell.Bottom: Switching between controlled and uncontrolled `open` is not supported."),y.current=e)},[a]);let J=t.useRef(null),Q=t.useRef(void 0);t.useEffect(()=>{let e=J.current,r=Q.current!==m;if(e!==null&&e!==s){let n=s==="expanded";(!(typeof k.current<"u")||!r&&n!==(m===void 0?void 0:m==="expanded"))&&h.current?.(n,{reason:"toggle"})}J.current=s,Q.current=m},[s,m]);let X=t.useRef($),Z=t.useRef(A);t.useLayoutEffect(()=>{X.current=$,Z.current=A});let z=t.useRef(null),ee=t.useRef(!1);t.useEffect(()=>{let e=s;if(!f){z.current=e;return}if(!ee.current){ee.current=!0,z.current=e;return}let o=z.current;o!==null&&o!==e&&(e==="expanded"?X.current?.():e==="collapsed"&&Z.current?.(),z.current=e)},[s,f]);let D=s==="expanded",P=t.useMemo(()=>{if(!g||x)return x;let e=`kookie-ui:shell:bottom:${g}`;return{load:()=>{if(!(typeof window>"u"))try{let r=window.localStorage.getItem(e);return r?Number(r):void 0}catch{return}},save:r=>{if(!(typeof window>"u"))try{window.localStorage.setItem(e,String(r))}catch{}}}},[g,x]);t.useEffect(()=>{let e=!0;if(!B||!P?.load||R)return;let o=P.load(),r=n=>{!e||typeof n!="number"||!i.current||(i.current.style.setProperty("--bottom-size",`${n}px`),v?.(n))};return o instanceof Promise?o.then(r).catch(n=>{}):r(o),()=>{e=!1}},[B,P,v,R]);let Ie=B&&!R&&D?t.createElement(me.Provider,{value:{containerRef:i,cssVarName:"--bottom-size",minSize:l,maxSize:d,defaultSize:C,orientation:"horizontal",edge:"start",computeNext:(e,o,r)=>{let n=e-o;return r-n},onResize:v,onResizeStart:Ce,onResizeEnd:e=>{Be?.(e),b(e,{reason:"resize"}),P?.save?.(e)},target:"bottom",collapsible:Se,snapPoints:ve,snapTolerance:ge??8,collapseThreshold:xe,requestCollapse:()=>N("collapsed"),requestToggle:()=>Ne("bottom")}},Y.length>0?Y.map((e,o)=>t.cloneElement(e,{key:e.key??o})):t.createElement(Re,null)):null,V=t.useCallback(e=>be(e,"vertical"),[]);t.useEffect(()=>{if(i.current&&typeof j>"u"&&typeof F<"u"){let e=V(F);if(typeof e=="number"&&Number.isFinite(e)){let n=Math.min((typeof d=="number"?d:void 0)??e,Math.max((typeof l=="number"?l:void 0)??e,e));i.current.style.setProperty("--bottom-size",`${n}px`),b(n,{reason:"init"})}}},[]);let H=j;return t.useEffect(()=>{if(!i.current||typeof H>"u")return;let e=V(H);if(typeof e=="number"&&Number.isFinite(e)){let n=Math.min((typeof d=="number"?d:void 0)??e,Math.max((typeof l=="number"?l:void 0)??e,e));i.current.style.setProperty("--bottom-size",`${n}px`),b(n,{reason:"controlled"})}},[H,l,d,V,b]),R?t.createElement(re,{open:s==="expanded",onOpenChange:o=>N(o?"expanded":"collapsed")},t.createElement(se,{side:"bottom",style:{padding:0},"aria-label":"Bottom panel","aria-describedby":void 0,height:{initial:`${C}px`}},t.createElement(oe,null,t.createElement(ae,null,"Bottom panel")),G)):t.createElement("div",{...Oe,ref:ke,className:Ue("rt-ShellBottom",ze),"data-mode":s,"data-peek":Te==="bottom"||void 0,"data-presentation":f?w:void 0,"data-open":f&&we&&D||void 0,"data-inset":T||void 0,style:{...Ee,"--bottom-size":`${C}px`,"--bottom-min-size":`${l}px`,"--bottom-max-size":`${d}px`}},t.createElement("div",{className:"rt-ShellBottomContent","data-visible":D||void 0},G),Ie)});ye.displayName="Shell.Bottom";ye.Handle=S;export{ye as a};
2
- //# sourceMappingURL=chunk-7ESHXHHO.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/_internal/shell-bottom.tsx"],
4
- "sourcesContent": ["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"],
5
- "mappings": "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",
6
- "names": ["React", "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", "Content", "VisuallyHidden", "Title", "classNames"]
7
- }