@aussieljk/forkbook 0.0.0-stage → 0.0.1-2

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 (598) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +77 -2
  3. package/assets/addon-vitest/templates/vitest.config.4.template.ts +36 -0
  4. package/assets/browser/favicon-wrapper.svg +46 -0
  5. package/assets/browser/favicon.svg +1 -0
  6. package/assets/browser/nunito-sans-bold-italic.woff2 +0 -0
  7. package/assets/browser/nunito-sans-bold.woff2 +0 -0
  8. package/assets/browser/nunito-sans-italic.woff2 +0 -0
  9. package/assets/browser/nunito-sans-regular.woff2 +0 -0
  10. package/assets/builder-vite/iframe.html +99 -0
  11. package/assets/create/rendererAssets/.eslintrc.json +16 -0
  12. package/assets/create/rendererAssets/common/Configure.mdx +388 -0
  13. package/assets/create/rendererAssets/common/assets/accessibility.png +0 -0
  14. package/assets/create/rendererAssets/common/assets/accessibility.svg +1 -0
  15. package/assets/create/rendererAssets/common/assets/addon-library.png +0 -0
  16. package/assets/create/rendererAssets/common/assets/assets.png +0 -0
  17. package/assets/create/rendererAssets/common/assets/avif-test-image.avif +0 -0
  18. package/assets/create/rendererAssets/common/assets/context.png +0 -0
  19. package/assets/create/rendererAssets/common/assets/discord.svg +1 -0
  20. package/assets/create/rendererAssets/common/assets/docs.png +0 -0
  21. package/assets/create/rendererAssets/common/assets/figma-plugin.png +0 -0
  22. package/assets/create/rendererAssets/common/assets/github.svg +1 -0
  23. package/assets/create/rendererAssets/common/assets/share.png +0 -0
  24. package/assets/create/rendererAssets/common/assets/styling.png +0 -0
  25. package/assets/create/rendererAssets/common/assets/testing.png +0 -0
  26. package/assets/create/rendererAssets/common/assets/theming.png +0 -0
  27. package/assets/create/rendererAssets/common/assets/tutorials.svg +1 -0
  28. package/assets/create/rendererAssets/common/assets/youtube.svg +1 -0
  29. package/assets/create/rendererAssets/common/button.css +30 -0
  30. package/assets/create/rendererAssets/common/header.css +32 -0
  31. package/assets/create/rendererAssets/common/page.css +68 -0
  32. package/assets/create/templates/react-native/index.expo.js +20 -0
  33. package/assets/create/templates/react-native/index.js +25 -0
  34. package/assets/docs/addon-backgrounds.gif +0 -0
  35. package/assets/docs/addon-controls-args-annotated.png +0 -0
  36. package/assets/docs/addon-controls-args-background-color.png +0 -0
  37. package/assets/docs/addon-controls-args-background-string.png +0 -0
  38. package/assets/docs/addon-controls-args-docs.png +0 -0
  39. package/assets/docs/addon-controls-args-logging.png +0 -0
  40. package/assets/docs/addon-controls-args-no-annotation.png +0 -0
  41. package/assets/docs/addon-controls-args-reflow-slider.png +0 -0
  42. package/assets/docs/addon-controls-args-reflow.png +0 -0
  43. package/assets/docs/addon-controls-args-template.png +0 -0
  44. package/assets/docs/addon-controls-expanded.png +0 -0
  45. package/assets/docs/addon-controls-hero.gif +0 -0
  46. package/assets/docs/addon-controls-install.png +0 -0
  47. package/assets/docs/hero.gif +0 -0
  48. package/assets/docs/highlight.png +0 -0
  49. package/assets/docs/message-reference.png +0 -0
  50. package/assets/docs/viewport.png +0 -0
  51. package/assets/react-native/metro-env.d.ts +69 -0
  52. package/assets/server/addon.tsconfig.json +6 -0
  53. package/assets/server/base-preview-body.html +116 -0
  54. package/assets/server/base-preview-head.html +494 -0
  55. package/assets/server/openBrowser.applescript +94 -0
  56. package/assets/server/template.ejs +87 -0
  57. package/dist/.build-stamp +0 -0
  58. package/dist/_browser-chunks/Color-PCLE2J36.js +1025 -0
  59. package/dist/_browser-chunks/DocsRenderer-JXND3PVQ.js +10 -0
  60. package/dist/_browser-chunks/WithTooltip-XSQFTBMB.js +1619 -0
  61. package/dist/_browser-chunks/chunk-2JDQ35OA.js +247 -0
  62. package/dist/_browser-chunks/chunk-2JT76G3E.js +104 -0
  63. package/dist/_browser-chunks/chunk-2MEPHP35.js +17 -0
  64. package/dist/_browser-chunks/chunk-2SCZVUKW.js +24 -0
  65. package/dist/_browser-chunks/chunk-46Z7NGAS.js +41 -0
  66. package/dist/_browser-chunks/chunk-4ATQOMJB.js +30 -0
  67. package/dist/_browser-chunks/chunk-52CW7FF7.js +49 -0
  68. package/dist/_browser-chunks/chunk-5I7E4GMO.js +62 -0
  69. package/dist/_browser-chunks/chunk-5P4QA6MY.js +20 -0
  70. package/dist/_browser-chunks/chunk-5WMXI5GW.js +816 -0
  71. package/dist/_browser-chunks/chunk-66OCZ54D.js +2604 -0
  72. package/dist/_browser-chunks/chunk-6SXYJQST.js +253 -0
  73. package/dist/_browser-chunks/chunk-AYRF6EJB.js +36 -0
  74. package/dist/_browser-chunks/chunk-B4AUNNU4.js +156 -0
  75. package/dist/_browser-chunks/chunk-BCP2FFXF.js +369 -0
  76. package/dist/_browser-chunks/chunk-C3D4HEFY.js +3396 -0
  77. package/dist/_browser-chunks/chunk-CFAOWGL7.js +43 -0
  78. package/dist/_browser-chunks/chunk-CFWWCCZV.js +223 -0
  79. package/dist/_browser-chunks/chunk-CNED6RYH.js +18 -0
  80. package/dist/_browser-chunks/chunk-DRQKCCAG.js +136 -0
  81. package/dist/_browser-chunks/chunk-ECQ75MKQ.js +0 -0
  82. package/dist/_browser-chunks/chunk-EIYAKDGP.js +302 -0
  83. package/dist/_browser-chunks/chunk-ENKK74N4.js +12 -0
  84. package/dist/_browser-chunks/chunk-FENFYI4X.js +698 -0
  85. package/dist/_browser-chunks/chunk-FJGWSWL5.js +155 -0
  86. package/dist/_browser-chunks/chunk-FVSEPWWX.js +2810 -0
  87. package/dist/_browser-chunks/chunk-GNZY6LOW.js +10116 -0
  88. package/dist/_browser-chunks/chunk-IE4ULIOQ.js +14 -0
  89. package/dist/_browser-chunks/chunk-IMSF75WX.js +42 -0
  90. package/dist/_browser-chunks/chunk-IWQGIXJS.js +14 -0
  91. package/dist/_browser-chunks/chunk-JMC7AIKT.js +108 -0
  92. package/dist/_browser-chunks/chunk-JPUOQJUI.js +8 -0
  93. package/dist/_browser-chunks/chunk-JSBKXXXF.js +218 -0
  94. package/dist/_browser-chunks/chunk-JWSKPMPC.js +73 -0
  95. package/dist/_browser-chunks/chunk-JYVGARBG.js +2943 -0
  96. package/dist/_browser-chunks/chunk-KBK7GKBN.js +35 -0
  97. package/dist/_browser-chunks/chunk-KQ7CRO2B.js +108 -0
  98. package/dist/_browser-chunks/chunk-LAWXTSXK.js +18 -0
  99. package/dist/_browser-chunks/chunk-LE2LTDW3.js +14 -0
  100. package/dist/_browser-chunks/chunk-LEVSOOLQ.js +48 -0
  101. package/dist/_browser-chunks/chunk-LV5PIKV4.js +93 -0
  102. package/dist/_browser-chunks/chunk-MDOL7KML.js +56 -0
  103. package/dist/_browser-chunks/chunk-MFMDGWP6.js +34 -0
  104. package/dist/_browser-chunks/chunk-MLBOOZL4.js +67 -0
  105. package/dist/_browser-chunks/chunk-NQUD4B7H.js +91 -0
  106. package/dist/_browser-chunks/chunk-NULBREPZ.js +43 -0
  107. package/dist/_browser-chunks/chunk-NZMVUW5T.js +7 -0
  108. package/dist/_browser-chunks/chunk-OD6IBQCC.js +117 -0
  109. package/dist/_browser-chunks/chunk-ODVJ3XZJ.js +157 -0
  110. package/dist/_browser-chunks/chunk-OQWFVDIN.js +386 -0
  111. package/dist/_browser-chunks/chunk-OVH3USFB.js +20 -0
  112. package/dist/_browser-chunks/chunk-OZZPSYQR.js +14 -0
  113. package/dist/_browser-chunks/chunk-P6PK47TQ.js +1970 -0
  114. package/dist/_browser-chunks/chunk-PFRNG3UC.js +22 -0
  115. package/dist/_browser-chunks/chunk-PJSMZ27A.js +13 -0
  116. package/dist/_browser-chunks/chunk-QC4HFS6K.js +41 -0
  117. package/dist/_browser-chunks/chunk-QDXFODK4.js +274 -0
  118. package/dist/_browser-chunks/chunk-RBCHTR7C.js +28 -0
  119. package/dist/_browser-chunks/chunk-RMYQ3QN3.js +294 -0
  120. package/dist/_browser-chunks/chunk-RNTIV5CE.js +411 -0
  121. package/dist/_browser-chunks/chunk-RSPAQWVJ.js +80 -0
  122. package/dist/_browser-chunks/chunk-S6TK43XQ.js +836 -0
  123. package/dist/_browser-chunks/chunk-SC67XZST.js +18 -0
  124. package/dist/_browser-chunks/chunk-SFVA4SBT.js +683 -0
  125. package/dist/_browser-chunks/chunk-SZYFOQMT.js +25 -0
  126. package/dist/_browser-chunks/chunk-TBJCJXK4.js +18 -0
  127. package/dist/_browser-chunks/chunk-UMDO3KB7.js +205 -0
  128. package/dist/_browser-chunks/chunk-V2G23FV7.js +11 -0
  129. package/dist/_browser-chunks/chunk-V5M7Q4HT.js +88 -0
  130. package/dist/_browser-chunks/chunk-W5M6NPS3.js +198 -0
  131. package/dist/_browser-chunks/chunk-W7NE2JXW.js +84 -0
  132. package/dist/_browser-chunks/chunk-WGVAAM43.js +1110 -0
  133. package/dist/_browser-chunks/chunk-WHQRNHXD.js +8 -0
  134. package/dist/_browser-chunks/chunk-WOSOWBCA.js +12 -0
  135. package/dist/_browser-chunks/chunk-WZ7KR7SH.js +85 -0
  136. package/dist/_browser-chunks/chunk-YEKO6BHJ.js +20 -0
  137. package/dist/_browser-chunks/chunk-YI2IBIQS.js +7 -0
  138. package/dist/_browser-chunks/chunk-YTIT5NA5.js +1966 -0
  139. package/dist/_browser-chunks/chunk-ZEHRUHTA.js +6 -0
  140. package/dist/_browser-chunks/chunk-ZTQ5MEJ5.js +203 -0
  141. package/dist/_browser-chunks/matchers-YLBYSYAF.js +1263 -0
  142. package/dist/_browser-chunks/react-dom-client-4OHE3QDV.js +9 -0
  143. package/dist/_node-chunks/attached-runtime-I2G4WLJI.js +282 -0
  144. package/dist/_node-chunks/builder-manager-VVHYQXCH.js +1661 -0
  145. package/dist/_node-chunks/chunk-2BUPBPFB.js +82 -0
  146. package/dist/_node-chunks/chunk-2DSIDINN.js +884 -0
  147. package/dist/_node-chunks/chunk-2RU7BKEW.js +23 -0
  148. package/dist/_node-chunks/chunk-34EO2PUT.js +26 -0
  149. package/dist/_node-chunks/chunk-3BKIBF5S.js +3008 -0
  150. package/dist/_node-chunks/chunk-3SDUYDXH.js +98 -0
  151. package/dist/_node-chunks/chunk-3T4ZSNPH.js +662 -0
  152. package/dist/_node-chunks/chunk-3W7F2B7P.js +79 -0
  153. package/dist/_node-chunks/chunk-3Y6AAY5H.js +80 -0
  154. package/dist/_node-chunks/chunk-42UWAGPW.js +1193 -0
  155. package/dist/_node-chunks/chunk-4FEANXWU.js +1986 -0
  156. package/dist/_node-chunks/chunk-5DQFEZEA.js +40 -0
  157. package/dist/_node-chunks/chunk-6KEHV53S.js +1218 -0
  158. package/dist/_node-chunks/chunk-6LMWA44H.js +3837 -0
  159. package/dist/_node-chunks/chunk-6YKBRP72.js +20 -0
  160. package/dist/_node-chunks/chunk-7GUDZVRQ.js +110 -0
  161. package/dist/_node-chunks/chunk-B5J7Q7J4.js +21 -0
  162. package/dist/_node-chunks/chunk-BS2WMZMR.js +90 -0
  163. package/dist/_node-chunks/chunk-BSKFCWQD.js +47 -0
  164. package/dist/_node-chunks/chunk-BXVYT7SB.js +36 -0
  165. package/dist/_node-chunks/chunk-CCOTJ4FC.js +688 -0
  166. package/dist/_node-chunks/chunk-CQKMLL5J.js +33 -0
  167. package/dist/_node-chunks/chunk-CXRU72ET.js +63 -0
  168. package/dist/_node-chunks/chunk-DC7DKR5K.js +20 -0
  169. package/dist/_node-chunks/chunk-DHJFTB4K.js +25 -0
  170. package/dist/_node-chunks/chunk-DUR55DJJ.js +1094 -0
  171. package/dist/_node-chunks/chunk-E6YESGLX.js +7032 -0
  172. package/dist/_node-chunks/chunk-EHUNOMDD.js +52345 -0
  173. package/dist/_node-chunks/chunk-ET7PWEO7.js +298 -0
  174. package/dist/_node-chunks/chunk-EWOX7HPJ.js +20 -0
  175. package/dist/_node-chunks/chunk-F3ZFKBHY.js +844 -0
  176. package/dist/_node-chunks/chunk-FK7KGTV7.js +26 -0
  177. package/dist/_node-chunks/chunk-FPZB5OI7.js +35 -0
  178. package/dist/_node-chunks/chunk-FW2HQUBQ.js +25 -0
  179. package/dist/_node-chunks/chunk-FY6UXW6G.js +11 -0
  180. package/dist/_node-chunks/chunk-GEFQN7K3.js +499 -0
  181. package/dist/_node-chunks/chunk-GRBLDJCR.js +989 -0
  182. package/dist/_node-chunks/chunk-H32DYT6P.js +87 -0
  183. package/dist/_node-chunks/chunk-H4PPVMP5.js +23 -0
  184. package/dist/_node-chunks/chunk-HMP2G23X.js +25 -0
  185. package/dist/_node-chunks/chunk-ICPBH3E7.js +59 -0
  186. package/dist/_node-chunks/chunk-IDEL2J23.js +23 -0
  187. package/dist/_node-chunks/chunk-IK4FGZLR.js +223 -0
  188. package/dist/_node-chunks/chunk-JDXXX6LB.js +68 -0
  189. package/dist/_node-chunks/chunk-JGGFYIG5.js +5468 -0
  190. package/dist/_node-chunks/chunk-JPAZLYJ3.js +29 -0
  191. package/dist/_node-chunks/chunk-JZOO7GGC.js +48 -0
  192. package/dist/_node-chunks/chunk-KISMCCP5.js +4744 -0
  193. package/dist/_node-chunks/chunk-LCK4ZQKG.js +115 -0
  194. package/dist/_node-chunks/chunk-LO56I6E2.js +132 -0
  195. package/dist/_node-chunks/chunk-LXBD4UL4.js +104 -0
  196. package/dist/_node-chunks/chunk-MA24JW6C.js +7162 -0
  197. package/dist/_node-chunks/chunk-MK2KYAI6.js +5414 -0
  198. package/dist/_node-chunks/chunk-NDWKJ4CL.js +2102 -0
  199. package/dist/_node-chunks/chunk-NIBT7XDZ.js +168 -0
  200. package/dist/_node-chunks/chunk-NPO45IMH.js +33 -0
  201. package/dist/_node-chunks/chunk-OISX4AGQ.js +414 -0
  202. package/dist/_node-chunks/chunk-OUW6R7C3.js +26 -0
  203. package/dist/_node-chunks/chunk-OWNFOGTA.js +194 -0
  204. package/dist/_node-chunks/chunk-Q7QNUM5H.js +49 -0
  205. package/dist/_node-chunks/chunk-QEQLR22M.js +1877 -0
  206. package/dist/_node-chunks/chunk-RRN2V55B.js +45 -0
  207. package/dist/_node-chunks/chunk-RWFIFGO5.js +144 -0
  208. package/dist/_node-chunks/chunk-RXNJDRGO.js +209 -0
  209. package/dist/_node-chunks/chunk-RZMQ7S3L.js +92 -0
  210. package/dist/_node-chunks/chunk-SIEXZVCR.js +51 -0
  211. package/dist/_node-chunks/chunk-SLWQNBGO.js +2034 -0
  212. package/dist/_node-chunks/chunk-SVTBJ7Q3.js +35 -0
  213. package/dist/_node-chunks/chunk-SWO5CDYU.js +32 -0
  214. package/dist/_node-chunks/chunk-TD5PLLQG.js +121 -0
  215. package/dist/_node-chunks/chunk-TEQGGSP7.js +33 -0
  216. package/dist/_node-chunks/chunk-TFCEV2XX.js +155 -0
  217. package/dist/_node-chunks/chunk-TFEWM4E3.js +1073 -0
  218. package/dist/_node-chunks/chunk-TINO74G5.js +21 -0
  219. package/dist/_node-chunks/chunk-TNJIXE37.js +40 -0
  220. package/dist/_node-chunks/chunk-TWI4GVH7.js +19 -0
  221. package/dist/_node-chunks/chunk-U5W53R2J.js +1011 -0
  222. package/dist/_node-chunks/chunk-UBOGWBEA.js +148 -0
  223. package/dist/_node-chunks/chunk-UMUBKI6E.js +3787 -0
  224. package/dist/_node-chunks/chunk-UVINFLGY.js +56 -0
  225. package/dist/_node-chunks/chunk-V2DY426G.js +1133 -0
  226. package/dist/_node-chunks/chunk-VLOXOXXE.js +45 -0
  227. package/dist/_node-chunks/chunk-W4OMYLSP.js +1297 -0
  228. package/dist/_node-chunks/chunk-WAXVSN3O.js +18 -0
  229. package/dist/_node-chunks/chunk-WCULS5TP.js +3767 -0
  230. package/dist/_node-chunks/chunk-WNZ2UMFM.js +153 -0
  231. package/dist/_node-chunks/chunk-WZJF2OUH.js +74 -0
  232. package/dist/_node-chunks/chunk-XGIUVY52.js +611 -0
  233. package/dist/_node-chunks/chunk-XHL2LVBM.js +415 -0
  234. package/dist/_node-chunks/chunk-XI6B6P47.js +59 -0
  235. package/dist/_node-chunks/chunk-XLP2ZKXV.js +60 -0
  236. package/dist/_node-chunks/chunk-YCMRA6RX.js +95 -0
  237. package/dist/_node-chunks/chunk-YZFWBA5L.js +2700 -0
  238. package/dist/_node-chunks/chunk-ZMAMXQKP.js +4731 -0
  239. package/dist/_node-chunks/chunk-ZWBCQ4MJ.js +110 -0
  240. package/dist/_node-chunks/dist-VTSTZKUB.js +16 -0
  241. package/dist/_node-chunks/globby-OEMHPBFY.js +2884 -0
  242. package/dist/_node-chunks/jiti-NFX6UU74.js +3848 -0
  243. package/dist/_node-chunks/lib-MDVARD7W.js +366 -0
  244. package/dist/_node-chunks/local-runtime-NTKIN2QT.js +78 -0
  245. package/dist/_node-chunks/mdx-plugin-MWISDWDQ.js +5680 -0
  246. package/dist/_node-chunks/monorepo-LIRFMQXE.js +121 -0
  247. package/dist/_node-chunks/monorepo-optimized-tests-relaxed-limits-no-story-deletion-CPDW4XTW.js +121 -0
  248. package/dist/_node-chunks/optimized-tests-HDOLR3EY.js +22 -0
  249. package/dist/_node-chunks/pattern-copy-play-EKHIUAU2.js +807 -0
  250. package/dist/_node-chunks/postinstallAddon-GYGMWDL6.js +20 -0
  251. package/dist/_node-chunks/rehype-external-links-BUN3HUCO.js +121 -0
  252. package/dist/_node-chunks/rehype-slug-PLADX223.js +52 -0
  253. package/dist/_node-chunks/relaxed-limits-GBHW6KIQ.js +117 -0
  254. package/dist/_node-chunks/run-KDTIZNSY.js +103 -0
  255. package/dist/_node-chunks/run-NL66VTNR.js +4532 -0
  256. package/dist/_node-chunks/session-id-KIIVOQLR.js +23 -0
  257. package/dist/_node-chunks/setup-MGC7BQO6.js +278 -0
  258. package/dist/_node-chunks/vitest.config.4.template-JH2THZFG.js +54 -0
  259. package/dist/actions/decorator.d.ts +7 -0
  260. package/dist/actions/decorator.js +43 -0
  261. package/dist/actions/index.d.ts +67 -0
  262. package/dist/actions/index.js +28 -0
  263. package/dist/addon-a11y/index.d.ts +52 -0
  264. package/dist/addon-a11y/index.js +16 -0
  265. package/dist/addon-a11y/manager.js +1429 -0
  266. package/dist/addon-a11y/preset.js +18 -0
  267. package/dist/addon-a11y/preview.d.ts +17 -0
  268. package/dist/addon-a11y/preview.js +15 -0
  269. package/dist/addon-docs/blocks.d.ts +1061 -0
  270. package/dist/addon-docs/blocks.js +2461 -0
  271. package/dist/addon-docs/index.d.ts +236 -0
  272. package/dist/addon-docs/index.js +16 -0
  273. package/dist/addon-docs/manager.js +90 -0
  274. package/dist/addon-docs/mdx-react-shim.d.ts +1 -0
  275. package/dist/addon-docs/mdx-react-shim.js +2 -0
  276. package/dist/addon-docs/preset.js +378 -0
  277. package/dist/addon-docs/preview.d.ts +4 -0
  278. package/dist/addon-docs/preview.js +7 -0
  279. package/dist/addon-links/index.d.ts +22 -0
  280. package/dist/addon-links/index.js +20 -0
  281. package/dist/addon-links/manager.js +14 -0
  282. package/dist/addon-links/preview.d.ts +6 -0
  283. package/dist/addon-links/preview.js +9 -0
  284. package/dist/addon-links/react/index.d.ts +25 -0
  285. package/dist/addon-links/react/index.js +52 -0
  286. package/dist/addon-mcp/preset.js +1345 -0
  287. package/dist/addon-mcp/preview.js +29 -0
  288. package/dist/addon-mcp/tools/preview-stories/preview-stories-app-script.js +1153 -0
  289. package/dist/addon-ondevice-actions/index.d.ts +4 -0
  290. package/dist/addon-ondevice-actions/index.js +7 -0
  291. package/dist/addon-ondevice-actions/register.js +7 -0
  292. package/dist/addon-ondevice-controls/index.d.ts +6 -0
  293. package/dist/addon-ondevice-controls/index.js +14 -0
  294. package/dist/addon-ondevice-controls/register.js +10 -0
  295. package/dist/addon-pseudo-states/index.d.ts +35 -0
  296. package/dist/addon-pseudo-states/index.js +15 -0
  297. package/dist/addon-pseudo-states/manager.js +53 -0
  298. package/dist/addon-pseudo-states/preview.d.ts +9 -0
  299. package/dist/addon-pseudo-states/preview.js +10 -0
  300. package/dist/addon-themes/index.d.ts +80 -0
  301. package/dist/addon-themes/index.js +104 -0
  302. package/dist/addon-themes/manager.js +97 -0
  303. package/dist/addon-themes/postinstall.js +33 -0
  304. package/dist/addon-themes/preview.d.ts +6 -0
  305. package/dist/addon-themes/preview.js +8 -0
  306. package/dist/addon-vitest/constants.d.ts +132 -0
  307. package/dist/addon-vitest/constants.js +66 -0
  308. package/dist/addon-vitest/index.d.ts +4 -0
  309. package/dist/addon-vitest/index.js +8 -0
  310. package/dist/addon-vitest/manager.js +665 -0
  311. package/dist/addon-vitest/node/coverage-reporter.js +1284 -0
  312. package/dist/addon-vitest/node/vitest.js +674 -0
  313. package/dist/addon-vitest/postinstall.js +24 -0
  314. package/dist/addon-vitest/preset.js +943 -0
  315. package/dist/addon-vitest/vitest-plugin/global-setup.js +162 -0
  316. package/dist/addon-vitest/vitest-plugin/index.d.ts +56 -0
  317. package/dist/addon-vitest/vitest-plugin/index.js +463 -0
  318. package/dist/addon-vitest/vitest-plugin/setup-file-with-project-annotations.js +9 -0
  319. package/dist/addon-vitest/vitest-plugin/setup-file.browser.4.js +20 -0
  320. package/dist/addon-vitest/vitest-plugin/setup-file.js +50 -0
  321. package/dist/addon-vitest/vitest-plugin/test-utils.js +128 -0
  322. package/dist/babel/index.d.ts +2301 -0
  323. package/dist/babel/index.js +61 -0
  324. package/dist/backgrounds/index.d.ts +6 -0
  325. package/dist/backgrounds/index.js +15 -0
  326. package/dist/bin/core.js +1705 -0
  327. package/dist/bin/dispatcher.js +43 -0
  328. package/dist/bin/loader.js +115 -0
  329. package/dist/builder-vite/index.d.ts +50 -0
  330. package/dist/builder-vite/index.js +245 -0
  331. package/dist/builder-vite/preset.js +27 -0
  332. package/dist/channels/index.d.ts +2 -0
  333. package/dist/channels/index.js +352 -0
  334. package/dist/chunk-B2t1tGRh.d.ts +284 -0
  335. package/dist/chunk-BCoJQE-f.d.ts +602 -0
  336. package/dist/chunk-BGkgZp-H.d.ts +214 -0
  337. package/dist/chunk-BTVrWliM.d.ts +115 -0
  338. package/dist/chunk-BXLImeLy.d.ts +197 -0
  339. package/dist/chunk-BfBzpgct.d.ts +916 -0
  340. package/dist/chunk-Bpi2tz-6.d.ts +511 -0
  341. package/dist/chunk-BxWufQms.d.ts +142 -0
  342. package/dist/chunk-C-bavsOH.d.ts +34 -0
  343. package/dist/chunk-C2p5r3Vt.d.ts +13001 -0
  344. package/dist/chunk-C6PAgHLT.d.ts +12 -0
  345. package/dist/chunk-CMeX4WRe.d.ts +179 -0
  346. package/dist/chunk-Ct9xd6IM.d.ts +65 -0
  347. package/dist/chunk-CwQKNaYL.d.ts +15 -0
  348. package/dist/chunk-D7DwV41f.d.ts +3622 -0
  349. package/dist/chunk-DEVFdzxR.d.ts +253 -0
  350. package/dist/chunk-DaVb55-_.d.ts +124 -0
  351. package/dist/chunk-DgRNfmj_.d.ts +40 -0
  352. package/dist/chunk-DoIGKY33.d.ts +666 -0
  353. package/dist/chunk-Dr3R0DXk.d.ts +40 -0
  354. package/dist/chunk-DtHByo32.d.ts +55 -0
  355. package/dist/chunk-Dw1z1Pki.d.ts +933 -0
  356. package/dist/chunk-DzuY9DXg.d.ts +79 -0
  357. package/dist/chunk-FjDVzZTj.d.ts +62 -0
  358. package/dist/chunk-Kt1tW-D1.d.ts +59 -0
  359. package/dist/chunk-XP8oHzpE.d.ts +6 -0
  360. package/dist/chunk-gCX81nOr.d.ts +61 -0
  361. package/dist/chunk-pcFXCimE.d.ts +741 -0
  362. package/dist/cli/index.d.ts +1174 -0
  363. package/dist/cli/index.js +5613 -0
  364. package/dist/cli/skills/content/index.d.ts +72 -0
  365. package/dist/cli/skills/content/index.js +335 -0
  366. package/dist/cli/tools/sdk/child-host.d.ts +61 -0
  367. package/dist/cli/tools/sdk/child-host.js +131 -0
  368. package/dist/cli/tools/sdk/index.d.ts +137 -0
  369. package/dist/cli/tools/sdk/index.js +44 -0
  370. package/dist/cli-commands/bin/index.js +25 -0
  371. package/dist/client-logger/index.d.ts +31 -0
  372. package/dist/client-logger/index.js +63 -0
  373. package/dist/common/index.d.ts +1103 -0
  374. package/dist/common/index.js +364 -0
  375. package/dist/components/index.d.ts +1924 -0
  376. package/dist/components/index.js +13759 -0
  377. package/dist/core-events/index.d.ts +155 -0
  378. package/dist/core-events/index.js +136 -0
  379. package/dist/core-server/index.d.ts +2200 -0
  380. package/dist/core-server/index.js +4165 -0
  381. package/dist/core-server/presets/common-manager.css +170 -0
  382. package/dist/core-server/presets/common-manager.js +4168 -0
  383. package/dist/core-server/presets/common-override-preset.js +81 -0
  384. package/dist/core-server/presets/common-preset.js +2187 -0
  385. package/dist/create/bin/index.js +23 -0
  386. package/dist/create/index.js +25 -0
  387. package/dist/csf/csf-utils.d.ts +2 -0
  388. package/dist/csf/csf-utils.js +19 -0
  389. package/dist/csf/index.d.ts +7 -0
  390. package/dist/csf/index.js +2142 -0
  391. package/dist/csf-tools/index.d.ts +1157 -0
  392. package/dist/csf-tools/index.js +736 -0
  393. package/dist/docs-tools/index.d.ts +197 -0
  394. package/dist/docs-tools/index.js +61 -0
  395. package/dist/highlight/index.d.ts +10 -0
  396. package/dist/highlight/index.js +15 -0
  397. package/dist/instrumenter/index.d.ts +113 -0
  398. package/dist/instrumenter/index.js +2595 -0
  399. package/dist/manager/_manager-chunks/globals-runtime-8HkdnU2F.js +6144 -0
  400. package/dist/manager/_manager-chunks/globals-runtime-BIKBO23x.js +3389 -0
  401. package/dist/manager/_manager-chunks/globals-runtime-BdGkqNEt.js +45 -0
  402. package/dist/manager/_manager-chunks/globals-runtime-BmphMP6z.js +1190 -0
  403. package/dist/manager/_manager-chunks/globals-runtime-BvM-NY2g.js +13307 -0
  404. package/dist/manager/_manager-chunks/globals-runtime-C02fvgcd.js +9243 -0
  405. package/dist/manager/_manager-chunks/globals-runtime-DkAPXCvc.js +9766 -0
  406. package/dist/manager/_manager-chunks/globals-runtime-DpNYC-qi.js +5564 -0
  407. package/dist/manager/_manager-chunks/globals-runtime-DtcOnYHR.js +5357 -0
  408. package/dist/manager/_manager-chunks/globals-runtime-DwFqpqya.js +722 -0
  409. package/dist/manager/_manager-chunks/globals-runtime-FC201B7s.js +6837 -0
  410. package/dist/manager/_manager-chunks/globals-runtime-Rp_zjGnh.js +121 -0
  411. package/dist/manager/_manager-chunks/globals-runtime-ZHrQFa3-.js +10463 -0
  412. package/dist/manager/_manager-chunks/globals-runtime-eLPTIfX-.js +7759 -0
  413. package/dist/manager/_manager-chunks/globals-runtime-qKvCZHFY.js +4468 -0
  414. package/dist/manager/_manager-chunks/globals-runtime-sGpNlIJ1.js +5102 -0
  415. package/dist/manager/_manager-chunks/runtime-B1L9TH89.js +452 -0
  416. package/dist/manager/_manager-chunks/runtime-BK0zF7FN.js +22 -0
  417. package/dist/manager/_manager-chunks/runtime-BhkT2CXl.js +1408 -0
  418. package/dist/manager/_manager-chunks/runtime-Bly6WJLN.js +998 -0
  419. package/dist/manager/_manager-chunks/runtime-D0UOWx0U.js +979 -0
  420. package/dist/manager/_manager-chunks/runtime-D94Vq3oR.js +4014 -0
  421. package/dist/manager/_manager-chunks/runtime-DMig8mT7.js +77 -0
  422. package/dist/manager/_manager-chunks/runtime-EITvVbkG.js +46 -0
  423. package/dist/manager/_manager-chunks/runtime-cp5pazY2.js +8936 -0
  424. package/dist/manager/_manager-chunks/runtime-eDVAYF7N.js +6860 -0
  425. package/dist/manager/_manager-chunks/runtime-i-PDAHLR.js +2493 -0
  426. package/dist/manager/globals-runtime.js +2 -0
  427. package/dist/manager/globals.d.ts +23 -0
  428. package/dist/manager/globals.js +26 -0
  429. package/dist/manager/manager-stores.d.ts +2 -0
  430. package/dist/manager/manager-stores.js +19 -0
  431. package/dist/manager/runtime.js +2 -0
  432. package/dist/manager-api/index.d.ts +2 -0
  433. package/dist/manager-api/index.js +3257 -0
  434. package/dist/manager-errors.d.ts +89 -0
  435. package/dist/manager-errors.js +20 -0
  436. package/dist/mcp/index.d.ts +270 -0
  437. package/dist/mcp/index.js +305 -0
  438. package/dist/mocking-utils/index.d.ts +689 -0
  439. package/dist/mocking-utils/index.js +521 -0
  440. package/dist/mocking-utils/mocker-runtime.js +1254 -0
  441. package/dist/nextjs-vite/config/preview.js +3 -0
  442. package/dist/nextjs-vite/export-mocks/cache/index.d.ts +25 -0
  443. package/dist/nextjs-vite/export-mocks/cache/index.js +29 -0
  444. package/dist/nextjs-vite/export-mocks/headers/index.d.ts +37 -0
  445. package/dist/nextjs-vite/export-mocks/headers/index.js +54 -0
  446. package/dist/nextjs-vite/export-mocks/link/index.d.ts +9 -0
  447. package/dist/nextjs-vite/export-mocks/link/index.js +59 -0
  448. package/dist/nextjs-vite/export-mocks/navigation/index.d.ts +28 -0
  449. package/dist/nextjs-vite/export-mocks/navigation/index.js +58 -0
  450. package/dist/nextjs-vite/export-mocks/router/index.d.ts +34 -0
  451. package/dist/nextjs-vite/export-mocks/router/index.js +63 -0
  452. package/dist/nextjs-vite/index.d.ts +92 -0
  453. package/dist/nextjs-vite/index.js +58 -0
  454. package/dist/nextjs-vite/node/index.d.ts +6 -0
  455. package/dist/nextjs-vite/node/index.js +20 -0
  456. package/dist/nextjs-vite/preset.js +648 -0
  457. package/dist/nextjs-vite/preview.d.ts +20 -0
  458. package/dist/nextjs-vite/preview.js +11 -0
  459. package/dist/nextjs-vite/vite-plugin/index.d.ts +6 -0
  460. package/dist/nextjs-vite/vite-plugin/index.js +19 -0
  461. package/dist/nextjs-vite-plugin/index.d.ts +28 -0
  462. package/dist/nextjs-vite-plugin/index.js +923 -0
  463. package/dist/nextjs-vite-plugin/mocks/storybook.global.js +29 -0
  464. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-context.js +8 -0
  465. package/dist/nextjs-vite-plugin/plugins/next-image/alias/image-default-loader.js +23 -0
  466. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-image.js +28 -0
  467. package/dist/nextjs-vite-plugin/plugins/next-image/alias/next-legacy-image.js +17 -0
  468. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/cache/index.js +29 -0
  469. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/dynamic/index.js +40 -0
  470. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/headers/index.js +55 -0
  471. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/link/index.js +63 -0
  472. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/navigation/index.js +71 -0
  473. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/router/index.js +74 -0
  474. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/rsc/server-only.js +7 -0
  475. package/dist/nextjs-vite-plugin/plugins/next-mocks/alias/safe-stable-stringify/index.js +13 -0
  476. package/dist/nextjs-vite-plugin/plugins/next-mocks/compatibility/draft-mode.compat.js +7 -0
  477. package/dist/node-logger/index.d.ts +495 -0
  478. package/dist/node-logger/index.js +42 -0
  479. package/dist/oxc-parser/index.d.ts +99 -0
  480. package/dist/oxc-parser/index.js +275 -0
  481. package/dist/oxc-parser/worker.js +37 -0
  482. package/dist/preview/_chunks/runtime-BIzIdDbb.js +10263 -0
  483. package/dist/preview/_chunks/runtime-BTPtVY1p.js +1102 -0
  484. package/dist/preview/_chunks/runtime-BZSnICCg.js +8484 -0
  485. package/dist/preview/_chunks/runtime-BdGkqNEt.js +45 -0
  486. package/dist/preview/_chunks/runtime-BwSxqk3t.js +63 -0
  487. package/dist/preview/_chunks/runtime-CqHxptiK.js +6143 -0
  488. package/dist/preview/_chunks/runtime-CsV4HZPV.js +5064 -0
  489. package/dist/preview/_chunks/runtime-CxZK_Ln3.js +284 -0
  490. package/dist/preview/_chunks/runtime-DZToXfvO.js +9767 -0
  491. package/dist/preview/_chunks/runtime-DrTjJkPY.js +3872 -0
  492. package/dist/preview/_chunks/runtime-DuHdxMFA.js +387 -0
  493. package/dist/preview/_chunks/runtime-iXdo8CR8.js +3635 -0
  494. package/dist/preview/_chunks/runtime-q3wt0e_N.js +6838 -0
  495. package/dist/preview/globals.d.ts +16 -0
  496. package/dist/preview/globals.js +20 -0
  497. package/dist/preview/runtime.js +6 -0
  498. package/dist/preview-api/index.d.ts +4 -0
  499. package/dist/preview-api/index.js +147 -0
  500. package/dist/preview-errors.d.ts +186 -0
  501. package/dist/preview-errors.js +56 -0
  502. package/dist/react/docgen/docgen-worker.js +38 -0
  503. package/dist/react/entry-preview-argtypes.js +9 -0
  504. package/dist/react/entry-preview-docs.js +12 -0
  505. package/dist/react/entry-preview-rsc.js +11 -0
  506. package/dist/react/entry-preview.js +21 -0
  507. package/dist/react/index.d.ts +119 -0
  508. package/dist/react/index.js +26 -0
  509. package/dist/react/preset.js +301 -0
  510. package/dist/react/preview.d.ts +2 -0
  511. package/dist/react/preview.js +11 -0
  512. package/dist/react-native/bin/get-stories.js +34 -0
  513. package/dist/react-native/index.d.ts +160 -0
  514. package/dist/react-native/index.js +1547 -0
  515. package/dist/react-native/metro/node.d.ts +83 -0
  516. package/dist/react-native/metro/node.js +21 -0
  517. package/dist/react-native/metro/withStorybook.d.ts +2269 -0
  518. package/dist/react-native/metro/withStorybook.js +138 -0
  519. package/dist/react-native/preview.d.ts +6 -0
  520. package/dist/react-native/preview.js +20 -0
  521. package/dist/react-native/scripts/generate.d.ts +22 -0
  522. package/dist/react-native/scripts/generate.js +18 -0
  523. package/dist/react-native/stub.js +20 -0
  524. package/dist/react-native-theming/index.d.ts +175 -0
  525. package/dist/react-native-theming/index.js +2591 -0
  526. package/dist/react-native-ui/index.d.ts +130 -0
  527. package/dist/react-native-ui/index.js +1448 -0
  528. package/dist/react-native-ui-common/index.d.ts +230 -0
  529. package/dist/react-native-ui-common/index.js +514 -0
  530. package/dist/react-vite/index.d.ts +4 -0
  531. package/dist/react-vite/index.js +8 -0
  532. package/dist/react-vite/node/index.d.ts +6 -0
  533. package/dist/react-vite/node/index.js +20 -0
  534. package/dist/react-vite/preset.d.ts +6 -0
  535. package/dist/react-vite/preset.js +21 -0
  536. package/dist/router/index.d.ts +141 -0
  537. package/dist/router/index.js +1217 -0
  538. package/dist/server-errors.d.ts +2 -0
  539. package/dist/server-errors.js +149 -0
  540. package/dist/shared/open-service/index.d.ts +3 -0
  541. package/dist/shared/open-service/index.js +115 -0
  542. package/dist/shared/open-service/services/docgen/worker/docgen-worker.js +75 -0
  543. package/dist/shared/open-service/toolsets/docs/public.d.ts +1296 -0
  544. package/dist/shared/open-service/toolsets/docs/public.js +991 -0
  545. package/dist/telemetry/index.d.ts +314 -0
  546. package/dist/telemetry/index.js +103 -0
  547. package/dist/test/index.d.ts +158 -0
  548. package/dist/test/index.js +19421 -0
  549. package/dist/theming/create.d.ts +15 -0
  550. package/dist/theming/create.js +11 -0
  551. package/dist/theming/index.d.ts +54 -0
  552. package/dist/theming/index.js +511 -0
  553. package/dist/types/index.d.ts +2 -0
  554. package/dist/types/index.js +48 -0
  555. package/dist/viewport/index.d.ts +275 -0
  556. package/dist/viewport/index.js +21 -0
  557. package/package.json +1054 -4
  558. package/template/nextjs-vite/cli/.eslintrc.json +6 -0
  559. package/template/nextjs-vite/cli/js/Button.jsx +42 -0
  560. package/template/nextjs-vite/cli/js/Button.stories.js +49 -0
  561. package/template/nextjs-vite/cli/js/Configure.mdx +470 -0
  562. package/template/nextjs-vite/cli/js/Header.jsx +58 -0
  563. package/template/nextjs-vite/cli/js/Header.stories.js +30 -0
  564. package/template/nextjs-vite/cli/js/Page.jsx +68 -0
  565. package/template/nextjs-vite/cli/js/Page.stories.js +28 -0
  566. package/template/nextjs-vite/cli/ts/Button.stories.ts +54 -0
  567. package/template/nextjs-vite/cli/ts/Button.tsx +39 -0
  568. package/template/nextjs-vite/cli/ts/Configure.mdx +446 -0
  569. package/template/nextjs-vite/cli/ts/Header.stories.ts +34 -0
  570. package/template/nextjs-vite/cli/ts/Header.tsx +54 -0
  571. package/template/nextjs-vite/cli/ts/Page.stories.ts +33 -0
  572. package/template/nextjs-vite/cli/ts/Page.tsx +73 -0
  573. package/template/react/cli/.eslintrc.json +5 -0
  574. package/template/react/cli/js/Button.jsx +39 -0
  575. package/template/react/cli/js/Button.stories.js +49 -0
  576. package/template/react/cli/js/Header.jsx +56 -0
  577. package/template/react/cli/js/Header.stories.js +29 -0
  578. package/template/react/cli/js/Page.jsx +69 -0
  579. package/template/react/cli/js/Page.stories.js +28 -0
  580. package/template/react/cli/ts/Button.stories.ts +54 -0
  581. package/template/react/cli/ts/Button.tsx +37 -0
  582. package/template/react/cli/ts/Header.stories.ts +34 -0
  583. package/template/react/cli/ts/Header.tsx +56 -0
  584. package/template/react/cli/ts/Page.stories.ts +33 -0
  585. package/template/react/cli/ts/Page.tsx +73 -0
  586. package/template/react-vite/cli/.eslintrc.json +5 -0
  587. package/template/react-vite/cli/js/Button.jsx +39 -0
  588. package/template/react-vite/cli/js/Button.stories.js +49 -0
  589. package/template/react-vite/cli/js/Header.jsx +56 -0
  590. package/template/react-vite/cli/js/Header.stories.js +29 -0
  591. package/template/react-vite/cli/js/Page.jsx +69 -0
  592. package/template/react-vite/cli/js/Page.stories.js +28 -0
  593. package/template/react-vite/cli/ts/Button.stories.ts +54 -0
  594. package/template/react-vite/cli/ts/Button.tsx +37 -0
  595. package/template/react-vite/cli/ts/Header.stories.ts +34 -0
  596. package/template/react-vite/cli/ts/Header.tsx +56 -0
  597. package/template/react-vite/cli/ts/Page.stories.ts +33 -0
  598. package/template/react-vite/cli/ts/Page.tsx +73 -0
@@ -0,0 +1,2810 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-IMSF75WX.js";
4
+
5
+ // ../../node_modules/@base-ui/react/tabs/index.parts.mjs
6
+ var index_parts_exports = {};
7
+ __export(index_parts_exports, {
8
+ Indicator: () => TabsIndicator,
9
+ List: () => TabsList,
10
+ Panel: () => TabsPanel,
11
+ Root: () => TabsRoot,
12
+ Tab: () => TabsTab
13
+ });
14
+
15
+ // ../../node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
16
+ import * as React11 from "react";
17
+
18
+ // ../../node_modules/@base-ui/utils/useControlled.mjs
19
+ import * as React from "react";
20
+
21
+ // ../../node_modules/@base-ui/utils/createLogOnce.mjs
22
+ var loggedMessages;
23
+ process.env.NODE_ENV !== "production" && (loggedMessages = /* @__PURE__ */ new Set());
24
+ function createLogOnce(severity, prefix) {
25
+ return function(...messages) {
26
+ if (process.env.NODE_ENV !== "production") {
27
+ let message = messages.join(" "), output = prefix ? `${prefix}: ${message}` : message, key = `${severity}:${output}`;
28
+ loggedMessages.has(key) || (loggedMessages.add(key), severity === "warn" ? console.warn(output) : console.error(output));
29
+ }
30
+ };
31
+ }
32
+
33
+ // ../../node_modules/@base-ui/utils/error.mjs
34
+ var error = createLogOnce("error", "Base UI");
35
+
36
+ // ../../node_modules/@base-ui/utils/useControlled.mjs
37
+ function useControlled({
38
+ controlled,
39
+ default: defaultProp,
40
+ name,
41
+ state = "value"
42
+ }) {
43
+ let {
44
+ current: isControlled
45
+ } = React.useRef(controlled !== void 0), [valueState, setValue] = React.useState(() => defaultProp), value = isControlled && controlled !== void 0 ? controlled : valueState;
46
+ if (process.env.NODE_ENV !== "production") {
47
+ React.useEffect(() => {
48
+ isControlled !== (controlled !== void 0) && error([`A component is changing the ${isControlled ? "" : "un"}controlled ${state} state of ${name} to be ${isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled ${name} element for the lifetime of the component.`, "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", "More info: https://fb.me/react-controlled-components"].join(`
49
+ `));
50
+ }, [state, name, controlled]);
51
+ let {
52
+ current: defaultValue
53
+ } = React.useRef(defaultProp);
54
+ React.useEffect(() => {
55
+ !isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp) && error([`A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. To suppress this warning opt to use a controlled ${name}.`].join(`
56
+ `));
57
+ }, [defaultProp]);
58
+ }
59
+ let setValueIfUncontrolled = React.useCallback((newValue) => {
60
+ isControlled || setValue(newValue);
61
+ }, []);
62
+ return [value, setValueIfUncontrolled];
63
+ }
64
+ function serializeToDevModeString(input) {
65
+ let nextId = 0, seen = /* @__PURE__ */ new WeakMap();
66
+ try {
67
+ return JSON.stringify(input, function(key, value) {
68
+ if (!(key === "_owner" && this != null && typeof this == "object" && "$$typeof" in this)) {
69
+ if (typeof value == "bigint")
70
+ return `__bigint__:${value}`;
71
+ if (value !== null && typeof value == "object") {
72
+ let id = seen.get(value);
73
+ if (id !== void 0)
74
+ return `__object__:${id}`;
75
+ seen.set(value, nextId), nextId += 1;
76
+ }
77
+ return value;
78
+ }
79
+ }) ?? `__top__:${typeof input}`;
80
+ } catch {
81
+ return "__unserializable__";
82
+ }
83
+ }
84
+
85
+ // ../../node_modules/@base-ui/utils/useIsoLayoutEffect.mjs
86
+ import * as React2 from "react";
87
+ var noop = () => {
88
+ }, useIsoLayoutEffect = typeof document < "u" ? React2.useLayoutEffect : noop;
89
+
90
+ // ../../node_modules/@base-ui/utils/safeReact.mjs
91
+ import * as React3 from "react";
92
+ var SafeReact = {
93
+ ...React3
94
+ };
95
+
96
+ // ../../node_modules/@base-ui/utils/useRefWithInit.mjs
97
+ import * as React4 from "react";
98
+ var UNINITIALIZED = {};
99
+ function useRefWithInit(init, initArg) {
100
+ let ref = React4.useRef(UNINITIALIZED);
101
+ return ref.current === UNINITIALIZED && (ref.current = init(initArg)), ref;
102
+ }
103
+
104
+ // ../../node_modules/@base-ui/utils/useStableCallback.mjs
105
+ var useInsertionEffect = SafeReact.useInsertionEffect, useSafeInsertionEffect = (
106
+ // React 17 doesn't have useInsertionEffect.
107
+ useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
108
+ useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn()
109
+ );
110
+ function useStableCallback(callback) {
111
+ let stable = useRefWithInit(createStableCallback).current;
112
+ return stable.next = callback, useSafeInsertionEffect(stable.effect), stable.trampoline;
113
+ }
114
+ function createStableCallback() {
115
+ let stable = {
116
+ next: void 0,
117
+ callback: assertNotCalled,
118
+ trampoline: (...args) => stable.callback?.(...args),
119
+ effect: () => {
120
+ stable.callback = stable.next;
121
+ }
122
+ };
123
+ return stable;
124
+ }
125
+ function assertNotCalled() {
126
+ if (process.env.NODE_ENV !== "production")
127
+ throw (
128
+ /* minify-error-disabled */
129
+ new Error("Base UI: Cannot call an event handler while rendering.")
130
+ );
131
+ }
132
+
133
+ // ../../node_modules/@base-ui/react/internals/useRenderElement.mjs
134
+ import * as React7 from "react";
135
+
136
+ // ../../node_modules/@base-ui/utils/useMergedRefs.mjs
137
+ function useMergedRefs(a, b, c, d) {
138
+ let forkRef = useRefWithInit(createForkRef).current;
139
+ return didChange(forkRef, a, b, c, d) && update(forkRef, [a, b, c, d]), forkRef.callback;
140
+ }
141
+ function useMergedRefsN(refs) {
142
+ let forkRef = useRefWithInit(createForkRef).current;
143
+ return didChangeN(forkRef, refs) && update(forkRef, refs), forkRef.callback;
144
+ }
145
+ function createForkRef() {
146
+ return {
147
+ callback: null,
148
+ cleanup: null,
149
+ refs: []
150
+ };
151
+ }
152
+ function didChange(forkRef, a, b, c, d) {
153
+ return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;
154
+ }
155
+ function didChangeN(forkRef, newRefs) {
156
+ return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]);
157
+ }
158
+ function update(forkRef, refs) {
159
+ if (forkRef.refs = refs, refs.every((ref) => ref == null)) {
160
+ forkRef.callback = null;
161
+ return;
162
+ }
163
+ forkRef.callback = (instance) => {
164
+ if (forkRef.cleanup && (forkRef.cleanup(), forkRef.cleanup = null), instance != null) {
165
+ let cleanupCallbacks = Array(refs.length).fill(null);
166
+ for (let i = 0; i < refs.length; i += 1) {
167
+ let ref = refs[i];
168
+ if (ref != null)
169
+ switch (typeof ref) {
170
+ case "function": {
171
+ let refCleanup = ref(instance);
172
+ typeof refCleanup == "function" && (cleanupCallbacks[i] = refCleanup);
173
+ break;
174
+ }
175
+ case "object": {
176
+ ref.current = instance;
177
+ break;
178
+ }
179
+ default:
180
+ }
181
+ }
182
+ forkRef.cleanup = () => {
183
+ for (let i = 0; i < refs.length; i += 1) {
184
+ let ref = refs[i];
185
+ if (ref != null)
186
+ switch (typeof ref) {
187
+ case "function": {
188
+ let cleanupCallback = cleanupCallbacks[i];
189
+ typeof cleanupCallback == "function" ? cleanupCallback() : ref(null);
190
+ break;
191
+ }
192
+ case "object": {
193
+ ref.current = null;
194
+ break;
195
+ }
196
+ default:
197
+ }
198
+ }
199
+ };
200
+ }
201
+ };
202
+ }
203
+
204
+ // ../../node_modules/@base-ui/utils/getReactElementRef.mjs
205
+ import * as React6 from "react";
206
+
207
+ // ../../node_modules/@base-ui/utils/reactVersion.mjs
208
+ import * as React5 from "react";
209
+ var majorVersion = parseInt(React5.version, 10);
210
+ function isReactVersionAtLeast(reactVersionToCheck) {
211
+ return majorVersion >= reactVersionToCheck;
212
+ }
213
+
214
+ // ../../node_modules/@base-ui/utils/getReactElementRef.mjs
215
+ function getReactElementRef(element) {
216
+ if (!React6.isValidElement(element))
217
+ return null;
218
+ let reactElement = element, propsWithRef = reactElement.props;
219
+ return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
220
+ }
221
+
222
+ // ../../node_modules/@base-ui/utils/mergeObjects.mjs
223
+ function mergeObjects(a, b) {
224
+ if (a && !b)
225
+ return a;
226
+ if (!a && b)
227
+ return b;
228
+ if (a || b)
229
+ return {
230
+ ...a,
231
+ ...b
232
+ };
233
+ }
234
+
235
+ // ../../node_modules/@base-ui/utils/warn.mjs
236
+ var warn = createLogOnce("warn", "Base UI");
237
+
238
+ // ../../node_modules/@base-ui/utils/empty.mjs
239
+ function NOOP() {
240
+ }
241
+ var EMPTY_ARRAY = Object.freeze([]), EMPTY_OBJECT = Object.freeze({});
242
+
243
+ // ../../node_modules/@base-ui/react/internals/getStateAttributesProps.mjs
244
+ function getStateAttributesProps(state, customMapping) {
245
+ let props = {};
246
+ for (let key in state) {
247
+ let value = state[key];
248
+ if (customMapping?.hasOwnProperty(key)) {
249
+ let customProps = customMapping[key](value);
250
+ customProps != null && Object.assign(props, customProps);
251
+ continue;
252
+ }
253
+ value === !0 ? props[`data-${key.toLowerCase()}`] = "" : value && (props[`data-${key.toLowerCase()}`] = value.toString());
254
+ }
255
+ return props;
256
+ }
257
+
258
+ // ../../node_modules/@base-ui/react/utils/resolveClassName.mjs
259
+ function resolveClassName(className, state) {
260
+ return typeof className == "function" ? className(state) : className;
261
+ }
262
+
263
+ // ../../node_modules/@base-ui/react/utils/resolveStyle.mjs
264
+ function resolveStyle(style, state) {
265
+ return typeof style == "function" ? style(state) : style;
266
+ }
267
+
268
+ // ../../node_modules/@base-ui/react/merge-props/mergeProps.mjs
269
+ var EMPTY_PROPS = {};
270
+ function mergeProps(a, b, c, d, e) {
271
+ if (!c && !d && !e && !a)
272
+ return createInitialMergedProps(b);
273
+ let merged = createInitialMergedProps(a);
274
+ return b && (merged = mergeInto(merged, b)), c && (merged = mergeInto(merged, c)), d && (merged = mergeInto(merged, d)), e && (merged = mergeInto(merged, e)), merged;
275
+ }
276
+ function mergePropsN(props) {
277
+ if (props.length === 0)
278
+ return EMPTY_PROPS;
279
+ if (props.length === 1)
280
+ return createInitialMergedProps(props[0]);
281
+ let merged = createInitialMergedProps(props[0]);
282
+ for (let i = 1; i < props.length; i += 1)
283
+ merged = mergeInto(merged, props[i]);
284
+ return merged;
285
+ }
286
+ function createInitialMergedProps(inputProps) {
287
+ return isPropsGetter(inputProps) ? {
288
+ ...inputProps(EMPTY_PROPS)
289
+ } : copyInitialProps(inputProps);
290
+ }
291
+ function mergeInto(merged, inputProps) {
292
+ return isPropsGetter(inputProps) ? inputProps(merged) : mutablyMergeInto(merged, inputProps);
293
+ }
294
+ function copyInitialProps(inputProps) {
295
+ let copiedProps = {
296
+ ...inputProps
297
+ };
298
+ for (let propName in copiedProps) {
299
+ let propValue = copiedProps[propName];
300
+ isEventHandler(propName, propValue) && (copiedProps[propName] = wrapEventHandler(propValue));
301
+ }
302
+ return copiedProps;
303
+ }
304
+ function mutablyMergeInto(mergedProps, externalProps) {
305
+ if (!externalProps)
306
+ return mergedProps;
307
+ for (let propName in externalProps) {
308
+ let externalPropValue = externalProps[propName];
309
+ switch (propName) {
310
+ case "style": {
311
+ mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
312
+ break;
313
+ }
314
+ case "className": {
315
+ mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
316
+ break;
317
+ }
318
+ default:
319
+ isEventHandler(propName, externalPropValue) ? mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue) : mergedProps[propName] = externalPropValue;
320
+ }
321
+ }
322
+ return mergedProps;
323
+ }
324
+ function isEventHandler(key, value) {
325
+ let code0 = key.charCodeAt(0), code1 = key.charCodeAt(1), code2 = key.charCodeAt(2);
326
+ return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value == "function" || typeof value > "u");
327
+ }
328
+ function isPropsGetter(inputProps) {
329
+ return typeof inputProps == "function";
330
+ }
331
+ function mergeEventHandlers(ourHandler, theirHandler) {
332
+ return theirHandler ? ourHandler ? (...args) => {
333
+ let event = args[0];
334
+ if (isSyntheticEvent(event)) {
335
+ let baseUIEvent = event;
336
+ makeEventPreventable(baseUIEvent);
337
+ let result2 = theirHandler(...args);
338
+ return baseUIEvent.baseUIHandlerPrevented || ourHandler?.(...args), result2;
339
+ }
340
+ let result = theirHandler(...args);
341
+ return ourHandler?.(...args), result;
342
+ } : wrapEventHandler(theirHandler) : ourHandler;
343
+ }
344
+ function wrapEventHandler(handler) {
345
+ return handler && ((...args) => {
346
+ let event = args[0];
347
+ return isSyntheticEvent(event) && makeEventPreventable(event), handler(...args);
348
+ });
349
+ }
350
+ function makeEventPreventable(event) {
351
+ return event.preventBaseUIHandler = () => {
352
+ event.baseUIHandlerPrevented = !0;
353
+ }, event;
354
+ }
355
+ function mergeClassNames(ourClassName, theirClassName) {
356
+ return theirClassName ? ourClassName ? theirClassName + " " + ourClassName : theirClassName : ourClassName;
357
+ }
358
+ function isSyntheticEvent(event) {
359
+ return event != null && typeof event == "object" && "nativeEvent" in event;
360
+ }
361
+
362
+ // ../../node_modules/@base-ui/react/internals/useRenderElement.mjs
363
+ import { createElement as _createElement } from "react";
364
+ function useRenderElement(element, componentProps, params = {}) {
365
+ let renderProp = componentProps.render;
366
+ params.enabled !== !1 && (renderProp = unwrapLazyRenderProp(renderProp));
367
+ let outProps = useRenderElementProps(componentProps, params, renderProp);
368
+ if (params.enabled === !1)
369
+ return null;
370
+ let state = params.state ?? EMPTY_OBJECT;
371
+ return evaluateRenderProp(element, renderProp, outProps, state);
372
+ }
373
+ function useRenderElementProps(componentProps, params, renderProp) {
374
+ let {
375
+ className: classNameProp,
376
+ style: styleProp
377
+ } = componentProps, {
378
+ state = EMPTY_OBJECT,
379
+ ref,
380
+ props,
381
+ stateAttributesMapping: stateAttributesMapping3,
382
+ enabled = !0
383
+ } = params, className = enabled ? resolveClassName(classNameProp, state) : void 0, style = enabled ? resolveStyle(styleProp, state) : void 0, stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping3) : EMPTY_OBJECT, resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0, outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
384
+ return typeof document < "u" && (enabled ? Array.isArray(ref) ? outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]) : outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref) : useMergedRefs(null, null)), enabled ? (className !== void 0 && (outProps.className = mergeClassNames(outProps.className, className)), style !== void 0 && (outProps.style = mergeObjects(outProps.style, style)), outProps) : EMPTY_OBJECT;
385
+ }
386
+ function resolveRenderFunctionProps(props) {
387
+ return Array.isArray(props) ? mergePropsN(props) : mergeProps(void 0, props);
388
+ }
389
+ var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"), COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/, LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
390
+ function unwrapLazyRenderProp(render) {
391
+ if (render?.$$typeof !== REACT_LAZY_TYPE)
392
+ return render;
393
+ let unwrapped = React7.Children.toArray(render)[0];
394
+ return React7.isValidElement(unwrapped) ? unwrapped : render;
395
+ }
396
+ function evaluateRenderProp(element, render, props, state) {
397
+ if (render) {
398
+ if (typeof render == "function")
399
+ return process.env.NODE_ENV !== "production" && warnIfRenderPropLooksLikeComponent(render), render(props, state);
400
+ let mergedProps = mergeProps(props, render.props);
401
+ if (mergedProps.ref = props.ref, process.env.NODE_ENV !== "production" && !React7.isValidElement(render))
402
+ throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join(`
403
+ `));
404
+ return React7.cloneElement(render, mergedProps);
405
+ }
406
+ return renderTag(element, props);
407
+ }
408
+ function warnIfRenderPropLooksLikeComponent(renderFn) {
409
+ let functionName = renderFn.name;
410
+ functionName.length !== 0 && COMPONENT_IDENTIFIER_PATTERN.test(functionName) && LOWERCASE_CHARACTER_PATTERN.test(functionName) && warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop");
411
+ }
412
+ function renderTag(Tag, props) {
413
+ return Tag === "button" ? _createElement("button", {
414
+ type: "button",
415
+ ...props,
416
+ key: props.key
417
+ }) : Tag === "img" ? _createElement("img", {
418
+ alt: "",
419
+ ...props,
420
+ key: props.key
421
+ }) : React7.createElement(Tag, props);
422
+ }
423
+
424
+ // ../../node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
425
+ import * as React9 from "react";
426
+
427
+ // ../../node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs
428
+ import * as React8 from "react";
429
+ var CompositeListContext = React8.createContext({
430
+ register: () => {
431
+ },
432
+ unregister: () => {
433
+ },
434
+ subscribeMapChange: () => () => {
435
+ },
436
+ nextIndexRef: {
437
+ current: 0
438
+ }
439
+ });
440
+ process.env.NODE_ENV !== "production" && (CompositeListContext.displayName = "CompositeListContext");
441
+ function useCompositeListContext() {
442
+ return React8.useContext(CompositeListContext);
443
+ }
444
+
445
+ // ../../node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
446
+ import { jsx as _jsx } from "react/jsx-runtime";
447
+ function CompositeList(props) {
448
+ let {
449
+ children,
450
+ elementsRef,
451
+ labelsRef,
452
+ onMapChange: onMapChangeProp
453
+ } = props, onMapChange = useStableCallback(onMapChangeProp), [, setMapTick] = React9.useState(0), listeners = useRefWithInit(createListeners).current, map = useRefWithInit(createMap).current, nextIndexRef = React9.useRef(0), isDirtyRef = React9.useRef(!0), itemsRef = React9.useRef(null), mutationObserverRef = React9.useRef(null), scheduleMapUpdate = useStableCallback(() => {
454
+ isDirtyRef.current || (isDirtyRef.current = !0, setMapTick((tick) => tick + 1));
455
+ }), register = useStableCallback((node, registration) => {
456
+ map.set(node, registration), scheduleMapUpdate();
457
+ }), unregister = useStableCallback((node) => {
458
+ map.delete(node), scheduleMapUpdate();
459
+ }), syncRefs = useStableCallback((items) => {
460
+ let nextMap = /* @__PURE__ */ new Map();
461
+ return elementsRef.current.length = 0, labelsRef && (labelsRef.current.length = 0), items.forEach((item) => {
462
+ nextMap.set(item.element, {
463
+ ...item.registration.metadata ?? {},
464
+ index: item.index
465
+ }), elementsRef.current[item.index] = item.element, labelsRef && (labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent);
466
+ }), nextIndexRef.current = elementsRef.current.length, nextMap;
467
+ });
468
+ function observe(sortedNodes) {
469
+ if (mutationObserverRef.current?.disconnect(), mutationObserverRef.current = null, typeof MutationObserver != "function" || sortedNodes.length < 2)
470
+ return;
471
+ let mutationObserver = new MutationObserver((entries) => {
472
+ if (!hasMovedNode(entries))
473
+ return;
474
+ let previousConnectedNode = null;
475
+ for (let node of sortedNodes)
476
+ if (node.isConnected) {
477
+ if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {
478
+ mutationObserver.disconnect(), scheduleMapUpdate();
479
+ return;
480
+ }
481
+ previousConnectedNode = node;
482
+ }
483
+ });
484
+ mutationObserverRef.current = mutationObserver;
485
+ let roots = /* @__PURE__ */ new Set();
486
+ for (let i = 1; i < sortedNodes.length; i += 1) {
487
+ let root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]);
488
+ root && roots.add(root);
489
+ }
490
+ roots.forEach((root) => mutationObserver.observe(root, {
491
+ childList: !0
492
+ }));
493
+ }
494
+ let flush = useStableCallback(() => {
495
+ let [items, automaticNodes] = getCompositeListSnapshot(map), nextMap = syncRefs(items), previousItems = itemsRef.current, changed = !previousItems || previousItems.length !== items.length || items.some((item, index2) => {
496
+ let previousItem = previousItems[index2];
497
+ return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata;
498
+ });
499
+ observe(automaticNodes), itemsRef.current = items, isDirtyRef.current = !1, changed && (listeners.forEach((listener) => listener(nextMap)), onMapChange(nextMap));
500
+ });
501
+ useIsoLayoutEffect(() => (!isDirtyRef.current && itemsRef.current && syncRefs(itemsRef.current), () => {
502
+ elementsRef.current = [], labelsRef && (labelsRef.current = []);
503
+ }), [elementsRef, labelsRef, syncRefs]), useIsoLayoutEffect(() => {
504
+ isDirtyRef.current && flush();
505
+ }), useIsoLayoutEffect(() => () => {
506
+ mutationObserverRef.current?.disconnect(), isDirtyRef.current = !0;
507
+ }, []);
508
+ let subscribeMapChange = useStableCallback((fn) => (listeners.add(fn), () => {
509
+ listeners.delete(fn);
510
+ })), contextValue = React9.useMemo(() => ({
511
+ register,
512
+ unregister,
513
+ subscribeMapChange,
514
+ nextIndexRef
515
+ }), [register, unregister, subscribeMapChange, nextIndexRef]);
516
+ return _jsx(CompositeListContext.Provider, {
517
+ value: contextValue,
518
+ children
519
+ });
520
+ }
521
+ function createMap() {
522
+ return /* @__PURE__ */ new Map();
523
+ }
524
+ function createListeners() {
525
+ return /* @__PURE__ */ new Set();
526
+ }
527
+ function getCompositeListSnapshot(map) {
528
+ let reservedIndices = /* @__PURE__ */ new Set(), items = [], automaticItems = [];
529
+ map.forEach((registration, node) => {
530
+ if (!node.isConnected)
531
+ return;
532
+ let index2 = registration.index, item = {
533
+ index: index2 ?? -1,
534
+ element: node,
535
+ registration
536
+ };
537
+ index2 === null ? automaticItems.push(item) : index2 >= 0 && (reservedIndices.add(index2), items.push(item));
538
+ });
539
+ let nextAutomaticIndex = 0;
540
+ return automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)), automaticItems.forEach((item) => {
541
+ for (; reservedIndices.has(nextAutomaticIndex); )
542
+ nextAutomaticIndex += 1;
543
+ item.index = nextAutomaticIndex, items.push(item), nextAutomaticIndex += 1;
544
+ }), reservedIndices.size > 0 && items.sort((a, b) => a.index - b.index), [items, automaticItems.map((item) => item.element)];
545
+ }
546
+ function getCommonAncestor(firstNode, lastNode) {
547
+ let ancestor = firstNode.parentElement;
548
+ for (; ancestor && !ancestor.contains(lastNode); )
549
+ ancestor = ancestor.parentElement;
550
+ return ancestor;
551
+ }
552
+ function hasMovedNode(entries) {
553
+ for (let entry of entries)
554
+ for (let i = 0; i < entry.removedNodes.length; i += 1)
555
+ if (entry.removedNodes[i].isConnected)
556
+ return !0;
557
+ return !1;
558
+ }
559
+ function sortByDocumentPosition(a, b) {
560
+ return a.nextElementSibling === b ? -1 : b.nextElementSibling === a ? 1 : a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
561
+ }
562
+
563
+ // ../../node_modules/@base-ui/utils/formatErrorMessage.mjs
564
+ function createFormatErrorMessage(baseUrl, prefix) {
565
+ return function(code, ...args) {
566
+ let url = new URL(baseUrl);
567
+ return url.searchParams.set("code", code.toString()), args.forEach((arg) => url.searchParams.append("args[]", arg)), `${prefix} error #${code}; visit ${url} for the full message.`;
568
+ };
569
+ }
570
+ var formatErrorMessage = createFormatErrorMessage("https://base-ui.com/production-error", "Base UI"), formatErrorMessage_default = formatErrorMessage;
571
+
572
+ // ../../node_modules/@base-ui/react/tabs/root/TabsRootContext.mjs
573
+ import * as React10 from "react";
574
+ var TabsRootContext = React10.createContext(void 0);
575
+ process.env.NODE_ENV !== "production" && (TabsRootContext.displayName = "TabsRootContext");
576
+ function useTabsRootContext() {
577
+ let context = React10.useContext(TabsRootContext);
578
+ if (context === void 0)
579
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: TabsRootContext is missing. Tabs parts must be placed within <Tabs.Root>." : formatErrorMessage_default(64));
580
+ return context;
581
+ }
582
+
583
+ // ../../node_modules/@base-ui/react/tabs/root/TabsRootDataAttributes.mjs
584
+ var activationDirection = "data-activation-direction";
585
+
586
+ // ../../node_modules/@base-ui/react/tabs/root/stateAttributesMapping.mjs
587
+ var tabsStateAttributesMapping = {
588
+ tabActivationDirection: (dir) => ({
589
+ [activationDirection]: dir
590
+ })
591
+ };
592
+
593
+ // ../../node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs
594
+ function createChangeEventDetails(reason, event, trigger, customProperties) {
595
+ let canceled = !1, allowPropagation = !1, custom = customProperties ?? EMPTY_OBJECT;
596
+ return {
597
+ reason,
598
+ event: event ?? new Event("base-ui"),
599
+ cancel() {
600
+ canceled = !0;
601
+ },
602
+ allowPropagation() {
603
+ allowPropagation = !0;
604
+ },
605
+ get isCanceled() {
606
+ return canceled;
607
+ },
608
+ get isPropagationAllowed() {
609
+ return allowPropagation;
610
+ },
611
+ trigger,
612
+ ...custom
613
+ };
614
+ }
615
+
616
+ // ../../node_modules/@base-ui/react/internals/reason-parts.mjs
617
+ var reason_parts_exports = {};
618
+ __export(reason_parts_exports, {
619
+ cancelOpen: () => cancelOpen,
620
+ chipRemovePress: () => chipRemovePress,
621
+ clearPress: () => clearPress,
622
+ closePress: () => closePress,
623
+ closeWatcher: () => closeWatcher,
624
+ decrementPress: () => decrementPress,
625
+ disabled: () => disabled,
626
+ drag: () => drag,
627
+ escapeKey: () => escapeKey,
628
+ focusOut: () => focusOut,
629
+ imperativeAction: () => imperativeAction,
630
+ incrementPress: () => incrementPress,
631
+ initial: () => initial,
632
+ inputBlur: () => inputBlur,
633
+ inputChange: () => inputChange,
634
+ inputClear: () => inputClear,
635
+ inputPaste: () => inputPaste,
636
+ inputPress: () => inputPress,
637
+ itemPress: () => itemPress,
638
+ keyboard: () => keyboard,
639
+ linkPress: () => linkPress,
640
+ listNavigation: () => listNavigation,
641
+ missing: () => missing,
642
+ none: () => none,
643
+ outsidePress: () => outsidePress,
644
+ pointer: () => pointer,
645
+ popupClose: () => popupClose,
646
+ scrub: () => scrub,
647
+ siblingOpen: () => siblingOpen,
648
+ swipe: () => swipe,
649
+ trackPress: () => trackPress,
650
+ triggerFocus: () => triggerFocus,
651
+ triggerHover: () => triggerHover,
652
+ triggerPress: () => triggerPress,
653
+ wheel: () => wheel,
654
+ windowResize: () => windowResize
655
+ });
656
+ var none = "none", triggerPress = "trigger-press", triggerHover = "trigger-hover", triggerFocus = "trigger-focus", outsidePress = "outside-press", itemPress = "item-press", closePress = "close-press", linkPress = "link-press", clearPress = "clear-press", chipRemovePress = "chip-remove-press", trackPress = "track-press", incrementPress = "increment-press", decrementPress = "decrement-press", inputChange = "input-change", inputClear = "input-clear", inputBlur = "input-blur", inputPaste = "input-paste", inputPress = "input-press", focusOut = "focus-out", escapeKey = "escape-key", closeWatcher = "close-watcher", listNavigation = "list-navigation", keyboard = "keyboard", pointer = "pointer", drag = "drag", wheel = "wheel", scrub = "scrub", popupClose = "popup-close", cancelOpen = "cancel-open", siblingOpen = "sibling-open", disabled = "disabled", missing = "missing", initial = "initial", imperativeAction = "imperative-action", swipe = "swipe", windowResize = "window-resize";
657
+
658
+ // ../../node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
659
+ import { jsx as _jsx2 } from "react/jsx-runtime";
660
+ var TabsRoot = React11.forwardRef(function(componentProps, forwardedRef) {
661
+ let {
662
+ className,
663
+ defaultValue: defaultValueProp = 0,
664
+ onValueChange: onValueChangeProp,
665
+ orientation = "horizontal",
666
+ render,
667
+ value: valueProp,
668
+ style,
669
+ ...elementProps
670
+ } = componentProps, hasExplicitDefaultValueProp = componentProps.defaultValue !== void 0, tabPanelRefs = React11.useRef([]), [mountedTabPanels, setMountedTabPanels] = React11.useState(() => /* @__PURE__ */ new Map()), [value, setValue] = useControlled({
671
+ controlled: valueProp,
672
+ default: defaultValueProp,
673
+ name: "Tabs",
674
+ state: "value"
675
+ }), isControlled = valueProp !== void 0, [tabMap, setTabMap] = React11.useState(() => /* @__PURE__ */ new Map()), lastKnownTabElementRef = React11.useRef(void 0), getTabElementBySelectedValue = React11.useCallback((selectedValue) => findTabElement(tabMap, selectedValue), [tabMap]), [activationDirectionState, setActivationDirectionState] = React11.useState(() => ({
676
+ previousValue: value,
677
+ tabActivationDirection: "none"
678
+ })), {
679
+ previousValue,
680
+ tabActivationDirection: committedTabActivationDirection
681
+ } = activationDirectionState, tabActivationDirection = committedTabActivationDirection, directionComputationIncomplete = !1;
682
+ previousValue !== value && (tabActivationDirection = computeActivationDirection(previousValue, value, orientation, tabMap), directionComputationIncomplete = previousValue != null && value != null && getTabElementBySelectedValue(value) == null);
683
+ let nextPreviousValue = directionComputationIncomplete ? previousValue : value, shouldSyncActivationDirectionState = previousValue !== nextPreviousValue || committedTabActivationDirection !== tabActivationDirection;
684
+ useIsoLayoutEffect(() => {
685
+ shouldSyncActivationDirectionState && setActivationDirectionState({
686
+ previousValue: nextPreviousValue,
687
+ tabActivationDirection
688
+ });
689
+ }, [nextPreviousValue, shouldSyncActivationDirectionState, tabActivationDirection]);
690
+ let onValueChange = useStableCallback((newValue, eventDetails) => {
691
+ let activationDirection2 = computeActivationDirection(value, newValue, orientation, tabMap);
692
+ eventDetails.activationDirection = activationDirection2, onValueChangeProp?.(newValue, eventDetails), !eventDetails.isCanceled && setValue(() => newValue);
693
+ }), notifyAutomaticValueChange = useStableCallback((nextValue, reason) => {
694
+ onValueChangeProp?.(nextValue, createChangeEventDetails(reason, void 0, void 0, {
695
+ activationDirection: "none"
696
+ }));
697
+ }), registerMountedTabPanel = useStableCallback((panelValue, panelId) => (setMountedTabPanels((prev) => {
698
+ let next = new Map(prev);
699
+ return next.set(panelValue, panelId), next;
700
+ }), () => {
701
+ setMountedTabPanels((prev) => {
702
+ if (prev.get(panelValue) !== panelId)
703
+ return prev;
704
+ let next = new Map(prev);
705
+ return next.delete(panelValue), next;
706
+ });
707
+ })), getTabPanelIdByValue = React11.useCallback((tabValue) => mountedTabPanels.get(tabValue), [mountedTabPanels]), getTabIdByPanelValue = React11.useCallback((tabPanelValue) => {
708
+ for (let tabMetadata of tabMap.values())
709
+ if (tabPanelValue === tabMetadata.value)
710
+ return tabMetadata.id;
711
+ }, [tabMap]), tabsContextValue = React11.useMemo(() => ({
712
+ getTabElementBySelectedValue,
713
+ getTabIdByPanelValue,
714
+ getTabPanelIdByValue,
715
+ onValueChange,
716
+ orientation,
717
+ registerMountedTabPanel,
718
+ setTabMap,
719
+ tabActivationDirection,
720
+ value
721
+ }), [getTabElementBySelectedValue, getTabIdByPanelValue, getTabPanelIdByValue, onValueChange, orientation, registerMountedTabPanel, setTabMap, tabActivationDirection, value]), selectedTabMetadata = React11.useMemo(() => {
722
+ for (let tabMetadata of tabMap.values())
723
+ if (tabMetadata.value === value)
724
+ return tabMetadata;
725
+ }, [tabMap, value]), firstEnabledTabValue = React11.useMemo(() => {
726
+ for (let tabMetadata of tabMap.values())
727
+ if (!tabMetadata.disabled)
728
+ return tabMetadata.value;
729
+ }, [tabMap]), shouldNotifyInitialValueChangeRef = React11.useRef(!hasExplicitDefaultValueProp), initialDefaultValueRef = React11.useRef(defaultValueProp), shouldHonorDisabledDefaultValueRef = React11.useRef(hasExplicitDefaultValueProp), didRegisterTabsRef = React11.useRef(!1);
730
+ useIsoLayoutEffect(() => {
731
+ if (isControlled)
732
+ return;
733
+ function commitAutomaticValueChange(fallbackValue, fallbackReason) {
734
+ setValue(() => fallbackValue), setActivationDirectionState({
735
+ previousValue: fallbackValue,
736
+ tabActivationDirection: "none"
737
+ }), notifyAutomaticValueChange(fallbackValue, fallbackReason), shouldNotifyInitialValueChangeRef.current = !1;
738
+ }
739
+ if (tabMap.size === 0) {
740
+ didRegisterTabsRef.current && value !== null && !lastKnownTabElementRef.current?.isConnected && commitAutomaticValueChange(null, reason_parts_exports.missing);
741
+ return;
742
+ }
743
+ didRegisterTabsRef.current = !0, lastKnownTabElementRef.current = tabMap.keys().next().value;
744
+ let selectionIsDisabled = selectedTabMetadata?.disabled, selectionIsMissing = selectedTabMetadata == null && value !== null;
745
+ if (!selectionIsDisabled && value === initialDefaultValueRef.current && (shouldHonorDisabledDefaultValueRef.current = !1), shouldHonorDisabledDefaultValueRef.current && selectionIsDisabled && value === initialDefaultValueRef.current)
746
+ return;
747
+ let shouldNotifyInitialValueChange = shouldNotifyInitialValueChangeRef.current;
748
+ if (selectionIsDisabled || selectionIsMissing) {
749
+ let fallbackValue = firstEnabledTabValue ?? null;
750
+ if (value === fallbackValue) {
751
+ shouldNotifyInitialValueChangeRef.current = !1;
752
+ return;
753
+ }
754
+ let fallbackReason = reason_parts_exports.missing;
755
+ shouldNotifyInitialValueChange ? fallbackReason = reason_parts_exports.initial : selectionIsDisabled && (fallbackReason = reason_parts_exports.disabled), commitAutomaticValueChange(fallbackValue, fallbackReason);
756
+ return;
757
+ }
758
+ shouldNotifyInitialValueChange && selectedTabMetadata != null && (notifyAutomaticValueChange(value, reason_parts_exports.initial), shouldNotifyInitialValueChangeRef.current = !1);
759
+ }, [firstEnabledTabValue, isControlled, notifyAutomaticValueChange, selectedTabMetadata, setValue, tabMap, value]);
760
+ let element = useRenderElement("div", componentProps, {
761
+ state: {
762
+ orientation,
763
+ tabActivationDirection
764
+ },
765
+ ref: forwardedRef,
766
+ props: elementProps,
767
+ stateAttributesMapping: tabsStateAttributesMapping
768
+ });
769
+ return _jsx2(TabsRootContext.Provider, {
770
+ value: tabsContextValue,
771
+ children: _jsx2(CompositeList, {
772
+ elementsRef: tabPanelRefs,
773
+ children: element
774
+ })
775
+ });
776
+ });
777
+ process.env.NODE_ENV !== "production" && (TabsRoot.displayName = "TabsRoot");
778
+ function findTabElement(tabMap, value) {
779
+ for (let [tabElement, tabMetadata] of tabMap.entries())
780
+ if (value === tabMetadata.value)
781
+ return tabElement;
782
+ return null;
783
+ }
784
+ function computeActivationDirection(oldValue, newValue, orientation, tabMap) {
785
+ if (oldValue == null || newValue == null)
786
+ return "none";
787
+ let [positionProp, backward, forward] = orientation === "horizontal" ? ["left", "left", "right"] : ["top", "up", "down"], oldTab = findTabElement(tabMap, oldValue), newTab = findTabElement(tabMap, newValue);
788
+ if (oldTab == null || newTab == null)
789
+ return oldTab !== newTab && (typeof oldValue == "number" || typeof oldValue == "string") && typeof oldValue == typeof newValue ? newValue > oldValue ? forward : backward : "none";
790
+ let oldPosition = oldTab.getBoundingClientRect()[positionProp], newPosition = newTab.getBoundingClientRect()[positionProp];
791
+ return newPosition < oldPosition ? backward : newPosition > oldPosition ? forward : "none";
792
+ }
793
+
794
+ // ../../node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
795
+ import * as React20 from "react";
796
+
797
+ // ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
798
+ function hasWindow() {
799
+ return typeof window < "u";
800
+ }
801
+ function getNodeName(node) {
802
+ return isNode(node) ? (node.nodeName || "").toLowerCase() : "#document";
803
+ }
804
+ function getWindow(node) {
805
+ var _node$ownerDocument;
806
+ return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
807
+ }
808
+ function getDocumentElement(node) {
809
+ var _ref;
810
+ return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
811
+ }
812
+ function isNode(value) {
813
+ return hasWindow() ? value instanceof Node || value instanceof getWindow(value).Node : !1;
814
+ }
815
+ function isElement(value) {
816
+ return hasWindow() ? value instanceof Element || value instanceof getWindow(value).Element : !1;
817
+ }
818
+ function isHTMLElement(value) {
819
+ return hasWindow() ? value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement : !1;
820
+ }
821
+ function isShadowRoot(value) {
822
+ return !hasWindow() || typeof ShadowRoot > "u" ? !1 : value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
823
+ }
824
+ function isOverflowElement(element) {
825
+ let {
826
+ overflow,
827
+ overflowX,
828
+ overflowY,
829
+ display
830
+ } = getComputedStyle2(element);
831
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
832
+ }
833
+ function isTableElement(element) {
834
+ return /^(table|td|th)$/.test(getNodeName(element));
835
+ }
836
+ function isTopLayer(element) {
837
+ try {
838
+ if (element.matches(":popover-open"))
839
+ return !0;
840
+ } catch {
841
+ }
842
+ try {
843
+ return element.matches(":modal");
844
+ } catch {
845
+ return !1;
846
+ }
847
+ }
848
+ var willChangeRe = /transform|translate|scale|rotate|perspective|filter/, containRe = /paint|layout|strict|content/, isNotNone = (value) => !!value && value !== "none", isWebKitValue;
849
+ function isContainingBlock(elementOrCss) {
850
+ let css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
851
+ return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
852
+ }
853
+ function getContainingBlock(element) {
854
+ let currentNode = getParentNode(element);
855
+ for (; isHTMLElement(currentNode) && !isLastTraversableNode(currentNode); ) {
856
+ if (isContainingBlock(currentNode))
857
+ return currentNode;
858
+ if (isTopLayer(currentNode))
859
+ return null;
860
+ currentNode = getParentNode(currentNode);
861
+ }
862
+ return null;
863
+ }
864
+ function isWebKit() {
865
+ return isWebKitValue == null && (isWebKitValue = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), isWebKitValue;
866
+ }
867
+ function isLastTraversableNode(node) {
868
+ return /^(html|body|#document)$/.test(getNodeName(node));
869
+ }
870
+ function getComputedStyle2(element) {
871
+ return getWindow(element).getComputedStyle(element);
872
+ }
873
+ function getNodeScroll(element) {
874
+ return isElement(element) ? {
875
+ scrollLeft: element.scrollLeft,
876
+ scrollTop: element.scrollTop
877
+ } : {
878
+ scrollLeft: element.scrollX,
879
+ scrollTop: element.scrollY
880
+ };
881
+ }
882
+ function getParentNode(node) {
883
+ if (getNodeName(node) === "html")
884
+ return node;
885
+ let result = (
886
+ // Step into the shadow DOM of the parent of a slotted node.
887
+ node.assignedSlot || // DOM Element detected.
888
+ node.parentNode || // ShadowRoot detected.
889
+ isShadowRoot(node) && node.host || // Fallback.
890
+ getDocumentElement(node)
891
+ );
892
+ return isShadowRoot(result) ? result.host : result;
893
+ }
894
+ function getNearestOverflowAncestor(node) {
895
+ let parentNode = getParentNode(node);
896
+ return isLastTraversableNode(parentNode) ? (node.ownerDocument || node).body : isHTMLElement(parentNode) && isOverflowElement(parentNode) ? parentNode : getNearestOverflowAncestor(parentNode);
897
+ }
898
+ function getOverflowAncestors(node, list, traverseIframes) {
899
+ var _node$ownerDocument2;
900
+ list === void 0 && (list = []), traverseIframes === void 0 && (traverseIframes = !0);
901
+ let scrollableAncestor = getNearestOverflowAncestor(node), isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body), win = getWindow(scrollableAncestor);
902
+ if (isBody) {
903
+ let frameElement = getFrameElement(win);
904
+ return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
905
+ } else
906
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
907
+ }
908
+ function getFrameElement(win) {
909
+ return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
910
+ }
911
+
912
+ // ../../node_modules/@base-ui/utils/owner.mjs
913
+ function ownerDocument(node) {
914
+ return node?.ownerDocument || document;
915
+ }
916
+
917
+ // ../../node_modules/@base-ui/utils/useId.mjs
918
+ import * as React13 from "react";
919
+
920
+ // ../../node_modules/@base-ui/utils/useForcedRerendering.mjs
921
+ import * as React12 from "react";
922
+ function useForcedRerendering() {
923
+ let [, setState] = React12.useState({});
924
+ return React12.useCallback(() => {
925
+ setState({});
926
+ }, []);
927
+ }
928
+
929
+ // ../../node_modules/@base-ui/utils/useId.mjs
930
+ var globalId = 0;
931
+ function useGlobalId(idOverride, prefix = "mui") {
932
+ let defaultId = React13.useRef(void 0), forceRerender = useForcedRerendering(), id = idOverride ?? defaultId.current;
933
+ return React13.useEffect(() => {
934
+ defaultId.current == null && (globalId += 1, defaultId.current = `${prefix}-${globalId}`, idOverride == null && forceRerender());
935
+ }, [idOverride, prefix, forceRerender]), id;
936
+ }
937
+ var maybeReactUseId = SafeReact.useId;
938
+ function useId(idOverride, prefix) {
939
+ if (maybeReactUseId !== void 0) {
940
+ let reactId = maybeReactUseId();
941
+ return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);
942
+ }
943
+ return useGlobalId(idOverride, prefix);
944
+ }
945
+
946
+ // ../../node_modules/@base-ui/react/internals/useBaseUiId.mjs
947
+ function useBaseUiId(idOverride) {
948
+ return useId(idOverride, "base-ui");
949
+ }
950
+
951
+ // ../../node_modules/@base-ui/react/internals/use-button/useButton.mjs
952
+ import * as React16 from "react";
953
+
954
+ // ../../node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs
955
+ import * as React14 from "react";
956
+ var CompositeRootContext = React14.createContext(void 0);
957
+ process.env.NODE_ENV !== "production" && (CompositeRootContext.displayName = "CompositeRootContext");
958
+ function useCompositeRootContext(optional = !1) {
959
+ let context = React14.useContext(CompositeRootContext);
960
+ if (context === void 0 && !optional)
961
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16));
962
+ return context;
963
+ }
964
+
965
+ // ../../node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs
966
+ import * as React15 from "react";
967
+ function useFocusableWhenDisabled(parameters) {
968
+ let {
969
+ focusableWhenDisabled,
970
+ disabled: disabled2,
971
+ composite = !1,
972
+ tabIndex: tabIndexProp = 0,
973
+ isNativeButton
974
+ } = parameters, isFocusableComposite = composite && focusableWhenDisabled !== !1, isNonFocusableComposite = composite && focusableWhenDisabled === !1;
975
+ return {
976
+ props: React15.useMemo(() => {
977
+ let additionalProps = {
978
+ // allow Tabbing away from focusableWhenDisabled elements
979
+ onKeyDown(event) {
980
+ disabled2 && focusableWhenDisabled && event.key !== "Tab" && event.preventDefault();
981
+ }
982
+ };
983
+ return composite || (additionalProps.tabIndex = tabIndexProp, !isNativeButton && disabled2 && (additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1)), (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) && (additionalProps["aria-disabled"] = disabled2), isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite) && (additionalProps.disabled = disabled2), additionalProps;
984
+ }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp])
985
+ };
986
+ }
987
+
988
+ // ../../node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs
989
+ function dispatchClickWithModifiers(target, sourceEvent, {
990
+ detail = 0,
991
+ pointerType = ""
992
+ } = {}) {
993
+ target.dispatchEvent(new (getWindow(target)).PointerEvent("click", {
994
+ bubbles: !0,
995
+ cancelable: !0,
996
+ composed: !0,
997
+ detail,
998
+ pointerType,
999
+ shiftKey: sourceEvent.shiftKey,
1000
+ ctrlKey: sourceEvent.ctrlKey,
1001
+ altKey: sourceEvent.altKey,
1002
+ metaKey: sourceEvent.metaKey
1003
+ }));
1004
+ }
1005
+
1006
+ // ../../node_modules/@base-ui/react/internals/use-button/useButton.mjs
1007
+ function useButton(parameters = {}) {
1008
+ let {
1009
+ disabled: disabled2 = !1,
1010
+ focusableWhenDisabled,
1011
+ tabIndex = 0,
1012
+ native: isNativeButton = !0,
1013
+ composite: compositeProp
1014
+ } = parameters, elementRef = React16.useRef(null), compositeRootContext = useCompositeRootContext(!0), isCompositeItem = compositeProp ?? compositeRootContext !== void 0, {
1015
+ props: focusableWhenDisabledProps
1016
+ } = useFocusableWhenDisabled({
1017
+ focusableWhenDisabled,
1018
+ disabled: disabled2,
1019
+ composite: isCompositeItem,
1020
+ tabIndex,
1021
+ isNativeButton
1022
+ });
1023
+ process.env.NODE_ENV !== "production" && React16.useEffect(() => {
1024
+ if (!elementRef.current)
1025
+ return;
1026
+ let isButtonTag = isButtonElement(elementRef.current);
1027
+ if (isNativeButton) {
1028
+ if (!isButtonTag) {
1029
+ let ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
1030
+ error(`A component that acts as a button expected a native <button> because the \`nativeButton\` prop is true. Rendering a non-<button> removes native button semantics, which can impact forms and accessibility. Use a real <button> in the \`render\` prop, or set \`nativeButton\` to \`false\`.${ownerStackMessage}`);
1031
+ }
1032
+ } else if (isButtonTag) {
1033
+ let ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
1034
+ error(`A component that acts as a button expected a non-<button> because the \`nativeButton\` prop is false. Rendering a <button> keeps native behavior while Base UI applies non-native attributes and handlers, which can add unintended extra attributes (such as \`role\` or \`aria-disabled\`). Use a non-<button> in the \`render\` prop, or set \`nativeButton\` to \`true\`.${ownerStackMessage}`);
1035
+ }
1036
+ }, [isNativeButton]);
1037
+ let updateDisabled = React16.useCallback(() => {
1038
+ let element = elementRef.current;
1039
+ isButtonElement(element) && isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled && (element.disabled = !1);
1040
+ }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]);
1041
+ useIsoLayoutEffect(updateDisabled, [updateDisabled]);
1042
+ let getButtonProps = React16.useCallback((externalProps = {}) => {
1043
+ let {
1044
+ onClick: externalOnClick,
1045
+ onMouseDown: externalOnMouseDown,
1046
+ onKeyUp: externalOnKeyUp,
1047
+ onKeyDown: externalOnKeyDown,
1048
+ onPointerDown: externalOnPointerDown,
1049
+ ...otherExternalProps
1050
+ } = externalProps;
1051
+ return mergeProps({
1052
+ onClick(event) {
1053
+ if (disabled2) {
1054
+ event.preventDefault();
1055
+ return;
1056
+ }
1057
+ externalOnClick?.(event);
1058
+ },
1059
+ onMouseDown(event) {
1060
+ disabled2 || externalOnMouseDown?.(event);
1061
+ },
1062
+ onKeyDown(event) {
1063
+ if (disabled2 || (makeEventPreventable(event), externalOnKeyDown?.(event), event.baseUIHandlerPrevented))
1064
+ return;
1065
+ let isCurrentTarget = event.target === event.currentTarget, currentTarget = event.currentTarget, isButton = isButtonElement(currentTarget), isLink = !isNativeButton && isValidLinkElement(currentTarget), shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink), isEnterKey = event.key === "Enter", isSpaceKey = event.key === " ", role = currentTarget.getAttribute("role"), isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell";
1066
+ if (isCurrentTarget && isCompositeItem && isSpaceKey) {
1067
+ if (event.defaultPrevented && isTextNavigationRole)
1068
+ return;
1069
+ event.preventDefault(), (!isNativeButton || isButton) && (event.preventBaseUIHandler(), dispatchClickWithModifiers(currentTarget, event));
1070
+ return;
1071
+ }
1072
+ if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) {
1073
+ isCurrentTarget && isLink && isSpaceKey && event.preventDefault();
1074
+ return;
1075
+ }
1076
+ event.defaultPrevented || (event.preventDefault(), isEnterKey && (event.preventBaseUIHandler(), dispatchClickWithModifiers(currentTarget, event)));
1077
+ },
1078
+ onKeyUp(event) {
1079
+ if (!disabled2) {
1080
+ if (makeEventPreventable(event), externalOnKeyUp?.(event), event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") {
1081
+ event.preventDefault();
1082
+ return;
1083
+ }
1084
+ event.baseUIHandlerPrevented || event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " " && (event.preventBaseUIHandler(), dispatchClickWithModifiers(event.currentTarget, event));
1085
+ }
1086
+ },
1087
+ onPointerDown(event) {
1088
+ if (disabled2) {
1089
+ event.preventDefault();
1090
+ return;
1091
+ }
1092
+ externalOnPointerDown?.(event);
1093
+ }
1094
+ }, isNativeButton ? {
1095
+ type: "button"
1096
+ } : {
1097
+ role: "button"
1098
+ }, focusableWhenDisabledProps, otherExternalProps);
1099
+ }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]), buttonRef = useStableCallback((element) => {
1100
+ elementRef.current = element, updateDisabled();
1101
+ });
1102
+ return {
1103
+ getButtonProps,
1104
+ buttonRef
1105
+ };
1106
+ }
1107
+ function isButtonElement(elem) {
1108
+ return isHTMLElement(elem) && elem.tagName === "BUTTON";
1109
+ }
1110
+ function isValidLinkElement(elem) {
1111
+ return isHTMLElement(elem) && elem.tagName === "A" && !!elem.href;
1112
+ }
1113
+
1114
+ // ../../node_modules/@base-ui/react/internals/composite/constants.mjs
1115
+ var ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
1116
+
1117
+ // ../../node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
1118
+ import * as React18 from "react";
1119
+
1120
+ // ../../node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs
1121
+ import * as React17 from "react";
1122
+ function useCompositeListItem(params = {}) {
1123
+ let {
1124
+ guess,
1125
+ label,
1126
+ metadata,
1127
+ textRef,
1128
+ index: externalIndex
1129
+ } = params, {
1130
+ register,
1131
+ unregister,
1132
+ subscribeMapChange,
1133
+ nextIndexRef
1134
+ } = useCompositeListContext(), indexRef = React17.useRef(-1), [internalIndex, setInternalIndex] = React17.useState(externalIndex == null && guess ? () => {
1135
+ if (indexRef.current === -1) {
1136
+ let newIndex = nextIndexRef.current;
1137
+ nextIndexRef.current += 1, indexRef.current = newIndex;
1138
+ }
1139
+ return indexRef.current;
1140
+ } : -1), index2 = externalIndex ?? internalIndex, componentRef = React17.useRef(null), ref = React17.useCallback((node) => {
1141
+ let previousNode = componentRef.current;
1142
+ previousNode && unregister(previousNode), componentRef.current = node, node && register(node, {
1143
+ metadata: metadata ?? null,
1144
+ index: externalIndex ?? null,
1145
+ label,
1146
+ textRef
1147
+ });
1148
+ }, [externalIndex, register, unregister, metadata, label, textRef]);
1149
+ return useIsoLayoutEffect(() => {
1150
+ if (externalIndex == null)
1151
+ return subscribeMapChange((map) => {
1152
+ let i = componentRef.current ? map.get(componentRef.current)?.index : null;
1153
+ i != null && setInternalIndex(i);
1154
+ });
1155
+ }, [externalIndex, subscribeMapChange]), {
1156
+ ref,
1157
+ index: index2
1158
+ };
1159
+ }
1160
+
1161
+ // ../../node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
1162
+ function useCompositeItem(params = {}) {
1163
+ let {
1164
+ highlightItemOnHover,
1165
+ highlightedIndex,
1166
+ onHighlightedIndexChange
1167
+ } = useCompositeRootContext(), {
1168
+ ref,
1169
+ index: index2
1170
+ } = useCompositeListItem(params), isHighlighted = highlightedIndex === index2, itemRef = React18.useRef(null), mergedRef = useMergedRefs(ref, itemRef);
1171
+ return {
1172
+ compositeProps: {
1173
+ tabIndex: isHighlighted ? 0 : -1,
1174
+ onFocus() {
1175
+ onHighlightedIndexChange(index2);
1176
+ },
1177
+ onMouseMove() {
1178
+ let item = itemRef.current;
1179
+ if (!highlightItemOnHover || !item)
1180
+ return;
1181
+ let disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true";
1182
+ !isHighlighted && !disabled2 && item.focus();
1183
+ }
1184
+ },
1185
+ compositeRef: mergedRef,
1186
+ index: index2
1187
+ };
1188
+ }
1189
+
1190
+ // ../../node_modules/@base-ui/react/tabs/list/TabsListContext.mjs
1191
+ import * as React19 from "react";
1192
+ var TabsListContext = React19.createContext(void 0);
1193
+ process.env.NODE_ENV !== "production" && (TabsListContext.displayName = "TabsListContext");
1194
+ function useTabsListContext() {
1195
+ let context = React19.useContext(TabsListContext);
1196
+ if (context === void 0)
1197
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: TabsListContext is missing. TabsList parts must be placed within <Tabs.List>." : formatErrorMessage_default(65));
1198
+ return context;
1199
+ }
1200
+
1201
+ // ../../node_modules/@base-ui/utils/platform/parts.mjs
1202
+ var parts_exports = {};
1203
+ __export(parts_exports, {
1204
+ engine: () => engine_exports,
1205
+ env: () => env_exports,
1206
+ mediaQuery: () => media_query_exports,
1207
+ os: () => os_exports,
1208
+ screenReader: () => screen_reader_exports
1209
+ });
1210
+
1211
+ // ../../node_modules/@base-ui/utils/platform/os.mjs
1212
+ var os_exports = {};
1213
+ __export(os_exports, {
1214
+ android: () => android,
1215
+ apple: () => apple,
1216
+ ios: () => ios,
1217
+ linux: () => linux,
1218
+ mac: () => mac,
1219
+ windows: () => windows
1220
+ });
1221
+
1222
+ // ../../node_modules/@base-ui/utils/platform/shared.mjs
1223
+ function readRawData() {
1224
+ if (typeof navigator > "u")
1225
+ return {
1226
+ userAgent: "",
1227
+ platform: "",
1228
+ maxTouchPoints: 0
1229
+ };
1230
+ if (process.env.NODE_ENV !== "production") {
1231
+ let uaData = navigator.userAgentData;
1232
+ if (uaData && Array.isArray(uaData.brands))
1233
+ return {
1234
+ userAgent: uaData.brands.map(({
1235
+ brand,
1236
+ version: version2
1237
+ }) => `${brand}/${version2}`).join(" "),
1238
+ platform: uaData.platform ?? navigator.platform ?? "",
1239
+ maxTouchPoints: navigator.maxTouchPoints ?? 0
1240
+ };
1241
+ }
1242
+ return {
1243
+ userAgent: navigator.userAgent,
1244
+ platform: navigator.platform ?? "",
1245
+ maxTouchPoints: navigator.maxTouchPoints ?? 0
1246
+ };
1247
+ }
1248
+ var {
1249
+ userAgent,
1250
+ platform,
1251
+ maxTouchPoints
1252
+ } = readRawData(), lowerUserAgent = userAgent.toLowerCase(), lowerPlatform = platform.toLowerCase();
1253
+
1254
+ // ../../node_modules/@base-ui/utils/platform/os.mjs
1255
+ var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1, ANDROID_STRING = "android", android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING), mac = !ios && lowerPlatform.startsWith("mac"), windows = lowerPlatform.startsWith("win"), linux = !android && /^(linux|chrome os)/.test(lowerPlatform), apple = mac || ios;
1256
+
1257
+ // ../../node_modules/@base-ui/utils/platform/engine.mjs
1258
+ var engine_exports = {};
1259
+ __export(engine_exports, {
1260
+ blink: () => blink,
1261
+ gecko: () => gecko,
1262
+ webkit: () => webkit
1263
+ });
1264
+ var webkit = typeof CSS < "u" && !!CSS.supports?.("-webkit-backdrop-filter:none"), gecko = !webkit && lowerUserAgent.includes("firefox"), blink = !webkit && lowerUserAgent.includes("chrom");
1265
+
1266
+ // ../../node_modules/@base-ui/utils/platform/screen-reader.mjs
1267
+ var screen_reader_exports = {};
1268
+ __export(screen_reader_exports, {
1269
+ voiceOver: () => voiceOver
1270
+ });
1271
+ var voiceOver = apple;
1272
+
1273
+ // ../../node_modules/@base-ui/utils/platform/env.mjs
1274
+ var env_exports = {};
1275
+ __export(env_exports, {
1276
+ jsdom: () => jsdom
1277
+ });
1278
+ var jsdom = /jsdom|happydom/.test(lowerUserAgent);
1279
+
1280
+ // ../../node_modules/@base-ui/utils/platform/media-query.mjs
1281
+ var media_query_exports = {};
1282
+ __export(media_query_exports, {
1283
+ iOS: () => iOS
1284
+ });
1285
+ var iOS = "@supports (-webkit-touch-callout: none)";
1286
+
1287
+ // ../../node_modules/@base-ui/utils/shadowDom.mjs
1288
+ function activeElement(doc) {
1289
+ let element = doc.activeElement;
1290
+ for (; element?.shadowRoot?.activeElement != null; )
1291
+ element = element.shadowRoot.activeElement;
1292
+ return element;
1293
+ }
1294
+ function contains(parent, child) {
1295
+ if (!parent || !child)
1296
+ return !1;
1297
+ let rootNode = child.getRootNode?.();
1298
+ if (parent.contains(child))
1299
+ return !0;
1300
+ if (rootNode && isShadowRoot(rootNode)) {
1301
+ let next = child;
1302
+ for (; next; ) {
1303
+ if (parent === next)
1304
+ return !0;
1305
+ next = next.parentNode || next.host;
1306
+ }
1307
+ }
1308
+ return !1;
1309
+ }
1310
+ function closest(node, selector) {
1311
+ let current = node;
1312
+ for (; current; ) {
1313
+ if (isElement(current) && current.matches(selector))
1314
+ return current;
1315
+ current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null);
1316
+ }
1317
+ return null;
1318
+ }
1319
+ function getTarget(event) {
1320
+ return "composedPath" in event ? event.composedPath()[0] ?? event.target : event.target;
1321
+ }
1322
+
1323
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs
1324
+ var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable";
1325
+ var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
1326
+
1327
+ // ../../node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs
1328
+ var TransitionStatusDataAttributes_exports = {};
1329
+ __export(TransitionStatusDataAttributes_exports, {
1330
+ endingStyle: () => endingStyle,
1331
+ startingStyle: () => startingStyle
1332
+ });
1333
+ var startingStyle = "data-starting-style", endingStyle = "data-ending-style";
1334
+
1335
+ // ../../node_modules/@base-ui/react/internals/stateAttributesMapping.mjs
1336
+ var STARTING_HOOK = {
1337
+ [startingStyle]: ""
1338
+ }, ENDING_HOOK = {
1339
+ [endingStyle]: ""
1340
+ }, transitionStatusMapping = {
1341
+ transitionStatus(value) {
1342
+ return value === "starting" ? STARTING_HOOK : value === "ending" ? ENDING_HOOK : null;
1343
+ }
1344
+ };
1345
+
1346
+ // ../../node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs
1347
+ var CommonPopupDataAttributes_exports = {};
1348
+ __export(CommonPopupDataAttributes_exports, {
1349
+ align: () => align,
1350
+ anchorHidden: () => anchorHidden,
1351
+ closed: () => closed,
1352
+ endingStyle: () => endingStyle2,
1353
+ open: () => open,
1354
+ side: () => side,
1355
+ startingStyle: () => startingStyle2
1356
+ });
1357
+ var open = "data-open", closed = "data-closed", startingStyle2 = startingStyle, endingStyle2 = endingStyle, anchorHidden = "data-anchor-hidden", side = "data-side", align = "data-align";
1358
+
1359
+ // ../../node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs
1360
+ var CommonTriggerDataAttributes_exports = {};
1361
+ __export(CommonTriggerDataAttributes_exports, {
1362
+ popupOpen: () => popupOpen,
1363
+ pressed: () => pressed
1364
+ });
1365
+ var popupOpen = "data-popup-open", pressed = "data-pressed";
1366
+
1367
+ // ../../node_modules/@base-ui/react/utils/popupStateMapping.mjs
1368
+ var TRIGGER_HOOK = {
1369
+ [popupOpen]: ""
1370
+ }, PRESSABLE_TRIGGER_HOOK = {
1371
+ [popupOpen]: "",
1372
+ [pressed]: ""
1373
+ }, POPUP_OPEN_HOOK = {
1374
+ [open]: ""
1375
+ }, POPUP_CLOSED_HOOK = {
1376
+ [closed]: ""
1377
+ }, ANCHOR_HIDDEN_HOOK = {
1378
+ [anchorHidden]: ""
1379
+ }, triggerOpenStateMapping = {
1380
+ open(value) {
1381
+ return value ? TRIGGER_HOOK : null;
1382
+ }
1383
+ }, pressableTriggerOpenStateMapping = {
1384
+ open(value) {
1385
+ return value ? PRESSABLE_TRIGGER_HOOK : null;
1386
+ }
1387
+ }, popupStateMapping = {
1388
+ open(value) {
1389
+ return value ? POPUP_OPEN_HOOK : POPUP_CLOSED_HOOK;
1390
+ },
1391
+ anchorHidden(value) {
1392
+ return value ? ANCHOR_HIDDEN_HOOK : null;
1393
+ }
1394
+ }, popupTransitionStateMapping = {
1395
+ ...popupStateMapping,
1396
+ ...transitionStatusMapping
1397
+ };
1398
+
1399
+ // ../../node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs
1400
+ var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen, triggerDisabled = "data-trigger-disabled";
1401
+
1402
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/element.mjs
1403
+ function isTargetInsideEnabledTrigger(target, triggerElements) {
1404
+ if (!isElement(target))
1405
+ return !1;
1406
+ let targetElement = target;
1407
+ if (triggerElements.hasElement(targetElement))
1408
+ return !targetElement.hasAttribute(triggerDisabled);
1409
+ for (let [, trigger] of triggerElements.entries())
1410
+ if (contains(trigger, targetElement))
1411
+ return !trigger.hasAttribute(triggerDisabled);
1412
+ return !1;
1413
+ }
1414
+ function isEventTargetWithin(event, node) {
1415
+ if (node == null)
1416
+ return !1;
1417
+ if ("composedPath" in event)
1418
+ return event.composedPath().includes(node);
1419
+ let eventAgain = event;
1420
+ return eventAgain.target != null && node.contains(eventAgain.target);
1421
+ }
1422
+ function isRootElement(element) {
1423
+ return element.matches("html,body");
1424
+ }
1425
+ function isTypeableElement(element) {
1426
+ return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
1427
+ }
1428
+ function isInteractiveElement(element) {
1429
+ return closest(element, `button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null;
1430
+ }
1431
+ function isTypeableCombobox(element) {
1432
+ return element ? element.getAttribute("role") === "combobox" && isTypeableElement(element) : !1;
1433
+ }
1434
+ function matchesFocusVisible(element) {
1435
+ if (!element || parts_exports.env.jsdom)
1436
+ return !0;
1437
+ try {
1438
+ return element.matches(":focus-visible");
1439
+ } catch {
1440
+ return !0;
1441
+ }
1442
+ }
1443
+ function getFloatingFocusElement(floatingElement) {
1444
+ return floatingElement ? floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[${FOCUSABLE_ATTRIBUTE}]`) || floatingElement : null;
1445
+ }
1446
+
1447
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs
1448
+ function getNodeChildren(nodes, id, onlyOpenChildren = !0) {
1449
+ return nodes.filter((node) => node.parentId === id).flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
1450
+ }
1451
+ function getNodeAncestors(nodes, id) {
1452
+ let allAncestors = [], currentParentId = nodes.find((node) => node.id === id)?.parentId;
1453
+ for (; currentParentId; ) {
1454
+ let currentNode = nodes.find((node) => node.id === currentParentId);
1455
+ currentParentId = currentNode?.parentId, currentNode && (allAncestors = allAncestors.concat(currentNode));
1456
+ }
1457
+ return allAncestors;
1458
+ }
1459
+
1460
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/event.mjs
1461
+ function stopEvent(event) {
1462
+ event.preventDefault(), event.stopPropagation();
1463
+ }
1464
+ function isReactEvent(event) {
1465
+ return "nativeEvent" in event;
1466
+ }
1467
+ function isVirtualClick(event) {
1468
+ return event.pointerType === "" && event.isTrusted ? !0 : parts_exports.os.android && event.pointerType ? event.type === "click" && event.buttons === 1 : event.detail === 0 && !event.pointerType;
1469
+ }
1470
+ function isVirtualPointerEvent(event) {
1471
+ return parts_exports.env.jsdom ? !1 : !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse
1472
+ // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop
1473
+ // mouse presses can report no pressure, so only require no pressed button off Android.
1474
+ event.type === "pointerdown" && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" && (parts_exports.os.android || event.buttons === 0) || // iOS VoiceOver returns 0.333• for width/height.
1475
+ event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
1476
+ }
1477
+ function isMouseLikePointerType(pointerType, strict) {
1478
+ let values = ["mouse", "pen"];
1479
+ return strict || values.push("", void 0), values.includes(pointerType);
1480
+ }
1481
+ function isClickLikeEvent(event) {
1482
+ let type = event.type;
1483
+ return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup";
1484
+ }
1485
+
1486
+ // ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
1487
+ var sides = ["top", "right", "bottom", "left"], alignments = ["start", "end"], placements = sides.reduce((acc, side2) => acc.concat(side2, side2 + "-" + alignments[0], side2 + "-" + alignments[1]), []), min = Math.min, max = Math.max, round = Math.round, floor = Math.floor, createCoords = (v) => ({
1488
+ x: v,
1489
+ y: v
1490
+ }), oppositeSideMap = {
1491
+ left: "right",
1492
+ right: "left",
1493
+ bottom: "top",
1494
+ top: "bottom"
1495
+ };
1496
+ function clamp(start, value, end) {
1497
+ return max(start, min(value, end));
1498
+ }
1499
+ function evaluate(value, param) {
1500
+ return typeof value == "function" ? value(param) : value;
1501
+ }
1502
+ function getSide(placement) {
1503
+ return placement.split("-")[0];
1504
+ }
1505
+ function getAlignment(placement) {
1506
+ return placement.split("-")[1];
1507
+ }
1508
+ function getOppositeAxis(axis) {
1509
+ return axis === "x" ? "y" : "x";
1510
+ }
1511
+ function getAxisLength(axis) {
1512
+ return axis === "y" ? "height" : "width";
1513
+ }
1514
+ function getSideAxis(placement) {
1515
+ let firstChar = placement[0];
1516
+ return firstChar === "t" || firstChar === "b" ? "y" : "x";
1517
+ }
1518
+ function getAlignmentAxis(placement) {
1519
+ return getOppositeAxis(getSideAxis(placement));
1520
+ }
1521
+ function getAlignmentSides(placement, rects, rtl) {
1522
+ rtl === void 0 && (rtl = !1);
1523
+ let alignment = getAlignment(placement), alignmentAxis = getAlignmentAxis(placement), length = getAxisLength(alignmentAxis), mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
1524
+ return rects.reference[length] > rects.floating[length] && (mainAlignmentSide = getOppositePlacement(mainAlignmentSide)), [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
1525
+ }
1526
+ function getExpandedPlacements(placement) {
1527
+ let oppositePlacement = getOppositePlacement(placement);
1528
+ return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
1529
+ }
1530
+ function getOppositeAlignmentPlacement(placement) {
1531
+ return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
1532
+ }
1533
+ var lrPlacement = ["left", "right"], rlPlacement = ["right", "left"], tbPlacement = ["top", "bottom"], btPlacement = ["bottom", "top"];
1534
+ function getSideList(side2, isStart, rtl) {
1535
+ switch (side2) {
1536
+ case "top":
1537
+ case "bottom":
1538
+ return rtl ? isStart ? rlPlacement : lrPlacement : isStart ? lrPlacement : rlPlacement;
1539
+ case "left":
1540
+ case "right":
1541
+ return isStart ? tbPlacement : btPlacement;
1542
+ default:
1543
+ return [];
1544
+ }
1545
+ }
1546
+ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
1547
+ let alignment = getAlignment(placement), list = getSideList(getSide(placement), direction === "start", rtl);
1548
+ return alignment && (list = list.map((side2) => side2 + "-" + alignment), flipAlignment && (list = list.concat(list.map(getOppositeAlignmentPlacement)))), list;
1549
+ }
1550
+ function getOppositePlacement(placement) {
1551
+ let side2 = getSide(placement);
1552
+ return oppositeSideMap[side2] + placement.slice(side2.length);
1553
+ }
1554
+ function expandPaddingObject(padding) {
1555
+ var _padding$top, _padding$right, _padding$bottom, _padding$left;
1556
+ return {
1557
+ top: (_padding$top = padding.top) != null ? _padding$top : 0,
1558
+ right: (_padding$right = padding.right) != null ? _padding$right : 0,
1559
+ bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
1560
+ left: (_padding$left = padding.left) != null ? _padding$left : 0
1561
+ };
1562
+ }
1563
+ function getPaddingObject(padding) {
1564
+ return typeof padding != "number" ? expandPaddingObject(padding) : {
1565
+ top: padding,
1566
+ right: padding,
1567
+ bottom: padding,
1568
+ left: padding
1569
+ };
1570
+ }
1571
+ function rectToClientRect(rect) {
1572
+ let {
1573
+ x,
1574
+ y,
1575
+ width,
1576
+ height
1577
+ } = rect;
1578
+ return {
1579
+ width,
1580
+ height,
1581
+ top: y,
1582
+ left: x,
1583
+ right: x + width,
1584
+ bottom: y + height,
1585
+ x,
1586
+ y
1587
+ };
1588
+ }
1589
+
1590
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs
1591
+ function isIndexOutOfListBounds(list, index2) {
1592
+ return index2 < 0 || index2 >= list.length;
1593
+ }
1594
+ function getMinListIndex(listRef, disabledIndices) {
1595
+ return findNonDisabledListIndex(listRef.current, {
1596
+ disabledIndices
1597
+ });
1598
+ }
1599
+ function getMaxListIndex(listRef, disabledIndices) {
1600
+ return findNonDisabledListIndex(listRef.current, {
1601
+ decrement: !0,
1602
+ startingIndex: listRef.current.length,
1603
+ disabledIndices
1604
+ });
1605
+ }
1606
+ function findNonDisabledListIndex(list, {
1607
+ startingIndex = -1,
1608
+ decrement = !1,
1609
+ disabledIndices,
1610
+ amount = 1
1611
+ } = {}) {
1612
+ let index2 = startingIndex;
1613
+ do
1614
+ index2 += decrement ? -amount : amount;
1615
+ while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices));
1616
+ return index2;
1617
+ }
1618
+ function isListIndexDisabled(list, index2, disabledIndices) {
1619
+ if (typeof disabledIndices == "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? !1)
1620
+ return !0;
1621
+ let element = list[index2];
1622
+ return element ? !isElementVisible(element) || element.matches(":disabled") ? !0 : !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true") : !1;
1623
+ }
1624
+ function isHiddenByStyles(styles) {
1625
+ return styles.visibility === "hidden" || styles.visibility === "collapse";
1626
+ }
1627
+ function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) {
1628
+ return !element || !element.isConnected || !styles || isHiddenByStyles(styles) ? !1 : typeof element.checkVisibility == "function" ? element.checkVisibility() : styles.display !== "none" && styles.display !== "contents";
1629
+ }
1630
+
1631
+ // ../../node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs
1632
+ var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
1633
+ function getParentElement(element) {
1634
+ let assignedSlot = element.assignedSlot;
1635
+ if (assignedSlot)
1636
+ return assignedSlot;
1637
+ if (element.parentElement)
1638
+ return element.parentElement;
1639
+ let rootNode = element.getRootNode();
1640
+ return isShadowRoot(rootNode) ? rootNode.host : null;
1641
+ }
1642
+ function getDetailsSummary(details) {
1643
+ for (let child of Array.from(details.children))
1644
+ if (getNodeName(child) === "summary")
1645
+ return child;
1646
+ return null;
1647
+ }
1648
+ function isWithinOpenDetailsSummary(element, details) {
1649
+ let summary = getDetailsSummary(details);
1650
+ return !!summary && (element === summary || contains(summary, element));
1651
+ }
1652
+ function isFocusableCandidate(element) {
1653
+ let nodeName = element ? getNodeName(element) : "";
1654
+ return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden");
1655
+ }
1656
+ function isFocusableElement(element) {
1657
+ if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled"))
1658
+ return !1;
1659
+ for (let current = element; current; current = getParentElement(current)) {
1660
+ let isAncestor = current !== element, isSlot = getNodeName(current) === "slot";
1661
+ if (current.hasAttribute("inert") || isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor))
1662
+ return !1;
1663
+ }
1664
+ return !0;
1665
+ }
1666
+ function isVisibleInTabbableTree(element, isAncestor) {
1667
+ let styles = getComputedStyle2(element);
1668
+ return isAncestor ? styles.display !== "none" : isElementVisible(element, styles);
1669
+ }
1670
+ function getTabIndex(element) {
1671
+ let tabIndex = element.tabIndex;
1672
+ if (tabIndex < 0) {
1673
+ let nodeName = getNodeName(element);
1674
+ if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable)
1675
+ return 0;
1676
+ }
1677
+ return tabIndex;
1678
+ }
1679
+ function getNamedRadioInput(element) {
1680
+ if (getNodeName(element) !== "input")
1681
+ return null;
1682
+ let input = element;
1683
+ return input.type === "radio" && input.name !== "" ? input : null;
1684
+ }
1685
+ function isTabbableRadio(element, candidates) {
1686
+ let input = getNamedRadioInput(element);
1687
+ if (!input)
1688
+ return !0;
1689
+ let checkedRadio = candidates.find((candidate) => {
1690
+ let radio = getNamedRadioInput(candidate);
1691
+ return radio?.name === input.name && radio.form === input.form && radio.checked;
1692
+ });
1693
+ return checkedRadio ? checkedRadio === input : candidates.find((candidate) => {
1694
+ let radio = getNamedRadioInput(candidate);
1695
+ return radio?.name === input.name && radio.form === input.form;
1696
+ }) === input;
1697
+ }
1698
+ function getComposedChildren(container) {
1699
+ if (isHTMLElement(container) && getNodeName(container) === "slot") {
1700
+ let assignedElements = container.assignedElements({
1701
+ flatten: !0
1702
+ });
1703
+ if (assignedElements.length > 0)
1704
+ return assignedElements;
1705
+ }
1706
+ return isHTMLElement(container) && container.shadowRoot ? Array.from(container.shadowRoot.children) : Array.from(container.children);
1707
+ }
1708
+ function appendCandidates(container, list) {
1709
+ getComposedChildren(container).forEach((child) => {
1710
+ isFocusableCandidate(child) && list.push(child), appendCandidates(child, list);
1711
+ });
1712
+ }
1713
+ function appendMatchingElements(container, selector, list) {
1714
+ getComposedChildren(container).forEach((child) => {
1715
+ isHTMLElement(child) && child.matches(selector) && list.push(child), appendMatchingElements(child, selector, list);
1716
+ });
1717
+ }
1718
+ function isTabbable(element) {
1719
+ return isFocusableElement(element) && getTabIndex(element) >= 0;
1720
+ }
1721
+ function focusable(container) {
1722
+ let candidates = [];
1723
+ return appendCandidates(container, candidates), candidates.filter(isFocusableElement);
1724
+ }
1725
+ function tabbable(container) {
1726
+ let candidates = focusable(container);
1727
+ return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates));
1728
+ }
1729
+ function getTabbableIn(container, dir) {
1730
+ let list = tabbable(container), len = list.length;
1731
+ if (len === 0)
1732
+ return;
1733
+ let active = activeElement(ownerDocument(container)), index2 = list.indexOf(active), nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir;
1734
+ return list[nextIndex];
1735
+ }
1736
+ function getNextTabbable(referenceElement) {
1737
+ return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement;
1738
+ }
1739
+ function getPreviousTabbable(referenceElement) {
1740
+ return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement;
1741
+ }
1742
+ function getTabbableNearElement(referenceElement, direction, exclude) {
1743
+ if (!referenceElement)
1744
+ return null;
1745
+ let list = [];
1746
+ appendCandidates(ownerDocument(referenceElement).body, list);
1747
+ let index2 = list.indexOf(referenceElement);
1748
+ if (index2 === -1)
1749
+ return null;
1750
+ let candidates = list.filter(isFocusableElement);
1751
+ for (let offset = 1; offset < list.length; offset += 1) {
1752
+ let element = list[(index2 + direction * offset + list.length) % list.length];
1753
+ if (!contains(exclude, element) && isTabbable(element) && isTabbableRadio(element, candidates))
1754
+ return element;
1755
+ }
1756
+ return list[index2];
1757
+ }
1758
+ function isOutsideEvent(event, container) {
1759
+ let containerElement = container || event.currentTarget, relatedTarget = event.relatedTarget;
1760
+ return !relatedTarget || !contains(containerElement, relatedTarget);
1761
+ }
1762
+ function disableFocusInside(container) {
1763
+ tabbable(container).forEach((element) => {
1764
+ element.dataset.tabindex = element.getAttribute("tabindex") || "", element.setAttribute("tabindex", "-1");
1765
+ });
1766
+ }
1767
+ function enableFocusInside(container) {
1768
+ let elements = [];
1769
+ appendMatchingElements(container, "[data-tabindex]", elements), elements.forEach((element) => {
1770
+ let tabindex = element.dataset.tabindex;
1771
+ delete element.dataset.tabindex, tabindex ? element.setAttribute("tabindex", tabindex) : element.removeAttribute("tabindex");
1772
+ });
1773
+ }
1774
+
1775
+ // ../../node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
1776
+ var TabsTab = React20.forwardRef(function(componentProps, forwardedRef) {
1777
+ let {
1778
+ className,
1779
+ disabled: disabled2 = !1,
1780
+ render,
1781
+ value,
1782
+ id: idProp,
1783
+ nativeButton = !0,
1784
+ style,
1785
+ ...elementProps
1786
+ } = componentProps, {
1787
+ value: activeTabValue,
1788
+ getTabPanelIdByValue,
1789
+ onValueChange,
1790
+ orientation,
1791
+ tabActivationDirection
1792
+ } = useTabsRootContext(), {
1793
+ activateOnFocus,
1794
+ registerTabResizeObserverElement,
1795
+ tabsListElement
1796
+ } = useTabsListContext(), {
1797
+ highlightedIndex,
1798
+ onHighlightedIndexChange
1799
+ } = useCompositeRootContext(), id = useBaseUiId(idProp), tabMetadata = React20.useMemo(() => ({
1800
+ disabled: disabled2,
1801
+ id,
1802
+ value
1803
+ }), [disabled2, id, value]), {
1804
+ compositeProps,
1805
+ compositeRef,
1806
+ index: index2
1807
+ // hook is used instead of the CompositeItem component
1808
+ // because the index is needed for Tab internals
1809
+ } = useCompositeItem({
1810
+ metadata: tabMetadata
1811
+ }), active = value === activeTabValue, isNavigatingRef = React20.useRef(!1), unobserveTabElementRef = React20.useRef(null), observeTabElement = useStableCallback((element2) => {
1812
+ unobserveTabElementRef.current?.(), unobserveTabElementRef.current = element2 ? registerTabResizeObserverElement(element2) : null;
1813
+ });
1814
+ useIsoLayoutEffect(() => {
1815
+ if (isNavigatingRef.current) {
1816
+ isNavigatingRef.current = !1;
1817
+ return;
1818
+ }
1819
+ if (!(active && index2 > -1 && highlightedIndex !== index2))
1820
+ return;
1821
+ let listElement = tabsListElement;
1822
+ if (listElement != null) {
1823
+ let activeEl = activeElement(ownerDocument(listElement));
1824
+ if (activeEl && contains(listElement, activeEl))
1825
+ return;
1826
+ }
1827
+ disabled2 || onHighlightedIndexChange(index2);
1828
+ }, [active, index2, highlightedIndex, onHighlightedIndexChange, disabled2, tabsListElement]);
1829
+ let {
1830
+ getButtonProps,
1831
+ buttonRef
1832
+ } = useButton({
1833
+ disabled: disabled2,
1834
+ native: nativeButton,
1835
+ focusableWhenDisabled: !0
1836
+ }), tabPanelId = getTabPanelIdByValue(value), isPressingRef = React20.useRef(!1), isMainButtonRef = React20.useRef(!1);
1837
+ function activate(event) {
1838
+ onValueChange(value, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent, void 0, {
1839
+ activationDirection: "none"
1840
+ }));
1841
+ }
1842
+ function onClick(event) {
1843
+ active || disabled2 || activate(event);
1844
+ }
1845
+ function onFocus(event) {
1846
+ active || disabled2 || activateOnFocus && (!isPressingRef.current || // keyboard or touch focus
1847
+ isMainButtonRef.current) && activate(event);
1848
+ }
1849
+ function onPointerDown(event) {
1850
+ if (active || disabled2)
1851
+ return;
1852
+ isPressingRef.current = !0, isMainButtonRef.current = event.button === 0;
1853
+ let doc = ownerDocument(event.currentTarget);
1854
+ function handlePointerEnd() {
1855
+ isPressingRef.current = !1, isMainButtonRef.current = !1, doc.removeEventListener("pointerup", handlePointerEnd), doc.removeEventListener("pointercancel", handlePointerEnd);
1856
+ }
1857
+ doc.addEventListener("pointerup", handlePointerEnd), doc.addEventListener("pointercancel", handlePointerEnd);
1858
+ }
1859
+ return useRenderElement("button", componentProps, {
1860
+ state: {
1861
+ disabled: disabled2,
1862
+ active,
1863
+ orientation,
1864
+ tabActivationDirection
1865
+ },
1866
+ ref: [forwardedRef, buttonRef, compositeRef, observeTabElement],
1867
+ props: [compositeProps, {
1868
+ role: "tab",
1869
+ "aria-controls": tabPanelId,
1870
+ "aria-selected": active,
1871
+ id,
1872
+ onClick,
1873
+ onFocus,
1874
+ onPointerDown,
1875
+ [ACTIVE_COMPOSITE_ITEM]: active ? "" : void 0,
1876
+ onKeyDownCapture() {
1877
+ isNavigatingRef.current = !0;
1878
+ }
1879
+ }, elementProps, getButtonProps],
1880
+ stateAttributesMapping: tabsStateAttributesMapping
1881
+ });
1882
+ });
1883
+ process.env.NODE_ENV !== "production" && (TabsTab.displayName = "TabsTab");
1884
+
1885
+ // ../../node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
1886
+ import * as React24 from "react";
1887
+
1888
+ // ../../node_modules/@base-ui/react/internals/PrehydrationScript.mjs
1889
+ import "react";
1890
+
1891
+ // ../../node_modules/@base-ui/utils/hydration.mjs
1892
+ import * as React21 from "react";
1893
+ import { useSyncExternalStore } from "use-sync-external-store/shim";
1894
+ var emptySubscribe = () => () => {
1895
+ }, getTrue = () => !0, getFalse = () => !1;
1896
+ function useIsHydratedModern() {
1897
+ return useSyncExternalStore(emptySubscribe, getTrue, getFalse);
1898
+ }
1899
+ function useIsHydratedLegacy() {
1900
+ let [hydrated, setHydrated] = React21.useState(!1);
1901
+ return React21.useEffect(() => {
1902
+ setHydrated(!0);
1903
+ }, []), hydrated;
1904
+ }
1905
+ var useIsHydrated = isReactVersionAtLeast(18) ? useIsHydratedModern : useIsHydratedLegacy;
1906
+ function useIsHydrating() {
1907
+ return !useIsHydrated();
1908
+ }
1909
+
1910
+ // ../../node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs
1911
+ import * as React22 from "react";
1912
+ var CSPContext = React22.createContext(void 0);
1913
+ process.env.NODE_ENV !== "production" && (CSPContext.displayName = "CSPContext");
1914
+ var DEFAULT_CSP_CONTEXT_VALUE = {
1915
+ disableStyleElements: !1
1916
+ };
1917
+ function useCSPContext() {
1918
+ return React22.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
1919
+ }
1920
+
1921
+ // ../../node_modules/@base-ui/react/internals/PrehydrationScript.mjs
1922
+ import { jsx as _jsx3 } from "react/jsx-runtime";
1923
+ function PrehydrationScript(props) {
1924
+ let {
1925
+ script: script2
1926
+ } = props, {
1927
+ nonce
1928
+ } = useCSPContext();
1929
+ return useIsHydrating() ? _jsx3("script", {
1930
+ nonce,
1931
+ dangerouslySetInnerHTML: {
1932
+ __html: script2
1933
+ },
1934
+ suppressHydrationWarning: !0
1935
+ }) : null;
1936
+ }
1937
+
1938
+ // ../../node_modules/@base-ui/react/utils/getCssDimensions.mjs
1939
+ function getCssDimensions(element) {
1940
+ let css = getComputedStyle2(element), width = parseFloat(css.width) || 0, height = parseFloat(css.height) || 0, hasOffset = isHTMLElement(element), offsetWidth = hasOffset ? element.offsetWidth : width, offsetHeight = hasOffset ? element.offsetHeight : height;
1941
+ return (round(width) !== offsetWidth || round(height) !== offsetHeight) && (width = offsetWidth, height = offsetHeight), {
1942
+ width,
1943
+ height
1944
+ };
1945
+ }
1946
+
1947
+ // ../../node_modules/@base-ui/react/utils/getElementTransform.mjs
1948
+ function getElementTransform(element, computedStyle) {
1949
+ let transform = (computedStyle ?? getWindow(element).getComputedStyle(element)).transform, translateX = 0, translateY = 0, scale = 1;
1950
+ if (transform && transform !== "none") {
1951
+ let matrix = transform.match(/matrix(?:3d)?\(([^)]+)\)/);
1952
+ if (matrix) {
1953
+ let values = matrix[1].split(", ").map(parseFloat);
1954
+ values.length === 6 ? (translateX = values[4], translateY = values[5], scale = Math.sqrt(values[0] * values[0] + values[1] * values[1])) : values.length === 16 && (translateX = values[12], translateY = values[13], scale = values[0]);
1955
+ }
1956
+ }
1957
+ return {
1958
+ x: translateX,
1959
+ y: translateY,
1960
+ scale
1961
+ };
1962
+ }
1963
+
1964
+ // ../../node_modules/@base-ui/react/tabs/indicator/TabsIndicatorCssVars.mjs
1965
+ var activeTabLeft = "--active-tab-left", activeTabRight = "--active-tab-right", activeTabTop = "--active-tab-top", activeTabBottom = "--active-tab-bottom", activeTabWidth = "--active-tab-width", activeTabHeight = "--active-tab-height";
1966
+
1967
+ // ../../node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
1968
+ import { jsx as _jsx4, jsxs as _jsxs } from "react/jsx-runtime";
1969
+ var _PrehydrationScript, stateAttributesMapping = {
1970
+ ...tabsStateAttributesMapping,
1971
+ activeTabPosition: () => null,
1972
+ activeTabSize: () => null
1973
+ }, MAX_LAYOUT_ROUNDING_ERROR = 2, TabsIndicator = React24.forwardRef(function(componentProps, forwardedRef) {
1974
+ let {
1975
+ className,
1976
+ render,
1977
+ renderBeforeHydration = !1,
1978
+ style: styleProp,
1979
+ ...elementProps
1980
+ } = componentProps, {
1981
+ getTabElementBySelectedValue,
1982
+ orientation,
1983
+ tabActivationDirection,
1984
+ value
1985
+ } = useTabsRootContext(), {
1986
+ tabsListElement,
1987
+ registerIndicatorUpdateListener
1988
+ } = useTabsListContext(), rerender = useForcedRerendering();
1989
+ React24.useEffect(() => registerIndicatorUpdateListener(rerender), [registerIndicatorUpdateListener, rerender]);
1990
+ let left = 0, right = 0, top = 0, bottom = 0, width = 0, height = 0, isTabSelected = !1;
1991
+ if (value != null && tabsListElement != null) {
1992
+ let activeTab = getTabElementBySelectedValue(value);
1993
+ if (activeTab != null) {
1994
+ isTabSelected = !0;
1995
+ let {
1996
+ width: computedWidth,
1997
+ height: computedHeight
1998
+ } = getCssDimensions(activeTab), {
1999
+ width: tabListWidth,
2000
+ height: tabListHeight
2001
+ } = getCssDimensions(tabsListElement), tabRect = activeTab.getBoundingClientRect(), tabsListRect = tabsListElement.getBoundingClientRect(), scaleX = tabListWidth > 0 ? tabsListRect.width / tabListWidth : 1, scaleY = tabListHeight > 0 ? tabsListRect.height / tabListHeight : 1, layoutOffset = getLayoutOffset(activeTab, tabsListElement);
2002
+ left = layoutOffset.left, top = layoutOffset.top;
2003
+ let rectLeft = (tabRect.left - tabsListRect.left) / scaleX + tabsListElement.scrollLeft - tabsListElement.clientLeft, rectTop = (tabRect.top - tabsListRect.top) / scaleY + tabsListElement.scrollTop - tabsListElement.clientTop, tabTranslation = getActiveTabTranslation(activeTab);
2004
+ Math.abs(rectLeft - tabTranslation.x - left) <= MAX_LAYOUT_ROUNDING_ERROR && Math.abs(rectTop - tabTranslation.y - top) <= MAX_LAYOUT_ROUNDING_ERROR && (left = rectLeft, top = rectTop), width = computedWidth, height = computedHeight, right = tabsListElement.scrollWidth - left - width, bottom = tabsListElement.scrollHeight - top - height;
2005
+ }
2006
+ }
2007
+ let activeTabPosition = isTabSelected ? {
2008
+ left,
2009
+ right,
2010
+ top,
2011
+ bottom
2012
+ } : null, activeTabSize = isTabSelected ? {
2013
+ width,
2014
+ height
2015
+ } : null, style = isTabSelected ? {
2016
+ [activeTabLeft]: `${left}px`,
2017
+ [activeTabRight]: `${right}px`,
2018
+ [activeTabTop]: `${top}px`,
2019
+ [activeTabBottom]: `${bottom}px`,
2020
+ [activeTabWidth]: `${width}px`,
2021
+ [activeTabHeight]: `${height}px`
2022
+ } : void 0, displayIndicator = isTabSelected && width > 0 && height > 0, element = useRenderElement("span", componentProps, {
2023
+ state: {
2024
+ orientation,
2025
+ activeTabPosition,
2026
+ activeTabSize,
2027
+ tabActivationDirection
2028
+ },
2029
+ ref: forwardedRef,
2030
+ props: [{
2031
+ role: "presentation",
2032
+ style,
2033
+ hidden: !displayIndicator
2034
+ // do not display the indicator before the layout is settled
2035
+ }, elementProps, {
2036
+ suppressHydrationWarning: !0
2037
+ }],
2038
+ stateAttributesMapping
2039
+ });
2040
+ return value == null ? null : _jsxs(React24.Fragment, {
2041
+ children: [element, renderBeforeHydration && (_PrehydrationScript || (_PrehydrationScript = _jsx4(PrehydrationScript, {
2042
+ script: ""
2043
+ })))]
2044
+ });
2045
+ });
2046
+ process.env.NODE_ENV !== "production" && (TabsIndicator.displayName = "TabsIndicator");
2047
+ function getLayoutOffset(element, ancestor) {
2048
+ let elementOffset = getCumulativeOffset(element), ancestorOffset = getCumulativeOffset(ancestor), left = elementOffset.left - ancestorOffset.left - ancestor.clientLeft, top = elementOffset.top - ancestorOffset.top - ancestor.clientTop, node = getParentNode(element);
2049
+ for (; isHTMLElement(node) && node !== ancestor && !isLastTraversableNode(node); )
2050
+ left -= node.scrollLeft, top -= node.scrollTop, node = getParentNode(node);
2051
+ return {
2052
+ left,
2053
+ top
2054
+ };
2055
+ }
2056
+ function getCumulativeOffset(element) {
2057
+ let left = 0, top = 0, currentElement = element;
2058
+ for (; currentElement != null; ) {
2059
+ left += currentElement.offsetLeft, top += currentElement.offsetTop;
2060
+ let offsetParent = currentElement.offsetParent;
2061
+ offsetParent != null && (left += offsetParent.clientLeft, top += offsetParent.clientTop), currentElement = offsetParent;
2062
+ }
2063
+ return {
2064
+ left,
2065
+ top
2066
+ };
2067
+ }
2068
+ function getActiveTabTranslation(element) {
2069
+ let computedStyle = getWindow(element).getComputedStyle(element), {
2070
+ x,
2071
+ y
2072
+ } = getElementTransform(element, computedStyle), translateX = x, translateY = y, {
2073
+ translate
2074
+ } = computedStyle;
2075
+ if (translate && translate !== "none") {
2076
+ let parts = translate.split(" ");
2077
+ translateX += resolveTranslateLength(parts[0], element.offsetWidth), translateY += resolveTranslateLength(parts[1], element.offsetHeight);
2078
+ }
2079
+ return {
2080
+ x: translateX,
2081
+ y: translateY
2082
+ };
2083
+ }
2084
+ function resolveTranslateLength(value, referenceSize) {
2085
+ if (!value)
2086
+ return 0;
2087
+ let numeric = parseFloat(value);
2088
+ return Number.isFinite(numeric) ? value.endsWith("%") ? numeric / 100 * referenceSize : numeric : 0;
2089
+ }
2090
+
2091
+ // ../../node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
2092
+ import * as React28 from "react";
2093
+
2094
+ // ../../node_modules/@base-ui/utils/inertValue.mjs
2095
+ function inertValue(value) {
2096
+ return isReactVersionAtLeast(19) ? value : value ? "true" : void 0;
2097
+ }
2098
+
2099
+ // ../../node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
2100
+ import * as React26 from "react";
2101
+
2102
+ // ../../node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
2103
+ import * as ReactDOM from "react-dom";
2104
+
2105
+ // ../../node_modules/@base-ui/utils/useOnMount.mjs
2106
+ import * as React25 from "react";
2107
+ function useOnMount(fn) {
2108
+ React25.useEffect(fn, EMPTY_ARRAY);
2109
+ }
2110
+
2111
+ // ../../node_modules/@base-ui/utils/useAnimationFrame.mjs
2112
+ var EMPTY = null, LAST_RAF = globalThis.requestAnimationFrame, Scheduler = class {
2113
+ /* This implementation uses an array as a backing data-structure for frame callbacks.
2114
+ * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
2115
+ * never calls the native `cancelAnimationFrame` if there are no frames left. This can
2116
+ * be much more efficient if there is a call pattern that alterns as
2117
+ * "request-cancel-request-cancel-…".
2118
+ * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
2119
+ * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
2120
+ callbacks = [];
2121
+ callbacksCount = 0;
2122
+ nextId = 1;
2123
+ startId = 1;
2124
+ isScheduled = !1;
2125
+ tick = (timestamp) => {
2126
+ this.isScheduled = !1;
2127
+ let currentCallbacks = this.callbacks, currentCallbacksCount = this.callbacksCount;
2128
+ if (this.callbacks = [], this.callbacksCount = 0, this.startId = this.nextId, currentCallbacksCount > 0)
2129
+ for (let i = 0; i < currentCallbacks.length; i += 1)
2130
+ currentCallbacks[i]?.(timestamp);
2131
+ };
2132
+ request(fn) {
2133
+ let id = this.nextId;
2134
+ this.nextId += 1, this.callbacks.push(fn), this.callbacksCount += 1;
2135
+ let didRAFChange = process.env.NODE_ENV !== "production" && LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, !0);
2136
+ return (!this.isScheduled || didRAFChange) && (requestAnimationFrame(this.tick), this.isScheduled = !0), id;
2137
+ }
2138
+ cancel(id) {
2139
+ let index2 = id - this.startId;
2140
+ index2 < 0 || index2 >= this.callbacks.length || this.callbacks[index2] !== null && (this.callbacks[index2] = null, this.callbacksCount -= 1);
2141
+ }
2142
+ }, scheduler = new Scheduler();
2143
+ var AnimationFrame = class _AnimationFrame {
2144
+ static create() {
2145
+ return new _AnimationFrame();
2146
+ }
2147
+ static request(fn) {
2148
+ return scheduler.request(fn);
2149
+ }
2150
+ static cancel(id) {
2151
+ return scheduler.cancel(id);
2152
+ }
2153
+ currentId = EMPTY;
2154
+ /**
2155
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
2156
+ */
2157
+ request(fn) {
2158
+ this.cancel(), this.currentId = scheduler.request(() => {
2159
+ this.currentId = EMPTY, fn();
2160
+ });
2161
+ }
2162
+ cancel = () => {
2163
+ this.currentId !== EMPTY && (scheduler.cancel(this.currentId), this.currentId = EMPTY);
2164
+ };
2165
+ disposeEffect = () => this.cancel;
2166
+ };
2167
+ function useAnimationFrame() {
2168
+ let timeout = useRefWithInit(AnimationFrame.create).current;
2169
+ return useOnMount(timeout.disposeEffect), timeout;
2170
+ }
2171
+
2172
+ // ../../node_modules/@base-ui/react/utils/resolveRef.mjs
2173
+ function resolveRef(maybeRef) {
2174
+ return maybeRef == null ? maybeRef : "current" in maybeRef ? maybeRef.current : maybeRef;
2175
+ }
2176
+
2177
+ // ../../node_modules/@base-ui/react/utils/getFiniteAnimations.mjs
2178
+ function getFiniteAnimations(element, options) {
2179
+ return element.getAnimations(options).filter((animation) => {
2180
+ let timing = animation.effect?.getTiming();
2181
+ return timing?.duration !== 1 / 0 && timing?.iterations !== 1 / 0;
2182
+ });
2183
+ }
2184
+
2185
+ // ../../node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
2186
+ var pendingCallbacks = null;
2187
+ function flushBeforePaint(fn) {
2188
+ if (!pendingCallbacks) {
2189
+ let callbacks = [];
2190
+ pendingCallbacks = callbacks, queueMicrotask(() => {
2191
+ pendingCallbacks = null, ReactDOM.flushSync(() => {
2192
+ for (let callback of callbacks)
2193
+ callback();
2194
+ });
2195
+ });
2196
+ }
2197
+ pendingCallbacks.push(fn);
2198
+ }
2199
+ function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = !1, batch = !1) {
2200
+ let frame = useAnimationFrame();
2201
+ return useStableCallback((fnToExecute, signal = null) => {
2202
+ frame.cancel();
2203
+ let element = resolveRef(elementOrRef);
2204
+ if (element == null)
2205
+ return;
2206
+ let resolvedElement = element, done = () => {
2207
+ if (!batch) {
2208
+ ReactDOM.flushSync(fnToExecute);
2209
+ return;
2210
+ }
2211
+ flushBeforePaint(() => {
2212
+ signal?.aborted || fnToExecute();
2213
+ });
2214
+ };
2215
+ if (typeof resolvedElement.getAnimations != "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) {
2216
+ fnToExecute();
2217
+ return;
2218
+ }
2219
+ function exec() {
2220
+ Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => {
2221
+ signal?.aborted || done();
2222
+ }, () => {
2223
+ if (signal?.aborted)
2224
+ return;
2225
+ if (getFiniteAnimations(resolvedElement).some((animation) => animation.pending || animation.playState !== "finished")) {
2226
+ exec();
2227
+ return;
2228
+ }
2229
+ done();
2230
+ });
2231
+ }
2232
+ if (waitForStartingStyleRemoved) {
2233
+ let startingStyleAttribute = startingStyle;
2234
+ if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
2235
+ frame.request(exec);
2236
+ return;
2237
+ }
2238
+ let attributeObserver = new MutationObserver(() => {
2239
+ resolvedElement.hasAttribute(startingStyleAttribute) || (attributeObserver.disconnect(), exec());
2240
+ });
2241
+ attributeObserver.observe(resolvedElement, {
2242
+ attributes: !0,
2243
+ attributeFilter: [startingStyleAttribute]
2244
+ }), signal?.addEventListener("abort", () => attributeObserver.disconnect(), {
2245
+ once: !0
2246
+ });
2247
+ return;
2248
+ }
2249
+ frame.request(exec);
2250
+ });
2251
+ }
2252
+
2253
+ // ../../node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
2254
+ function useOpenChangeComplete(parameters) {
2255
+ let {
2256
+ enabled = !0,
2257
+ open: open2,
2258
+ ref,
2259
+ batch = !1,
2260
+ onComplete: onCompleteParam
2261
+ } = parameters, onComplete = useStableCallback(onCompleteParam), runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch);
2262
+ React26.useEffect(() => {
2263
+ if (!enabled)
2264
+ return;
2265
+ let abortController = new AbortController();
2266
+ return runOnceAnimationsFinish(onComplete, abortController.signal), () => {
2267
+ abortController.abort();
2268
+ };
2269
+ }, [enabled, open2, onComplete, runOnceAnimationsFinish]);
2270
+ }
2271
+
2272
+ // ../../node_modules/@base-ui/react/internals/useTransitionStatus.mjs
2273
+ import * as React27 from "react";
2274
+ function useTransitionStatus(open2, enableIdleState = !1, deferEndingState = !1, animateInitialOpen = !1) {
2275
+ let [transitionStatus, setTransitionStatus] = React27.useState(open2 && enableIdleState ? "idle" : void 0), [mounted, setMounted] = React27.useState(open2 && !animateInitialOpen);
2276
+ return open2 && !mounted && (setMounted(!0), setTransitionStatus("starting")), !open2 && mounted && transitionStatus !== "ending" && !deferEndingState && setTransitionStatus("ending"), !open2 && !mounted && transitionStatus === "ending" && setTransitionStatus(void 0), useIsoLayoutEffect(() => {
2277
+ if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) {
2278
+ let frame = AnimationFrame.request(() => {
2279
+ setTransitionStatus("ending");
2280
+ });
2281
+ return () => {
2282
+ AnimationFrame.cancel(frame);
2283
+ };
2284
+ }
2285
+ }, [open2, mounted, transitionStatus, deferEndingState]), useIsoLayoutEffect(() => {
2286
+ if (!open2 || enableIdleState || transitionStatus === void 0)
2287
+ return;
2288
+ let frame = AnimationFrame.request(() => {
2289
+ setTransitionStatus(void 0);
2290
+ });
2291
+ return () => {
2292
+ AnimationFrame.cancel(frame);
2293
+ };
2294
+ }, [enableIdleState, open2, transitionStatus]), useIsoLayoutEffect(() => {
2295
+ if (!open2 || !enableIdleState)
2296
+ return;
2297
+ open2 && mounted && transitionStatus !== "idle" && setTransitionStatus("starting");
2298
+ let frame = AnimationFrame.request(() => {
2299
+ setTransitionStatus("idle");
2300
+ });
2301
+ return () => {
2302
+ AnimationFrame.cancel(frame);
2303
+ };
2304
+ }, [enableIdleState, open2, mounted, transitionStatus]), {
2305
+ mounted,
2306
+ setMounted,
2307
+ transitionStatus
2308
+ };
2309
+ }
2310
+
2311
+ // ../../node_modules/@base-ui/react/tabs/panel/TabsPanelDataAttributes.mjs
2312
+ var index = "data-index";
2313
+ var startingStyle3 = TransitionStatusDataAttributes_exports.startingStyle, endingStyle3 = TransitionStatusDataAttributes_exports.endingStyle;
2314
+
2315
+ // ../../node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
2316
+ var stateAttributesMapping2 = {
2317
+ ...tabsStateAttributesMapping,
2318
+ ...transitionStatusMapping
2319
+ }, TabsPanel = React28.forwardRef(function(componentProps, forwardedRef) {
2320
+ let {
2321
+ className,
2322
+ value,
2323
+ render,
2324
+ keepMounted = !1,
2325
+ style,
2326
+ ...elementProps
2327
+ } = componentProps, {
2328
+ value: selectedValue,
2329
+ getTabIdByPanelValue,
2330
+ orientation,
2331
+ tabActivationDirection,
2332
+ registerMountedTabPanel
2333
+ } = useTabsRootContext(), id = useBaseUiId(), {
2334
+ ref: listItemRef,
2335
+ index: index2
2336
+ } = useCompositeListItem(), open2 = value === selectedValue, {
2337
+ mounted,
2338
+ transitionStatus,
2339
+ setMounted
2340
+ } = useTransitionStatus(open2), hidden = !mounted, correspondingTabId = getTabIdByPanelValue(value), state = {
2341
+ hidden,
2342
+ orientation,
2343
+ tabActivationDirection,
2344
+ transitionStatus
2345
+ }, panelRef = React28.useRef(null), element = useRenderElement("div", componentProps, {
2346
+ state,
2347
+ ref: [forwardedRef, listItemRef, panelRef],
2348
+ props: [{
2349
+ "aria-labelledby": correspondingTabId,
2350
+ hidden,
2351
+ id,
2352
+ role: "tabpanel",
2353
+ tabIndex: open2 ? 0 : -1,
2354
+ inert: inertValue(!open2),
2355
+ // Computed key: a plain literal key fails the DOM-props excess property check.
2356
+ [index]: index2
2357
+ }, elementProps],
2358
+ stateAttributesMapping: stateAttributesMapping2
2359
+ });
2360
+ return useOpenChangeComplete({
2361
+ open: open2,
2362
+ ref: panelRef,
2363
+ onComplete() {
2364
+ open2 || setMounted(!1);
2365
+ }
2366
+ }), useIsoLayoutEffect(() => {
2367
+ if (!(id == null || hidden && !keepMounted))
2368
+ return registerMountedTabPanel(value, id);
2369
+ }, [hidden, keepMounted, value, id, registerMountedTabPanel]), keepMounted || mounted ? element : null;
2370
+ });
2371
+ process.env.NODE_ENV !== "production" && (TabsPanel.displayName = "TabsPanel");
2372
+
2373
+ // ../../node_modules/@base-ui/react/tabs/list/TabsList.mjs
2374
+ import * as React32 from "react";
2375
+
2376
+ // ../../node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
2377
+ import * as React31 from "react";
2378
+
2379
+ // ../../node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
2380
+ import * as React29 from "react";
2381
+
2382
+ // ../../node_modules/@base-ui/utils/isElementDisabled.mjs
2383
+ function isElementDisabled(element) {
2384
+ return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
2385
+ }
2386
+
2387
+ // ../../node_modules/@base-ui/react/internals/composite/composite.mjs
2388
+ var ARROW_UP2 = "ArrowUp", ARROW_DOWN2 = "ArrowDown", ARROW_LEFT2 = "ArrowLeft", ARROW_RIGHT2 = "ArrowRight", HOME = "Home", END = "End";
2389
+ var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]), SHIFT = "Shift", MODIFIER_KEYS = [SHIFT, "Control", "Alt", "Meta"];
2390
+ function isInputElement(element) {
2391
+ return isHTMLElement(element) && element.tagName === "INPUT";
2392
+ }
2393
+ function isNativeInput(element) {
2394
+ return !!(isInputElement(element) && element.selectionStart != null || isHTMLElement(element) && element.tagName === "TEXTAREA");
2395
+ }
2396
+ function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
2397
+ if (!scrollContainer || !element || !element.scrollTo)
2398
+ return;
2399
+ let targetX = scrollContainer.scrollLeft, targetY = scrollContainer.scrollTop, isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth, isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
2400
+ if (isOverflowingX && orientation !== "vertical") {
2401
+ let elementOffsetLeft = getOffset(scrollContainer, element, "left"), containerStyles = getStyles(scrollContainer), elementStyles = getStyles(element);
2402
+ direction === "ltr" && (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight ? targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight : elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft && (targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft)), direction === "rtl" && (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft ? targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft : elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight && (targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight));
2403
+ }
2404
+ if (isOverflowingY && orientation !== "horizontal") {
2405
+ let elementOffsetTop = getOffset(scrollContainer, element, "top"), containerStyles = getStyles(scrollContainer), elementStyles = getStyles(element);
2406
+ elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop ? targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop : elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom && (targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom);
2407
+ }
2408
+ scrollContainer.scrollTo({
2409
+ left: targetX,
2410
+ top: targetY,
2411
+ behavior: "auto"
2412
+ });
2413
+ }
2414
+ function getOffset(ancestor, element, side2) {
2415
+ let propName = side2 === "left" ? "offsetLeft" : "offsetTop", result = 0;
2416
+ for (; element.offsetParent && (result += element[propName], element.offsetParent !== ancestor); )
2417
+ element = element.offsetParent;
2418
+ return result;
2419
+ }
2420
+ function getStyles(element) {
2421
+ let styles = getComputedStyle(element);
2422
+ return {
2423
+ scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,
2424
+ scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,
2425
+ scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,
2426
+ scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,
2427
+ scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,
2428
+ scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,
2429
+ scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,
2430
+ scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0
2431
+ };
2432
+ }
2433
+
2434
+ // ../../node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
2435
+ function useCompositeRoot(params) {
2436
+ let {
2437
+ loopFocus = !0,
2438
+ orientation = "both",
2439
+ grid,
2440
+ onLoop,
2441
+ direction,
2442
+ highlightedIndex: externalHighlightedIndex,
2443
+ onHighlightedIndexChange: externalSetHighlightedIndex,
2444
+ rootRef: externalRef,
2445
+ enableHomeAndEndKeys = !1,
2446
+ stopEventPropagation,
2447
+ disabledIndices,
2448
+ modifierKeys = EMPTY_ARRAY
2449
+ } = params, [internalHighlightedIndex, internalSetHighlightedIndex] = React29.useState(0), isGrid = grid != null, rootRef = React29.useRef(null), mergedRef = useMergedRefs(rootRef, externalRef), elementsRef = React29.useRef([]), hasSetDefaultIndexRef = React29.useRef(!1), highlightedElementRef = React29.useRef(null), highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex, onHighlightedIndexChange = useStableCallback((index2, shouldScrollIntoView = !1) => {
2450
+ if (highlightedElementRef.current = elementsRef.current[index2] ?? null, (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index2), shouldScrollIntoView) {
2451
+ let newActiveItem = elementsRef.current[index2];
2452
+ scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);
2453
+ }
2454
+ }), onMapChange = useStableCallback((map) => {
2455
+ if (map.size === 0)
2456
+ return;
2457
+ if (hasSetDefaultIndexRef.current) {
2458
+ let elements = elementsRef.current, nextIndex = elements.indexOf(highlightedElementRef.current);
2459
+ if (nextIndex === -1) {
2460
+ let replacement = elements[highlightedIndex];
2461
+ !replacement || isListIndexDisabled(elements, highlightedIndex, disabledIndices) ? onHighlightedIndexChange(getFallbackIndex(elements, disabledIndices)) : highlightedElementRef.current = replacement;
2462
+ } else nextIndex !== highlightedIndex && onHighlightedIndexChange(nextIndex);
2463
+ return;
2464
+ }
2465
+ hasSetDefaultIndexRef.current = !0;
2466
+ let sortedElements = Array.from(map.keys()), activeItem = sortedElements.find((compositeElement) => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null, activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1;
2467
+ if (activeIndex !== -1)
2468
+ onHighlightedIndexChange(activeIndex);
2469
+ else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {
2470
+ let firstEnabledIndex = findNonDisabledListIndex(sortedElements, {
2471
+ disabledIndices
2472
+ });
2473
+ isIndexOutOfListBounds(sortedElements, firstEnabledIndex) || onHighlightedIndexChange(firstEnabledIndex);
2474
+ }
2475
+ scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);
2476
+ });
2477
+ useIsoLayoutEffect(() => {
2478
+ if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current)
2479
+ return;
2480
+ let elements = elementsRef.current;
2481
+ if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) {
2482
+ let firstEnabledIndex = findNonDisabledListIndex(elements, {
2483
+ disabledIndices
2484
+ });
2485
+ isIndexOutOfListBounds(elements, firstEnabledIndex) || onHighlightedIndexChange(firstEnabledIndex);
2486
+ }
2487
+ }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);
2488
+ let wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => onLoop ? onLoop(event, prevIndex, nextIndex, elementsRef) : nextIndex), onKeyDown = useStableCallback((event) => {
2489
+ let isHomeOrEnd = event.key === HOME || event.key === END;
2490
+ if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd || isModifierKeySet(event, modifierKeys) || !rootRef.current)
2491
+ return;
2492
+ let isRtl = direction === "rtl", horizontalForwardKey = isRtl ? ARROW_LEFT2 : ARROW_RIGHT2, horizontalBackwardKey = isRtl ? ARROW_RIGHT2 : ARROW_LEFT2, forwardKey = orientation === "vertical" ? ARROW_DOWN2 : horizontalForwardKey, backwardKey = orientation === "vertical" ? ARROW_UP2 : horizontalBackwardKey, target = getTarget(event.nativeEvent);
2493
+ if (target != null && isNativeInput(target) && !isElementDisabled(target)) {
2494
+ let selectionStart = target.selectionStart, selectionEnd = target.selectionEnd, textContent = target.value;
2495
+ if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd || event.key !== backwardKey && selectionStart < textContent.length || event.key !== forwardKey && selectionStart > 0)
2496
+ return;
2497
+ }
2498
+ let nextIndex = highlightedIndex, minIndex = getMinListIndex(elementsRef, disabledIndices), maxIndex = getMaxListIndex(elementsRef, disabledIndices);
2499
+ grid != null && (nextIndex = grid({
2500
+ disabledIndices,
2501
+ elementsRef,
2502
+ event,
2503
+ highlightedIndex,
2504
+ loopFocus,
2505
+ maxIndex,
2506
+ minIndex,
2507
+ onLoop: wrappedOnLoop,
2508
+ orientation,
2509
+ rtl: isRtl
2510
+ }));
2511
+ let isForwardKey = orientation !== "vertical" && event.key === horizontalForwardKey || orientation !== "horizontal" && event.key === ARROW_DOWN2, isBackwardKey = orientation !== "vertical" && event.key === horizontalBackwardKey || orientation !== "horizontal" && event.key === ARROW_UP2;
2512
+ enableHomeAndEndKeys && (event.key === HOME ? nextIndex = minIndex : event.key === END && (nextIndex = maxIndex)), nextIndex === highlightedIndex && (isForwardKey || isBackwardKey) && (loopFocus && nextIndex === maxIndex && isForwardKey ? (nextIndex = minIndex, onLoop && (nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef))) : loopFocus && nextIndex === minIndex && isBackwardKey ? (nextIndex = maxIndex, onLoop && (nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef))) : nextIndex = findNonDisabledListIndex(elementsRef.current, {
2513
+ startingIndex: nextIndex,
2514
+ decrement: isBackwardKey,
2515
+ disabledIndices
2516
+ })), nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex) && (stopEventPropagation && event.stopPropagation(), (isGrid || isHomeOrEnd || isForwardKey || isBackwardKey) && event.preventDefault(), onHighlightedIndexChange(nextIndex, !0), queueMicrotask(() => {
2517
+ elementsRef.current[nextIndex]?.focus();
2518
+ }));
2519
+ });
2520
+ return {
2521
+ props: {
2522
+ ref: mergedRef,
2523
+ onFocus(event) {
2524
+ let element = rootRef.current, target = getTarget(event.nativeEvent);
2525
+ !element || target == null || !isNativeInput(target) || target.setSelectionRange(0, target.value.length);
2526
+ },
2527
+ onKeyDown
2528
+ },
2529
+ highlightedIndex,
2530
+ onHighlightedIndexChange,
2531
+ elementsRef,
2532
+ onMapChange,
2533
+ relayKeyboardEvent: onKeyDown
2534
+ };
2535
+ }
2536
+ function getFallbackIndex(elements, disabledIndices) {
2537
+ let fallbackIndex = -1;
2538
+ for (let index2 = 0; index2 < elements.length; index2 += 1) {
2539
+ let element = elements[index2];
2540
+ if (!(!element || isListIndexDisabled(elements, index2, disabledIndices))) {
2541
+ if (element.hasAttribute(ACTIVE_COMPOSITE_ITEM))
2542
+ return index2;
2543
+ fallbackIndex === -1 && (fallbackIndex = index2);
2544
+ }
2545
+ }
2546
+ return Math.max(fallbackIndex, 0);
2547
+ }
2548
+ function isModifierKeySet(event, ignoredModifierKeys) {
2549
+ for (let key of MODIFIER_KEYS)
2550
+ if (!ignoredModifierKeys.includes(key) && event.getModifierState(key))
2551
+ return !0;
2552
+ return !1;
2553
+ }
2554
+
2555
+ // ../../node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs
2556
+ import * as React30 from "react";
2557
+ var DirectionContext = React30.createContext(void 0);
2558
+ process.env.NODE_ENV !== "production" && (DirectionContext.displayName = "DirectionContext");
2559
+ function useDirection() {
2560
+ return React30.useContext(DirectionContext)?.direction ?? "ltr";
2561
+ }
2562
+
2563
+ // ../../node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
2564
+ import { jsx as _jsx5 } from "react/jsx-runtime";
2565
+ function CompositeRoot(componentProps) {
2566
+ let {
2567
+ render,
2568
+ className,
2569
+ style,
2570
+ refs = EMPTY_ARRAY,
2571
+ props = EMPTY_ARRAY,
2572
+ state = EMPTY_OBJECT,
2573
+ stateAttributesMapping: stateAttributesMapping3,
2574
+ highlightedIndex: highlightedIndexProp,
2575
+ onHighlightedIndexChange: onHighlightedIndexChangeProp,
2576
+ orientation,
2577
+ grid,
2578
+ loopFocus,
2579
+ onLoop,
2580
+ enableHomeAndEndKeys,
2581
+ onMapChange: onMapChangeProp,
2582
+ stopEventPropagation = !0,
2583
+ rootRef,
2584
+ disabledIndices,
2585
+ modifierKeys,
2586
+ highlightItemOnHover = !1,
2587
+ tag = "div",
2588
+ ...elementProps
2589
+ } = componentProps, direction = useDirection(), {
2590
+ props: defaultProps,
2591
+ highlightedIndex,
2592
+ onHighlightedIndexChange,
2593
+ elementsRef,
2594
+ onMapChange: onMapChangeUnwrapped,
2595
+ relayKeyboardEvent
2596
+ } = useCompositeRoot({
2597
+ grid,
2598
+ loopFocus,
2599
+ onLoop,
2600
+ orientation,
2601
+ highlightedIndex: highlightedIndexProp,
2602
+ onHighlightedIndexChange: onHighlightedIndexChangeProp,
2603
+ rootRef,
2604
+ stopEventPropagation,
2605
+ enableHomeAndEndKeys,
2606
+ direction,
2607
+ disabledIndices,
2608
+ modifierKeys
2609
+ }), element = useRenderElement(tag, componentProps, {
2610
+ state,
2611
+ ref: refs,
2612
+ props: [defaultProps, ...props, elementProps],
2613
+ stateAttributesMapping: stateAttributesMapping3
2614
+ }), contextValue = React31.useMemo(() => ({
2615
+ highlightedIndex,
2616
+ onHighlightedIndexChange,
2617
+ highlightItemOnHover,
2618
+ relayKeyboardEvent
2619
+ }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);
2620
+ return _jsx5(CompositeRootContext.Provider, {
2621
+ value: contextValue,
2622
+ children: _jsx5(CompositeList, {
2623
+ elementsRef,
2624
+ onMapChange: (newMap) => {
2625
+ onMapChangeProp?.(newMap), onMapChangeUnwrapped(newMap);
2626
+ },
2627
+ children: element
2628
+ })
2629
+ });
2630
+ }
2631
+
2632
+ // ../../node_modules/@base-ui/react/tabs/list/TabsList.mjs
2633
+ import { jsx as _jsx6 } from "react/jsx-runtime";
2634
+ var TabsList = React32.forwardRef(function(componentProps, forwardedRef) {
2635
+ let {
2636
+ activateOnFocus = !1,
2637
+ className,
2638
+ loopFocus = !0,
2639
+ render,
2640
+ style,
2641
+ ...elementProps
2642
+ } = componentProps, {
2643
+ orientation,
2644
+ setTabMap,
2645
+ tabActivationDirection
2646
+ } = useTabsRootContext(), [highlightedTabIndex, setHighlightedTabIndex] = React32.useState(0), [tabsListElement, setTabsListElement] = React32.useState(null), indicatorUpdateListenersRef = React32.useRef(/* @__PURE__ */ new Set()), tabResizeObserverElementsRef = React32.useRef(/* @__PURE__ */ new Set()), resizeObserverRef = React32.useRef(null);
2647
+ useIsoLayoutEffect(() => {
2648
+ if (typeof ResizeObserver > "u")
2649
+ return;
2650
+ let resizeObserver = new ResizeObserver(() => {
2651
+ indicatorUpdateListenersRef.current.forEach((listener) => {
2652
+ listener();
2653
+ });
2654
+ });
2655
+ return resizeObserverRef.current = resizeObserver, tabsListElement && resizeObserver.observe(tabsListElement), tabResizeObserverElementsRef.current.forEach((element) => {
2656
+ resizeObserver.observe(element);
2657
+ }), () => {
2658
+ resizeObserver.disconnect(), resizeObserverRef.current = null;
2659
+ };
2660
+ }, [tabsListElement]);
2661
+ let registerIndicatorUpdateListener = useStableCallback((listener) => (indicatorUpdateListenersRef.current.add(listener), () => {
2662
+ indicatorUpdateListenersRef.current.delete(listener);
2663
+ })), registerTabResizeObserverElement = useStableCallback((element) => (tabResizeObserverElementsRef.current.add(element), resizeObserverRef.current?.observe(element), () => {
2664
+ tabResizeObserverElementsRef.current.delete(element), resizeObserverRef.current?.unobserve(element);
2665
+ })), state = {
2666
+ orientation,
2667
+ tabActivationDirection
2668
+ }, defaultProps = {
2669
+ "aria-orientation": orientation === "vertical" ? "vertical" : void 0,
2670
+ role: "tablist"
2671
+ }, tabsListContextValue = React32.useMemo(() => ({
2672
+ activateOnFocus,
2673
+ registerIndicatorUpdateListener,
2674
+ registerTabResizeObserverElement,
2675
+ tabsListElement
2676
+ }), [activateOnFocus, registerIndicatorUpdateListener, registerTabResizeObserverElement, tabsListElement]);
2677
+ return _jsx6(TabsListContext.Provider, {
2678
+ value: tabsListContextValue,
2679
+ children: _jsx6(CompositeRoot, {
2680
+ render,
2681
+ className,
2682
+ style,
2683
+ state,
2684
+ refs: [forwardedRef, setTabsListElement],
2685
+ props: [defaultProps, elementProps],
2686
+ stateAttributesMapping: tabsStateAttributesMapping,
2687
+ highlightedIndex: highlightedTabIndex,
2688
+ enableHomeAndEndKeys: !0,
2689
+ loopFocus,
2690
+ orientation,
2691
+ onHighlightedIndexChange: setHighlightedTabIndex,
2692
+ onMapChange: setTabMap,
2693
+ disabledIndices: EMPTY_ARRAY
2694
+ })
2695
+ });
2696
+ });
2697
+ process.env.NODE_ENV !== "production" && (TabsList.displayName = "TabsList");
2698
+
2699
+ export {
2700
+ useRefWithInit,
2701
+ useStableCallback,
2702
+ NOOP,
2703
+ EMPTY_OBJECT,
2704
+ useOnMount,
2705
+ formatErrorMessage_default,
2706
+ useMergedRefs,
2707
+ isReactVersionAtLeast,
2708
+ mergeProps,
2709
+ useRenderElement,
2710
+ useForcedRerendering,
2711
+ useId,
2712
+ useBaseUiId,
2713
+ getNodeName,
2714
+ getWindow,
2715
+ getDocumentElement,
2716
+ isNode,
2717
+ isElement,
2718
+ isHTMLElement,
2719
+ isShadowRoot,
2720
+ isOverflowElement,
2721
+ isTableElement,
2722
+ isTopLayer,
2723
+ isContainingBlock,
2724
+ getContainingBlock,
2725
+ isWebKit,
2726
+ isLastTraversableNode,
2727
+ getComputedStyle2 as getComputedStyle,
2728
+ getNodeScroll,
2729
+ getParentNode,
2730
+ getOverflowAncestors,
2731
+ getFrameElement,
2732
+ parts_exports,
2733
+ activeElement,
2734
+ contains,
2735
+ closest,
2736
+ getTarget,
2737
+ FOCUSABLE_ATTRIBUTE,
2738
+ transitionStatusMapping,
2739
+ CommonPopupDataAttributes_exports,
2740
+ CommonTriggerDataAttributes_exports,
2741
+ triggerOpenStateMapping,
2742
+ pressableTriggerOpenStateMapping,
2743
+ popupStateMapping,
2744
+ popupTransitionStateMapping,
2745
+ triggerDisabled,
2746
+ isTargetInsideEnabledTrigger,
2747
+ isEventTargetWithin,
2748
+ isRootElement,
2749
+ isTypeableElement,
2750
+ isInteractiveElement,
2751
+ isTypeableCombobox,
2752
+ matchesFocusVisible,
2753
+ getFloatingFocusElement,
2754
+ getNodeChildren,
2755
+ getNodeAncestors,
2756
+ stopEvent,
2757
+ isReactEvent,
2758
+ isVirtualClick,
2759
+ isVirtualPointerEvent,
2760
+ isMouseLikePointerType,
2761
+ isClickLikeEvent,
2762
+ min,
2763
+ max,
2764
+ round,
2765
+ floor,
2766
+ createCoords,
2767
+ clamp,
2768
+ evaluate,
2769
+ getSide,
2770
+ getAlignment,
2771
+ getOppositeAxis,
2772
+ getAxisLength,
2773
+ getSideAxis,
2774
+ getAlignmentAxis,
2775
+ getAlignmentSides,
2776
+ getExpandedPlacements,
2777
+ getOppositeAxisPlacements,
2778
+ getOppositePlacement,
2779
+ getPaddingObject,
2780
+ rectToClientRect,
2781
+ isElementVisible,
2782
+ ownerDocument,
2783
+ isTabbable,
2784
+ focusable,
2785
+ tabbable,
2786
+ getNextTabbable,
2787
+ getPreviousTabbable,
2788
+ getTabbableNearElement,
2789
+ isOutsideEvent,
2790
+ disableFocusInside,
2791
+ enableFocusInside,
2792
+ useCSPContext,
2793
+ useIsoLayoutEffect,
2794
+ DirectionContext,
2795
+ useDirection,
2796
+ getFiniteAnimations,
2797
+ createChangeEventDetails,
2798
+ reason_parts_exports,
2799
+ AnimationFrame,
2800
+ useAnimationFrame,
2801
+ resolveRef,
2802
+ useTransitionStatus,
2803
+ useAnimationsFinished,
2804
+ useOpenChangeComplete,
2805
+ inertValue,
2806
+ getCssDimensions,
2807
+ useButton,
2808
+ COMPOSITE_KEYS,
2809
+ index_parts_exports
2810
+ };