@vasfal/vellum 0.1.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 (484) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +5 -5
  3. package/.next/build-manifest.json +13 -14
  4. package/.next/next-minimal-server.js.nft.json +1 -1
  5. package/.next/next-server.js.nft.json +1 -1
  6. package/.next/prerender-manifest.json +3 -3
  7. package/.next/required-server-files.js +2 -0
  8. package/.next/required-server-files.json +2 -0
  9. package/.next/server/app/(app)/page.js +2 -15
  10. package/.next/server/app/(app)/page.js.nft.json +1 -1
  11. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -3
  12. package/.next/server/app/(app)/session/[name]/page.js +2 -15
  13. package/.next/server/app/(app)/session/[name]/page.js.nft.json +1 -1
  14. package/.next/server/app/(app)/session/[name]/page_client-reference-manifest.js +1 -3
  15. package/.next/server/app/(app)/settings/key/page.js +2 -15
  16. package/.next/server/app/(app)/settings/key/page.js.nft.json +1 -1
  17. package/.next/server/app/(app)/settings/key/page_client-reference-manifest.js +1 -3
  18. package/.next/server/app/_global-error/page.js +32 -9
  19. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  20. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -3
  21. package/.next/server/app/_global-error.html +1 -1
  22. package/.next/server/app/_global-error.meta +2 -1
  23. package/.next/server/app/_global-error.rsc +7 -7
  24. package/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  25. package/.next/server/app/_global-error.segments/{__PAGE__.segment.rsc → _global-error/__PAGE__.segment.rsc} +2 -2
  26. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  27. package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  28. package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  29. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  30. package/.next/server/app/_not-found/page.js +2 -13
  31. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  32. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -3
  33. package/.next/server/app/_not-found.html +1 -1
  34. package/.next/server/app/_not-found.rsc +14 -12
  35. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -12
  36. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  37. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
  38. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  39. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  40. package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -2
  41. package/.next/server/app/api/analyze/route.js +12 -9
  42. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  43. package/.next/server/app/api/analyze/route_client-reference-manifest.js +1 -3
  44. package/.next/server/app/api/key/route.js +1 -8
  45. package/.next/server/app/api/key/route.js.nft.json +1 -1
  46. package/.next/server/app/api/key/route_client-reference-manifest.js +1 -3
  47. package/.next/server/app/api/key-status/route.js +1 -7
  48. package/.next/server/app/api/key-status/route.js.nft.json +1 -1
  49. package/.next/server/app/api/key-status/route_client-reference-manifest.js +1 -3
  50. package/.next/server/app/api/models/route.js +1 -7
  51. package/.next/server/app/api/models/route.js.nft.json +1 -1
  52. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -3
  53. package/.next/server/app/api/revise/route.js +1 -8
  54. package/.next/server/app/api/revise/route.js.nft.json +1 -1
  55. package/.next/server/app/api/revise/route_client-reference-manifest.js +1 -3
  56. package/.next/server/app/icon.svg/route.js +1 -7
  57. package/.next/server/app/icon.svg/route.js.nft.json +1 -1
  58. package/.next/server/app/index.html +1 -1
  59. package/.next/server/app/index.rsc +24 -27
  60. package/.next/server/app/index.segments/!KGFwcCk/__PAGE__.segment.rsc +6 -6
  61. package/.next/server/app/index.segments/!KGFwcCk.segment.rsc +9 -9
  62. package/.next/server/app/index.segments/_full.segment.rsc +24 -27
  63. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  64. package/.next/server/app/index.segments/_index.segment.rsc +6 -6
  65. package/.next/server/app/index.segments/_tree.segment.rsc +4 -4
  66. package/.next/server/app/record-test/page.js +8 -14
  67. package/.next/server/app/record-test/page.js.nft.json +1 -1
  68. package/.next/server/app/record-test/page_client-reference-manifest.js +1 -3
  69. package/.next/server/app/record-test.html +2 -2
  70. package/.next/server/app/record-test.rsc +16 -16
  71. package/.next/server/app/record-test.segments/_full.segment.rsc +16 -16
  72. package/.next/server/app/record-test.segments/_head.segment.rsc +4 -4
  73. package/.next/server/app/record-test.segments/_index.segment.rsc +6 -6
  74. package/.next/server/app/record-test.segments/_tree.segment.rsc +4 -4
  75. package/.next/server/app/record-test.segments/record-test/__PAGE__.segment.rsc +4 -4
  76. package/.next/server/app/record-test.segments/record-test.segment.rsc +3 -3
  77. package/.next/server/app/settings/key.html +1 -1
  78. package/.next/server/app/settings/key.rsc +28 -34
  79. package/.next/server/app/settings/key.segments/!KGFwcCk/settings/key/__PAGE__.segment.rsc +5 -5
  80. package/.next/server/app/settings/key.segments/!KGFwcCk/settings/key.segment.rsc +3 -3
  81. package/.next/server/app/settings/key.segments/!KGFwcCk/settings.segment.rsc +3 -3
  82. package/.next/server/app/settings/key.segments/!KGFwcCk.segment.rsc +9 -9
  83. package/.next/server/app/settings/key.segments/_full.segment.rsc +28 -34
  84. package/.next/server/app/settings/key.segments/_head.segment.rsc +4 -4
  85. package/.next/server/app/settings/key.segments/_index.segment.rsc +6 -6
  86. package/.next/server/app/settings/key.segments/_tree.segment.rsc +4 -4
  87. package/.next/server/app/styleguide/page.js +2 -15
  88. package/.next/server/app/styleguide/page.js.nft.json +1 -1
  89. package/.next/server/app/styleguide/page_client-reference-manifest.js +1 -3
  90. package/.next/server/app/styleguide.html +1 -1
  91. package/.next/server/app/styleguide.rsc +68 -71
  92. package/.next/server/app/styleguide.segments/_full.segment.rsc +68 -71
  93. package/.next/server/app/styleguide.segments/_head.segment.rsc +4 -4
  94. package/.next/server/app/styleguide.segments/_index.segment.rsc +6 -6
  95. package/.next/server/app/styleguide.segments/_tree.segment.rsc +4 -4
  96. package/.next/server/app/styleguide.segments/styleguide/__PAGE__.segment.rsc +43 -45
  97. package/.next/server/app/styleguide.segments/styleguide.segment.rsc +3 -3
  98. package/.next/server/app-paths-manifest.json +5 -5
  99. package/.next/server/chunks/15.js +1 -0
  100. package/.next/server/chunks/319.js +45 -0
  101. package/.next/server/chunks/367.js +122 -0
  102. package/.next/server/chunks/393.js +4 -0
  103. package/.next/server/chunks/491.js +2 -0
  104. package/.next/server/chunks/497.js +1 -0
  105. package/.next/server/chunks/546.js +1 -0
  106. package/.next/server/chunks/592.js +44 -0
  107. package/.next/server/chunks/607.js +4 -0
  108. package/.next/server/chunks/724.js +1 -0
  109. package/.next/server/chunks/741.js +18 -0
  110. package/.next/server/chunks/813.js +1 -0
  111. package/.next/server/chunks/837.js +75 -0
  112. package/.next/server/chunks/852.js +14 -0
  113. package/.next/server/chunks/907.js +62 -0
  114. package/.next/server/chunks/915.js +8 -0
  115. package/.next/server/chunks/994.js +8 -0
  116. package/.next/server/middleware-build-manifest.js +1 -21
  117. package/.next/server/middleware-manifest.json +2 -2
  118. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  119. package/.next/server/next-font-manifest.js +1 -1
  120. package/.next/server/next-font-manifest.json +1 -31
  121. package/.next/server/pages/404.html +1 -1
  122. package/.next/server/pages/500.html +1 -1
  123. package/.next/server/server-reference-manifest.js +1 -1
  124. package/.next/server/server-reference-manifest.json +1 -5
  125. package/.next/server/webpack-runtime.js +1 -0
  126. package/.next/static/FExJe2q2O67X3zxf-SYQ_/_buildManifest.js +1 -0
  127. package/.next/static/chunks/185-9c51ded7cd36ca7e.js +1 -0
  128. package/.next/static/chunks/20-cca33f633fa125b2.js +1 -0
  129. package/.next/static/chunks/27-02413cc56fbb4570.js +1 -0
  130. package/.next/static/chunks/376-6f7bc95550542e0b.js +62 -0
  131. package/.next/static/chunks/479-ea67f878851afbcd.js +1 -0
  132. package/.next/static/chunks/493-6bd8c75c972d3abd.js +2 -0
  133. package/.next/static/chunks/4bd1b696-deb4a0a1da1923b0.js +1 -0
  134. package/.next/static/chunks/603-6235d4d53b37035c.js +1 -0
  135. package/.next/static/chunks/743-c183133e0fbf1564.js +44 -0
  136. package/.next/static/chunks/793-5e37343b804eb1d9.js +1 -0
  137. package/.next/static/chunks/794-dc751ec6c8c611f8.js +32 -0
  138. package/.next/static/chunks/924-9226750edc5c2c2f.js +1 -0
  139. package/.next/static/chunks/95247769-a29d70f7fbba27c6.js +1 -0
  140. package/.next/static/chunks/app/(app)/layout-aad46049bfd54648.js +1 -0
  141. package/.next/static/chunks/app/(app)/page-d75e1fccccdbe30e.js +1 -0
  142. package/.next/static/chunks/app/(app)/session/[name]/page-60529ed1fd7a66a1.js +1 -0
  143. package/.next/static/chunks/app/(app)/settings/key/page-c2aab9f11db98d4e.js +1 -0
  144. package/.next/static/chunks/app/_global-error/page-b1c3f51315835726.js +1 -0
  145. package/.next/static/chunks/app/_not-found/page-6830be21b0ed0c95.js +1 -0
  146. package/.next/static/chunks/app/api/analyze/route-b1c3f51315835726.js +1 -0
  147. package/.next/static/chunks/app/api/key/route-b1c3f51315835726.js +1 -0
  148. package/.next/static/chunks/app/api/key-status/route-b1c3f51315835726.js +1 -0
  149. package/.next/static/chunks/app/api/models/route-b1c3f51315835726.js +1 -0
  150. package/.next/static/chunks/app/api/revise/route-b1c3f51315835726.js +1 -0
  151. package/.next/static/chunks/app/layout-aa71ca14e7f13c0c.js +1 -0
  152. package/.next/static/chunks/app/record-test/page-efb4287dda79ede4.js +7 -0
  153. package/.next/static/chunks/app/styleguide/page-f39510e82c1f9f31.js +1 -0
  154. package/.next/static/chunks/framework-b29f9083d3cda3b2.js +1 -0
  155. package/.next/static/chunks/main-app-39f57c6e6702740e.js +1 -0
  156. package/.next/static/chunks/main-fac8900b4f9c4833.js +5 -0
  157. package/.next/static/chunks/next/dist/client/components/builtin/app-error-b1c3f51315835726.js +1 -0
  158. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b1c3f51315835726.js +1 -0
  159. package/.next/static/chunks/next/dist/client/components/builtin/global-error-c1d4bb24e31b66a2.js +1 -0
  160. package/.next/static/chunks/next/dist/client/components/builtin/not-found-b1c3f51315835726.js +1 -0
  161. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b1c3f51315835726.js +1 -0
  162. package/.next/static/chunks/webpack-ceb933bd5f77076f.js +1 -0
  163. package/.next/static/css/e2905f0858acd77d.css +3 -0
  164. package/.next/types/app/(app)/page.ts +87 -0
  165. package/.next/types/app/(app)/session/[name]/page.ts +87 -0
  166. package/.next/types/app/(app)/settings/key/page.ts +87 -0
  167. package/.next/types/app/api/analyze/route.ts +351 -0
  168. package/.next/types/app/api/key/route.ts +351 -0
  169. package/.next/types/app/api/key-status/route.ts +351 -0
  170. package/.next/types/app/api/models/route.ts +351 -0
  171. package/.next/types/app/api/revise/route.ts +351 -0
  172. package/.next/types/app/layout.ts +87 -0
  173. package/.next/types/app/record-test/page.ts +87 -0
  174. package/.next/types/app/styleguide/page.ts +87 -0
  175. package/.next/types/package.json +1 -0
  176. package/README.md +4 -6
  177. package/next.config.ts +8 -0
  178. package/package.json +4 -4
  179. package/.next/build/56416d4ae4ce586f.js +0 -6
  180. package/.next/build/56416d4ae4ce586f.js.map +0 -5
  181. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +0 -206
  182. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +0 -8
  183. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +0 -500
  184. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +0 -11
  185. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +0 -13
  186. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +0 -5
  187. package/.next/build/chunks/[turbopack]_runtime.js +0 -890
  188. package/.next/build/chunks/[turbopack]_runtime.js.map +0 -11
  189. package/.next/build/chunks/node_modules_20v-8wl._.js +0 -6832
  190. package/.next/build/chunks/node_modules_20v-8wl._.js.map +0 -47
  191. package/.next/build/package.json +0 -1
  192. package/.next/cache/.previewinfo +0 -1
  193. package/.next/cache/.rscinfo +0 -1
  194. package/.next/cache/.tsbuildinfo +0 -1
  195. package/.next/diagnostics/route-bundle-stats.json +0 -111
  196. package/.next/fallback-build-manifest.json +0 -13
  197. package/.next/server/app/(app)/page/app-paths-manifest.json +0 -3
  198. package/.next/server/app/(app)/page/build-manifest.json +0 -17
  199. package/.next/server/app/(app)/page/next-font-manifest.json +0 -11
  200. package/.next/server/app/(app)/page/server-reference-manifest.json +0 -4
  201. package/.next/server/app/(app)/page.js.map +0 -5
  202. package/.next/server/app/(app)/session/[name]/page/app-paths-manifest.json +0 -3
  203. package/.next/server/app/(app)/session/[name]/page/build-manifest.json +0 -17
  204. package/.next/server/app/(app)/session/[name]/page/next-font-manifest.json +0 -11
  205. package/.next/server/app/(app)/session/[name]/page/react-loadable-manifest.json +0 -1
  206. package/.next/server/app/(app)/session/[name]/page/server-reference-manifest.json +0 -4
  207. package/.next/server/app/(app)/session/[name]/page.js.map +0 -5
  208. package/.next/server/app/(app)/settings/key/page/app-paths-manifest.json +0 -3
  209. package/.next/server/app/(app)/settings/key/page/build-manifest.json +0 -17
  210. package/.next/server/app/(app)/settings/key/page/next-font-manifest.json +0 -11
  211. package/.next/server/app/(app)/settings/key/page/react-loadable-manifest.json +0 -1
  212. package/.next/server/app/(app)/settings/key/page/server-reference-manifest.json +0 -4
  213. package/.next/server/app/(app)/settings/key/page.js.map +0 -5
  214. package/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  215. package/.next/server/app/_global-error/page/build-manifest.json +0 -17
  216. package/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  217. package/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  218. package/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  219. package/.next/server/app/_global-error/page.js.map +0 -5
  220. package/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  221. package/.next/server/app/_not-found/page/build-manifest.json +0 -17
  222. package/.next/server/app/_not-found/page/next-font-manifest.json +0 -11
  223. package/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
  224. package/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
  225. package/.next/server/app/_not-found/page.js.map +0 -5
  226. package/.next/server/app/api/analyze/route/app-paths-manifest.json +0 -3
  227. package/.next/server/app/api/analyze/route/build-manifest.json +0 -9
  228. package/.next/server/app/api/analyze/route/server-reference-manifest.json +0 -4
  229. package/.next/server/app/api/analyze/route.js.map +0 -5
  230. package/.next/server/app/api/key/route/app-paths-manifest.json +0 -3
  231. package/.next/server/app/api/key/route/build-manifest.json +0 -9
  232. package/.next/server/app/api/key/route/server-reference-manifest.json +0 -4
  233. package/.next/server/app/api/key/route.js.map +0 -5
  234. package/.next/server/app/api/key-status/route/app-paths-manifest.json +0 -3
  235. package/.next/server/app/api/key-status/route/build-manifest.json +0 -9
  236. package/.next/server/app/api/key-status/route/server-reference-manifest.json +0 -4
  237. package/.next/server/app/api/key-status/route.js.map +0 -5
  238. package/.next/server/app/api/models/route/app-paths-manifest.json +0 -3
  239. package/.next/server/app/api/models/route/build-manifest.json +0 -9
  240. package/.next/server/app/api/models/route/server-reference-manifest.json +0 -4
  241. package/.next/server/app/api/models/route.js.map +0 -5
  242. package/.next/server/app/api/revise/route/app-paths-manifest.json +0 -3
  243. package/.next/server/app/api/revise/route/build-manifest.json +0 -9
  244. package/.next/server/app/api/revise/route/server-reference-manifest.json +0 -4
  245. package/.next/server/app/api/revise/route.js.map +0 -5
  246. package/.next/server/app/icon.svg/route/app-paths-manifest.json +0 -3
  247. package/.next/server/app/icon.svg/route/build-manifest.json +0 -9
  248. package/.next/server/app/icon.svg/route.js.map +0 -5
  249. package/.next/server/app/record-test/page/app-paths-manifest.json +0 -3
  250. package/.next/server/app/record-test/page/build-manifest.json +0 -17
  251. package/.next/server/app/record-test/page/next-font-manifest.json +0 -11
  252. package/.next/server/app/record-test/page/react-loadable-manifest.json +0 -1
  253. package/.next/server/app/record-test/page/server-reference-manifest.json +0 -4
  254. package/.next/server/app/record-test/page.js.map +0 -5
  255. package/.next/server/app/styleguide/page/app-paths-manifest.json +0 -3
  256. package/.next/server/app/styleguide/page/build-manifest.json +0 -17
  257. package/.next/server/app/styleguide/page/next-font-manifest.json +0 -11
  258. package/.next/server/app/styleguide/page/react-loadable-manifest.json +0 -1
  259. package/.next/server/app/styleguide/page/server-reference-manifest.json +0 -4
  260. package/.next/server/app/styleguide/page.js.map +0 -5
  261. package/.next/server/chunks/[externals]__1l0bqbz._.js +0 -3
  262. package/.next/server/chunks/[externals]__1l0bqbz._.js.map +0 -1
  263. package/.next/server/chunks/[root-of-the-server]__00u0a0m._.js +0 -3
  264. package/.next/server/chunks/[root-of-the-server]__00u0a0m._.js.map +0 -1
  265. package/.next/server/chunks/[root-of-the-server]__02oblj7._.js +0 -3
  266. package/.next/server/chunks/[root-of-the-server]__02oblj7._.js.map +0 -1
  267. package/.next/server/chunks/[root-of-the-server]__04dzkv1._.js +0 -3
  268. package/.next/server/chunks/[root-of-the-server]__04dzkv1._.js.map +0 -1
  269. package/.next/server/chunks/[root-of-the-server]__081zp1m._.js +0 -3
  270. package/.next/server/chunks/[root-of-the-server]__081zp1m._.js.map +0 -1
  271. package/.next/server/chunks/[root-of-the-server]__0dkua3v._.js +0 -3
  272. package/.next/server/chunks/[root-of-the-server]__0dkua3v._.js.map +0 -1
  273. package/.next/server/chunks/[root-of-the-server]__0ezil_h._.js +0 -3
  274. package/.next/server/chunks/[root-of-the-server]__0ezil_h._.js.map +0 -1
  275. package/.next/server/chunks/[root-of-the-server]__0ww_12a._.js +0 -3
  276. package/.next/server/chunks/[root-of-the-server]__0ww_12a._.js.map +0 -1
  277. package/.next/server/chunks/[root-of-the-server]__0x-kpif._.js +0 -3
  278. package/.next/server/chunks/[root-of-the-server]__0x-kpif._.js.map +0 -1
  279. package/.next/server/chunks/[root-of-the-server]__15bjnu5._.js +0 -3
  280. package/.next/server/chunks/[root-of-the-server]__15bjnu5._.js.map +0 -1
  281. package/.next/server/chunks/[root-of-the-server]__1kmbnvv._.js +0 -3
  282. package/.next/server/chunks/[root-of-the-server]__1kmbnvv._.js.map +0 -1
  283. package/.next/server/chunks/[root-of-the-server]__1kp4vwc._.js +0 -14
  284. package/.next/server/chunks/[root-of-the-server]__1kp4vwc._.js.map +0 -1
  285. package/.next/server/chunks/[root-of-the-server]__1lbd3kd._.js +0 -3
  286. package/.next/server/chunks/[root-of-the-server]__1lbd3kd._.js.map +0 -1
  287. package/.next/server/chunks/[root-of-the-server]__1ra6psc._.js +0 -3
  288. package/.next/server/chunks/[root-of-the-server]__1ra6psc._.js.map +0 -1
  289. package/.next/server/chunks/[root-of-the-server]__1zn977r._.js +0 -3
  290. package/.next/server/chunks/[root-of-the-server]__1zn977r._.js.map +0 -1
  291. package/.next/server/chunks/[turbopack]_runtime.js +0 -903
  292. package/.next/server/chunks/[turbopack]_runtime.js.map +0 -11
  293. package/.next/server/chunks/_04h1cv_._.js +0 -185
  294. package/.next/server/chunks/_04h1cv_._.js.map +0 -1
  295. package/.next/server/chunks/_0pqmhjh._.js +0 -185
  296. package/.next/server/chunks/_0pqmhjh._.js.map +0 -1
  297. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +0 -3
  298. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js.map +0 -1
  299. package/.next/server/chunks/_next-internal_server_app_api_key-status_route_actions_1qgztm2.js +0 -3
  300. package/.next/server/chunks/_next-internal_server_app_api_key-status_route_actions_1qgztm2.js.map +0 -1
  301. package/.next/server/chunks/_next-internal_server_app_api_key_route_actions_15n2qsb.js +0 -3
  302. package/.next/server/chunks/_next-internal_server_app_api_key_route_actions_15n2qsb.js.map +0 -1
  303. package/.next/server/chunks/_next-internal_server_app_api_models_route_actions_1h6mkqp.js +0 -3
  304. package/.next/server/chunks/_next-internal_server_app_api_models_route_actions_1h6mkqp.js.map +0 -1
  305. package/.next/server/chunks/_next-internal_server_app_api_revise_route_actions_19kk3m-.js +0 -3
  306. package/.next/server/chunks/_next-internal_server_app_api_revise_route_actions_19kk3m-.js.map +0 -1
  307. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +0 -3
  308. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js.map +0 -1
  309. package/.next/server/chunks/node_modules_0x51oh_._.js +0 -10
  310. package/.next/server/chunks/node_modules_0x51oh_._.js.map +0 -1
  311. package/.next/server/chunks/node_modules_19bvt3l._.js +0 -6
  312. package/.next/server/chunks/node_modules_19bvt3l._.js.map +0 -1
  313. package/.next/server/chunks/node_modules_1_-az43._.js +0 -16
  314. package/.next/server/chunks/node_modules_1_-az43._.js.map +0 -1
  315. package/.next/server/chunks/node_modules_1t2pqct._.js +0 -10
  316. package/.next/server/chunks/node_modules_1t2pqct._.js.map +0 -1
  317. package/.next/server/chunks/node_modules_next_08s853w._.js +0 -13
  318. package/.next/server/chunks/node_modules_next_08s853w._.js.map +0 -1
  319. package/.next/server/chunks/node_modules_node-fetch_src_index_1gf-_pn.js +0 -3
  320. package/.next/server/chunks/node_modules_node-fetch_src_index_1gf-_pn.js.map +0 -1
  321. package/.next/server/chunks/ssr/[externals]__1l0bqbz._.js +0 -3
  322. package/.next/server/chunks/ssr/[externals]__1l0bqbz._.js.map +0 -1
  323. package/.next/server/chunks/ssr/[root-of-the-server]__06ync7f._.js +0 -3
  324. package/.next/server/chunks/ssr/[root-of-the-server]__06ync7f._.js.map +0 -1
  325. package/.next/server/chunks/ssr/[root-of-the-server]__0hml-pd._.js +0 -3
  326. package/.next/server/chunks/ssr/[root-of-the-server]__0hml-pd._.js.map +0 -1
  327. package/.next/server/chunks/ssr/[root-of-the-server]__0ntia6u._.js +0 -3
  328. package/.next/server/chunks/ssr/[root-of-the-server]__0ntia6u._.js.map +0 -1
  329. package/.next/server/chunks/ssr/[root-of-the-server]__0sdpd0o._.js +0 -3
  330. package/.next/server/chunks/ssr/[root-of-the-server]__0sdpd0o._.js.map +0 -1
  331. package/.next/server/chunks/ssr/[root-of-the-server]__0w2pa_y._.js +0 -33
  332. package/.next/server/chunks/ssr/[root-of-the-server]__0w2pa_y._.js.map +0 -1
  333. package/.next/server/chunks/ssr/[root-of-the-server]__10y0-wv._.js +0 -3
  334. package/.next/server/chunks/ssr/[root-of-the-server]__10y0-wv._.js.map +0 -1
  335. package/.next/server/chunks/ssr/[root-of-the-server]__11_7weu._.js +0 -3
  336. package/.next/server/chunks/ssr/[root-of-the-server]__11_7weu._.js.map +0 -1
  337. package/.next/server/chunks/ssr/[root-of-the-server]__1_stkwn._.js +0 -3
  338. package/.next/server/chunks/ssr/[root-of-the-server]__1_stkwn._.js.map +0 -1
  339. package/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js +0 -33
  340. package/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js.map +0 -1
  341. package/.next/server/chunks/ssr/[root-of-the-server]__1k6ey-q._.js +0 -3
  342. package/.next/server/chunks/ssr/[root-of-the-server]__1k6ey-q._.js.map +0 -1
  343. package/.next/server/chunks/ssr/[root-of-the-server]__1la73u1._.js +0 -3
  344. package/.next/server/chunks/ssr/[root-of-the-server]__1la73u1._.js.map +0 -1
  345. package/.next/server/chunks/ssr/[root-of-the-server]__1nshnxm._.js +0 -3
  346. package/.next/server/chunks/ssr/[root-of-the-server]__1nshnxm._.js.map +0 -1
  347. package/.next/server/chunks/ssr/[root-of-the-server]__1pssg49._.js +0 -3
  348. package/.next/server/chunks/ssr/[root-of-the-server]__1pssg49._.js.map +0 -1
  349. package/.next/server/chunks/ssr/[root-of-the-server]__1q6zd30._.js +0 -3
  350. package/.next/server/chunks/ssr/[root-of-the-server]__1q6zd30._.js.map +0 -1
  351. package/.next/server/chunks/ssr/[root-of-the-server]__1qlmg27._.js +0 -3
  352. package/.next/server/chunks/ssr/[root-of-the-server]__1qlmg27._.js.map +0 -1
  353. package/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -903
  354. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -11
  355. package/.next/server/chunks/ssr/_01pksvc._.js +0 -78
  356. package/.next/server/chunks/ssr/_01pksvc._.js.map +0 -1
  357. package/.next/server/chunks/ssr/_03lgii8._.js +0 -3
  358. package/.next/server/chunks/ssr/_03lgii8._.js.map +0 -1
  359. package/.next/server/chunks/ssr/_05tft_r._.js +0 -3
  360. package/.next/server/chunks/ssr/_05tft_r._.js.map +0 -1
  361. package/.next/server/chunks/ssr/_06gt995._.js +0 -3
  362. package/.next/server/chunks/ssr/_06gt995._.js.map +0 -1
  363. package/.next/server/chunks/ssr/_0jrh37c._.js +0 -46
  364. package/.next/server/chunks/ssr/_0jrh37c._.js.map +0 -1
  365. package/.next/server/chunks/ssr/_0kw6yq_._.js +0 -3
  366. package/.next/server/chunks/ssr/_0kw6yq_._.js.map +0 -1
  367. package/.next/server/chunks/ssr/_0l3c05z._.js +0 -3
  368. package/.next/server/chunks/ssr/_0l3c05z._.js.map +0 -1
  369. package/.next/server/chunks/ssr/_0n-ojw-._.js +0 -3
  370. package/.next/server/chunks/ssr/_0n-ojw-._.js.map +0 -1
  371. package/.next/server/chunks/ssr/_0t6a1ln._.js +0 -6
  372. package/.next/server/chunks/ssr/_0t6a1ln._.js.map +0 -1
  373. package/.next/server/chunks/ssr/_0td-xk-._.js +0 -3
  374. package/.next/server/chunks/ssr/_0td-xk-._.js.map +0 -1
  375. package/.next/server/chunks/ssr/_0y92f-y._.js +0 -46
  376. package/.next/server/chunks/ssr/_0y92f-y._.js.map +0 -1
  377. package/.next/server/chunks/ssr/_1b6au28._.js +0 -3
  378. package/.next/server/chunks/ssr/_1b6au28._.js.map +0 -1
  379. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_page_actions_1gxdy57.js +0 -3
  380. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_page_actions_1gxdy57.js.map +0 -1
  381. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_session_[name]_page_actions_115d_ja.js +0 -3
  382. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_session_[name]_page_actions_115d_ja.js.map +0 -1
  383. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_settings_key_page_actions_1jsc3or.js +0 -3
  384. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_settings_key_page_actions_1jsc3or.js.map +0 -1
  385. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +0 -3
  386. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +0 -1
  387. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +0 -3
  388. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +0 -1
  389. package/.next/server/chunks/ssr/_next-internal_server_app_record-test_page_actions_0a_yofw.js +0 -3
  390. package/.next/server/chunks/ssr/_next-internal_server_app_record-test_page_actions_0a_yofw.js.map +0 -1
  391. package/.next/server/chunks/ssr/_next-internal_server_app_styleguide_page_actions_174h7x7.js +0 -3
  392. package/.next/server/chunks/ssr/_next-internal_server_app_styleguide_page_actions_174h7x7.js.map +0 -1
  393. package/.next/server/chunks/ssr/node_modules_0el53_h._.js +0 -10
  394. package/.next/server/chunks/ssr/node_modules_0el53_h._.js.map +0 -1
  395. package/.next/server/chunks/ssr/node_modules_0h91jdk._.js +0 -33
  396. package/.next/server/chunks/ssr/node_modules_0h91jdk._.js.map +0 -1
  397. package/.next/server/chunks/ssr/node_modules_1fxqp22._.js +0 -10
  398. package/.next/server/chunks/ssr/node_modules_1fxqp22._.js.map +0 -1
  399. package/.next/server/chunks/ssr/node_modules_1loo6j7._.js +0 -6
  400. package/.next/server/chunks/ssr/node_modules_1loo6j7._.js.map +0 -1
  401. package/.next/server/chunks/ssr/node_modules_1pvqj0r._.js +0 -3
  402. package/.next/server/chunks/ssr/node_modules_1pvqj0r._.js.map +0 -1
  403. package/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js +0 -6
  404. package/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js.map +0 -1
  405. package/.next/server/chunks/ssr/node_modules_next_dist_172hvm-._.js +0 -19
  406. package/.next/server/chunks/ssr/node_modules_next_dist_172hvm-._.js.map +0 -1
  407. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +0 -3
  408. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +0 -1
  409. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +0 -3
  410. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +0 -1
  411. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +0 -3
  412. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js.map +0 -1
  413. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +0 -3
  414. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +0 -1
  415. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_q50sh.js +0 -4
  416. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_q50sh.js.map +0 -1
  417. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js +0 -4
  418. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js.map +0 -1
  419. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_119i6eu.js +0 -4
  420. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_119i6eu.js.map +0 -1
  421. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14nl2rs.js +0 -4
  422. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14nl2rs.js.map +0 -1
  423. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18u8k23.js +0 -4
  424. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18u8k23.js.map +0 -1
  425. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js +0 -4
  426. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js.map +0 -1
  427. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_iwj0a.js +0 -4
  428. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_iwj0a.js.map +0 -1
  429. package/.next/server/chunks/ssr/node_modules_node-fetch_src_index_1e0t9p6.js +0 -3
  430. package/.next/server/chunks/ssr/node_modules_node-fetch_src_index_1e0t9p6.js.map +0 -1
  431. package/.next/server/chunks/ssr/src_19oqe9t._.js +0 -3
  432. package/.next/server/chunks/ssr/src_19oqe9t._.js.map +0 -1
  433. package/.next/server/chunks/ssr/src_app_record-test_page_tsx_08-2bld._.js +0 -9
  434. package/.next/server/chunks/ssr/src_app_record-test_page_tsx_08-2bld._.js.map +0 -1
  435. package/.next/server/chunks/ssr/src_components_app-sidebar_tsx_1xx2k53._.js +0 -3
  436. package/.next/server/chunks/ssr/src_components_app-sidebar_tsx_1xx2k53._.js.map +0 -1
  437. package/.next/server/chunks/ssr/src_components_settings_key-setup_tsx_0jxhnpa._.js +0 -3
  438. package/.next/server/chunks/ssr/src_components_settings_key-setup_tsx_0jxhnpa._.js.map +0 -1
  439. package/.next/server/chunks/ssr/src_components_ui_0lq7ewx._.js +0 -3
  440. package/.next/server/chunks/ssr/src_components_ui_0lq7ewx._.js.map +0 -1
  441. package/.next/static/CIZxngYjzUw1Kb0KrE473/_buildManifest.js +0 -11
  442. package/.next/static/CIZxngYjzUw1Kb0KrE473/_clientMiddlewareManifest.js +0 -1
  443. package/.next/static/chunks/05-c3ty_6dwfk.js +0 -1
  444. package/.next/static/chunks/07-hzktxqjvzd.js +0 -4
  445. package/.next/static/chunks/09bn0buuu6k2x.js +0 -1
  446. package/.next/static/chunks/0kkimqpuecvfn.js +0 -1
  447. package/.next/static/chunks/0mk1g55o6kl1e.js +0 -2
  448. package/.next/static/chunks/0ul837-9k0zx_.js +0 -63
  449. package/.next/static/chunks/0wpges32btt_p.js +0 -1
  450. package/.next/static/chunks/18qo-4_hfuwko.js +0 -1
  451. package/.next/static/chunks/1_dsevxz78b97.js +0 -1
  452. package/.next/static/chunks/2-oqhnxovgl_2.js +0 -44
  453. package/.next/static/chunks/2et_7fxuzt9cq.js +0 -31
  454. package/.next/static/chunks/2im7c515bo69p.js +0 -1
  455. package/.next/static/chunks/2merpuxt1zcvf.js +0 -1
  456. package/.next/static/chunks/2qb8lge1e2sv2.js +0 -1
  457. package/.next/static/chunks/2sj0gufu0lojq.css +0 -3
  458. package/.next/static/chunks/2zloaj9ja_vpy.js +0 -1
  459. package/.next/static/chunks/3rvy2rc9d_hwt.js +0 -1
  460. package/.next/static/chunks/3uci2qhsbp444.js +0 -50
  461. package/.next/static/chunks/3yao5u25-bf0g.js +0 -1
  462. package/.next/static/chunks/41_0qs6kjmoek.js +0 -1
  463. package/.next/static/chunks/4395sbjm36lbl.js +0 -1
  464. package/.next/static/chunks/turbopack-2cevjmbuh84ft.js +0 -1
  465. package/.next/static/media/icon.2_sgat73yt9an.svg +0 -7
  466. package/.next/trace +0 -1
  467. package/.next/trace-build +0 -1
  468. package/.next/turbopack +0 -0
  469. /package/.next/{server/app/(app)/page/react-loadable-manifest.json → react-loadable-manifest.json} +0 -0
  470. /package/.next/static/{CIZxngYjzUw1Kb0KrE473 → FExJe2q2O67X3zxf-SYQ_}/_ssgManifest.js +0 -0
  471. /package/.next/static/chunks/{0cz1d0mv5g_q7.js → polyfills-42372ed130431b0a.js} +0 -0
  472. /package/.next/static/media/{5ce348bf30bf5439-s.31988l_ccedte.woff2 → 013b72fa676f92e0-s.woff2} +0 -0
  473. /package/.next/static/media/{5476f68d60460930-s.2uwcyprjm3xu3.woff2 → 19cfc7226ec3afaa-s.woff2} +0 -0
  474. /package/.next/static/media/{9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 → 21350d82a1f187e9-s.woff2} +0 -0
  475. /package/.next/static/media/{bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2 → 2b5b02fc7e511755-s.woff2} +0 -0
  476. /package/.next/static/media/{6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2 → 65f03d54ccadf4a8-s.woff2} +0 -0
  477. /package/.next/static/media/{797e433ab948586e-s.p.0r6juujl39pe6.woff2 → 7d4881bb7e1bf84d-s.p.woff2} +0 -0
  478. /package/.next/static/media/{1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 → 8e9860b6e62d6359-s.woff2} +0 -0
  479. /package/.next/static/media/{4fa387ec64143e14-s.2tuy5pz7dlieh.woff2 → b9408752a0c24fb9-s.woff2} +0 -0
  480. /package/.next/static/media/{2c55a0e60120577a-s.0-dom-5bn10r2.woff2 → ba9851c3c22cd980-s.woff2} +0 -0
  481. /package/.next/static/media/{ad66f9afd8947f86-s.3lvt2whj97whp.woff2 → c5fe6dc8356a8c31-s.woff2} +0 -0
  482. /package/.next/static/media/{2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 → df0a9ae256c0569c-s.woff2} +0 -0
  483. /package/.next/static/media/{7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2 → e038a29029a234f2-s.woff2} +0 -0
  484. /package/.next/static/media/{83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 → e4af272ccee01ff0-s.p.woff2} +0 -0
@@ -1,46 +0,0 @@
1
- module.exports=[58430,90864,a=>{"use strict";let b=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim();a.s(["mergeClasses",0,b],58430);var c=a.i(72131),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let e=(0,c.createContext)({}),f=(0,c.forwardRef)(({color:a,size:f,strokeWidth:g,absoluteStrokeWidth:h,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,c.useContext)(e)??{},s=h??p?24*Number(g??o)/Number(f??n):g??o;return(0,c.createElement)("svg",{ref:m,...d,width:f??n??d.width,height:f??n??d.height,stroke:a??q,strokeWidth:s,className:b("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,b])=>(0,c.createElement)(a,b)),...Array.isArray(j)?j:[j]])});a.s(["default",0,f],90864)},64831,a=>{"use strict";var b=a.i(72131),c=a.i(58430);let d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e=a.i(90864);a.s(["default",0,(a,f)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(e.default,{ref:i,iconNode:f,className:(0,c.mergeClasses)(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g}],64831)},76013,82707,a=>{"use strict";async function b(a,b){var c;let d,e=(c=b,d=a=>String(a).padStart(2,"0"),`${c.getFullYear()}-${d(c.getMonth()+1)}-${d(c.getDate())}-${d(c.getHours())}-${d(c.getMinutes())}`),f=e,g=1;for(;g<1e3;){try{await a.getDirectoryHandle(f)}catch(b){if(b instanceof DOMException&&"NotFoundError"===b.name)return{dir:await a.getDirectoryHandle(f,{create:!0}),name:f};throw b}g+=1,f=`${e}-${g}`}throw Error(`Could not create a unique session folder for "${e}"`)}a.s(["createSessionDir",0,b],82707);let c="recording.webm";async function d(a,d){let{dir:e,name:f}=await b(a,d),g=await e.getFileHandle(c,{create:!0}),h=await g.createWritable(),i=Promise.resolve();return{sessionDirName:f,relativePath:`${f}/${c}`,write:a=>i=i.then(()=>h.write(a)),close:async()=>{await i,await h.close()}}}a.s(["createRecordingSink",0,d,"pickWorkspaceDirectory",0,function(){return window.showDirectoryPicker({mode:"readwrite"})}],76013)},69712,40990,20917,49140,38835,19895,67534,a=>{"use strict";var b=a.i(87924),c=a.i(64831);let d=(0,c.default)("mic",[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3",key:"s6n7sd"}]]);a.s(["Mic",0,d],40990);let e=(0,c.default)("mic-off",[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M16.95 16.95A7 7 0 0 1 5 12v-2",key:"cqa7eg"}],["path",{d:"M18.89 13.23A7 7 0 0 0 19 12v-2",key:"16hl24"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}]]);a.s(["MicOff",0,e],20917);let f=(0,c.default)("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);a.s(["Pause",0,f],49140);let g=(0,c.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",0,g],38835);let h=(0,c.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",0,h],19895);var i=a.i(72131);function j(a){let b=Math.floor(a/1e3),c=b%60,d=Math.floor(b/60)%60,e=Math.floor(b/3600),f=a=>String(a).padStart(2,"0");return e>0?`${e}:${f(d)}:${f(c)}`:`${d}:${f(c)}`}a.s(["formatElapsed",0,j,"useRecordingElapsed",0,function(){let a=(0,i.useRef)(0),b=(0,i.useRef)(null),c=(0,i.useRef)("inactive"),[d,e]=(0,i.useState)(0),[f,g]=(0,i.useState)(!1),h=(0,i.useCallback)(()=>a.current+(null!==b.current?performance.now()-b.current:0),[]),j=(0,i.useCallback)(d=>{let f=c.current;if(d===f)return;let i=performance.now();"recording"===d?("inactive"===f&&(a.current=0),b.current=i):null!==b.current&&(a.current+=i-b.current,b.current=null),c.current=d,e(h()),g("recording"===d)},[h]);return(0,i.useEffect)(()=>{if(!f)return;let a=window.setInterval(()=>e(h()),200);return()=>window.clearInterval(a)},[f,h]),{elapsedMs:d,setState:j}}],67534);let k="oklch(0.985 0 0)",l="oklch(0.708 0 0)";a.s(["PipRecorderControls",0,function({recState:a,elapsedMs:c,micEnabled:i,onPauseResume:m,onStop:n,onToggleMic:o}){let p="recording"===a,q="paused"===a,r=p||q,s=q?`1.5px solid ${k}`:"none",t=r?k:l;return(0,b.jsxs)("div",{style:{boxSizing:"border-box",width:"100%",height:"100vh",display:"flex",alignItems:"center",gap:"12px",padding:"0 14px"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"9px",minWidth:0},children:[(0,b.jsx)("span",{className:p?"vellum-rec-dot":void 0,style:{width:"9px",height:"9px",borderRadius:"50%",background:p?k:q?"transparent":"oklch(0.47 0 0)",border:s,boxSizing:"border-box",flexShrink:0}}),(0,b.jsxs)("span",{style:{display:"flex",flexDirection:"column",lineHeight:1.1},children:[(0,b.jsx)("span",{style:{fontSize:"9px",fontWeight:600,letterSpacing:"0.1em",color:t,fontFamily:"ui-monospace, 'Geist Mono', monospace"},children:p?"REC":q?"PAUSED":"IDLE"}),(0,b.jsx)("span",{style:{fontSize:"19px",fontVariantNumeric:"tabular-nums",fontFamily:"ui-monospace, 'Geist Mono', monospace",letterSpacing:"0.02em",color:t},children:j(c)})]})]}),(0,b.jsx)("span",{style:{flex:1}}),(0,b.jsx)("button",{type:"button",className:"vellum-pip-btn",onClick:o,"aria-label":i?"Mute microphone":"Unmute microphone",title:i?"Mic on":"Mic off",style:i?void 0:{color:l},children:i?(0,b.jsx)(d,{size:16,strokeWidth:1.75}):(0,b.jsx)(e,{size:16,strokeWidth:1.75})}),(0,b.jsx)("button",{type:"button",className:"vellum-pip-btn",onClick:m,disabled:!r,"aria-label":q?"Resume recording":"Pause recording",title:q?"Resume":"Pause",children:q?(0,b.jsx)(g,{size:16,strokeWidth:1.75}):(0,b.jsx)(f,{size:16,strokeWidth:1.75})}),(0,b.jsx)("button",{type:"button",className:"vellum-pip-btn","data-variant":"stop",onClick:n,disabled:!r,"aria-label":"Stop recording",title:"Stop",children:(0,b.jsx)(h,{size:15,strokeWidth:2,fill:"currentColor"})})]})}],69712)},77445,a=>{"use strict";var b=a.i(72131);let c=`
2
- :root { color-scheme: dark; }
3
- body {
4
- margin: 0;
5
- background: oklch(0.145 0 0);
6
- color: oklch(0.985 0 0);
7
- font-family: ui-sans-serif, system-ui, sans-serif;
8
- -webkit-font-smoothing: antialiased;
9
- }
10
- @keyframes vellum-rec-pulse {
11
- 0%, 100% { opacity: 1; transform: scale(1); }
12
- 50% { opacity: 0.35; transform: scale(0.82); }
13
- }
14
- .vellum-rec-dot { animation: vellum-rec-pulse 1.6s ease-in-out infinite; }
15
-
16
- .vellum-pip-btn {
17
- display: inline-flex;
18
- align-items: center;
19
- justify-content: center;
20
- width: 34px;
21
- height: 34px;
22
- padding: 0;
23
- background: oklch(0.205 0 0);
24
- color: oklch(0.985 0 0);
25
- border: 1px solid oklch(1 0 0 / 8%);
26
- border-radius: 7px;
27
- cursor: pointer;
28
- transition: background-color 150ms ease-out, transform 150ms ease-out;
29
- }
30
- .vellum-pip-btn:hover { background: oklch(0.245 0 0); }
31
- .vellum-pip-btn:active { transform: scale(0.95); }
32
- .vellum-pip-btn:disabled {
33
- background: oklch(0.205 0 0);
34
- color: oklch(0.47 0 0);
35
- cursor: not-allowed;
36
- }
37
- /* Stop = high-emphasis (inverted), the primary action of the widget. */
38
- .vellum-pip-btn[data-variant="stop"] {
39
- background: oklch(0.985 0 0);
40
- color: oklch(0.145 0 0);
41
- border-color: transparent;
42
- }
43
- .vellum-pip-btn[data-variant="stop"]:hover { background: oklch(0.9 0 0); }
44
- `;a.s(["useDocumentPip",0,function({onClose:a}={}){let[d,e]=(0,b.useState)(null),f=(0,b.useSyncExternalStore)(()=>()=>{},()=>"documentPictureInPicture"in window,()=>!1),g=(0,b.useRef)(a);(0,b.useEffect)(()=>{g.current=a});let h=(0,b.useCallback)(async({width:a,height:b})=>{let d=window.documentPictureInPicture;if(!d)return null;let f=await d.requestWindow({width:a,height:b}),h=f.document.createElement("style");return h.textContent=c,f.document.head.appendChild(h),f.addEventListener("pagehide",()=>{e(null),g.current?.()},{once:!0}),e(f),f},[]),i=(0,b.useCallback)(()=>{d?.close()},[d]),j=(0,b.useRef)(null);return(0,b.useEffect)(()=>{j.current=d},[d]),(0,b.useEffect)(()=>()=>j.current?.close(),[]),{isSupported:f,pipWindow:d,open:h,close:i}}])},66548,a=>{"use strict";let b="video/webm; codecs=vp9,opus";a.s(["VELLUM_MIME",0,b,"VELLUM_TIMESLICE_MS",0,1e3,"createRecorder",0,function({stream:a,onChunk:c,onError:d}){if(!MediaRecorder.isTypeSupported(b))throw Error(`MediaRecorder cannot record "${b}" in this browser`);let e=new MediaRecorder(a,{mimeType:b,videoBitsPerSecond:25e5});return e.addEventListener("dataavailable",a=>{a.data.size>0&&c(a.data)}),e.addEventListener("error",a=>{let b=a.error;d?.(b??Error("MediaRecorder error"))}),{start:()=>e.start(1e3),pause:()=>e.pause(),resume:()=>e.resume(),stop:()=>new Promise(a=>{e.addEventListener("stop",()=>a(),{once:!0}),e.stop()}),state:()=>e.state}}])}];
45
-
46
- //# sourceMappingURL=_0jrh37c._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../node_modules/shared/src/utils/hasA11yProp.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/shared/src/utils/mergeClasses.ts","../../../../node_modules/lucide-react/src/context.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/shared/src/utils/toCamelCase.ts","../../../../node_modules/shared/src/utils/toKebabCase.ts","../../../../node_modules/shared/src/utils/toPascalCase.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../src/lib/filesystem/session-dir.ts","../../../../src/lib/filesystem/recording-sink.ts","../../../../src/components/recording/pip-recorder-controls.tsx","../../../../src/hooks/useRecordingElapsed.ts","../../../../node_modules/lucide-react/src/icons/pause.ts","../../../../node_modules/lucide-react/src/icons/square.ts","../../../../node_modules/lucide-react/src/icons/mic.ts","../../../../node_modules/lucide-react/src/icons/mic-off.ts","../../../../node_modules/lucide-react/src/icons/play.ts","../../../../src/hooks/useDocumentPip.ts","../../../../src/lib/recording/recorder.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n absoluteStrokeWidth: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n","'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\nimport { useLucideContext } from './context';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n { color, size, strokeWidth, absoluteStrokeWidth, className = '', children, iconNode, ...rest },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const calculatedStrokeWidth =\n absoluteStrokeWidth ?? contextAbsoluteStrokeWidth\n ? (Number(strokeWidth ?? contextStrokeWidth) * 24) / Number(size ?? contextSize)\n : strokeWidth ?? contextStrokeWidth;\n\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses('lucide', contextClass, className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","// Create a fresh <timestamp> session folder in the workspace.\n//\n// Extracted from recording-sink.ts (TASK-12) so both entry points to a session\n// share ONE implementation: recording new (TASK-25) and importing an existing\n// video (TASK-30). The naming rule is ARCHITECTURE §Local storage layout: a\n// minute-grained, local-time folder (`2026-06-30-14-30`), suffixed `-2`, `-3`, …\n// on a same-minute collision.\n//\n// `now` is injected (not read from the clock here) so the folder name is\n// deterministic and testable.\n\nexport interface CreatedSessionDir {\n dir: FileSystemDirectoryHandle;\n /** The folder name actually created (post-collision suffix). */\n name: string;\n}\n\n/**\n * Create the session folder, suffixing -2, -3, … if a folder of that name\n * already exists (two sessions started in the same minute). Probes existence\n * with a no-create getDirectoryHandle, which throws NotFoundError when the name\n * is free — that's our signal to claim it.\n */\nexport async function createSessionDir(\n workspace: FileSystemDirectoryHandle,\n now: Date,\n): Promise<CreatedSessionDir> {\n const baseName = formatSessionTimestamp(now);\n let name = baseName;\n let suffix = 1;\n\n // Bounded loop — a runaway here would mean thousands of same-minute folders.\n while (suffix < 1000) {\n try {\n await workspace.getDirectoryHandle(name); // exists? → collision, try next\n } catch (err) {\n if (err instanceof DOMException && err.name === \"NotFoundError\") {\n const dir = await workspace.getDirectoryHandle(name, { create: true });\n return { dir, name };\n }\n throw err; // anything else (e.g. permission) is a real failure — fail loud\n }\n suffix += 1;\n name = `${baseName}-${suffix}`;\n }\n\n throw new Error(`Could not create a unique session folder for \"${baseName}\"`);\n}\n\n/** \"2026-06-30-14-30\" — minute-grained, local time, per ARCHITECTURE §Local storage layout. */\nfunction formatSessionTimestamp(d: Date): string {\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return (\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}-` +\n `${pad(d.getHours())}-${pad(d.getMinutes())}`\n );\n}\n","// TASK-12 — stream a recording to disk via the File System Access API.\n//\n// Consumes the per-chunk `onChunk` seam from the MediaRecorder wrapper\n// (lib/recording/recorder.ts, TASK-11): every timeslice chunk is written to a\n// `createWritable()` stream the moment it arrives, so the full recording is\n// never held in one buffer. That gives OOM-safety on long recordings and means\n// a tab crash loses at most one chunk (ARCHITECTURE §Error handling: \"recording\n// tab crash\").\n//\n// Layout (ARCHITECTURE §Local storage layout): the recording lands at\n// <workspace>/<timestamp>/recording.webm, where <timestamp> is a minute-grained\n// session folder (e.g. 2026-06-30-14-30), with a -2/-3 suffix on collision.\n//\n// SCOPE: this module is only \"pick a folder + stream the file\". Workspace\n// markers (.vellum-workspace.json) and IndexedDB handle persistence are TASK-15\n// (Phase 3) and intentionally not here.\n//\n// CRASH-RECOVERY NOTE (the reason AC#3 is worded the way it is): createWritable()\n// writes to a temporary swap file (Chromium names it `recording.webm.crswap`)\n// and only renames it onto `recording.webm` on close(). So a crash mid-recording\n// leaves the partial bytes in that .crswap sibling, not in recording.webm — the\n// data survives and the WebM plays back truncated, but recovery means renaming\n// the swap file. There is no in-place write mode in the spec. Surfacing those\n// orphaned swap files on next open is recovery-on-open work, tracked separately.\n\nimport { createSessionDir } from \"./session-dir\";\n\nconst RECORDING_FILENAME = \"recording.webm\";\n\n/**\n * Show the native directory picker, requesting read+write upfront so we never\n * have to re-prompt at save time. Throws `AbortError` if the user cancels —\n * callers treat that as \"no-op\", not a failure (fail loud only on real errors).\n */\nexport function pickWorkspaceDirectory(): Promise<FileSystemDirectoryHandle> {\n return window.showDirectoryPicker({ mode: \"readwrite\" });\n}\n\nexport interface RecordingSink {\n /** Session folder name — the <timestamp> dir actually created (post-collision). */\n readonly sessionDirName: string;\n /** Relative path written, e.g. \"2026-06-30-14-30/recording.webm\" — for logs/handoff. */\n readonly relativePath: string;\n /**\n * Enqueue one chunk for writing. Resolves once this chunk and every prior one\n * have hit the swap file. Wire this straight to the recorder's `onChunk`.\n */\n write: (chunk: Blob) => Promise<void>;\n /** Drain the write queue, then commit the swap file to recording.webm. */\n close: () => Promise<void>;\n}\n\n/**\n * Open a streaming sink for a fresh recording inside `workspace`. Creates the\n * timestamp session folder and the recording.webm writable before returning, so\n * the first chunk can be written with zero further setup latency.\n *\n * `now` is injected (not read from the clock here) so the folder name is\n * deterministic and testable.\n */\nexport async function createRecordingSink(\n workspace: FileSystemDirectoryHandle,\n now: Date,\n): Promise<RecordingSink> {\n const { dir, name } = await createSessionDir(workspace, now);\n const fileHandle = await dir.getFileHandle(RECORDING_FILENAME, { create: true });\n // Default options: swap file starts empty (we're writing a brand-new file).\n const writable = await fileHandle.createWritable();\n\n // `dataavailable` fires ~once/second and synchronously, but writable.write()\n // is async and concurrent writes to one stream corrupt it. Serialize through\n // a single promise tail: each write waits for the previous one to land.\n let tail: Promise<void> = Promise.resolve();\n\n return {\n sessionDirName: name,\n relativePath: `${name}/${RECORDING_FILENAME}`,\n write: (chunk) => {\n tail = tail.then(() => writable.write(chunk));\n return tail;\n },\n close: async () => {\n await tail; // let every queued chunk finish writing\n await writable.close(); // atomically commit swap file → recording.webm\n },\n };\n}\n","\"use client\";\n\n// TASK-16 — the floating recording widget rendered into the Document PiP window\n// (ADR-007). Compact, dark, monochrome (ADR-004) using the TASK-2 token values.\n//\n// It is a pure presentational component: every action calls a handler passed\n// from the record page, which drives the SAME recorder as the in-page controls.\n// Because it renders through a portal into the PiP document (see useDocumentPip),\n// it stays in the opener's React tree — so `recState`/`elapsedMs`/`micEnabled`\n// update here the instant they change in-page, and vice versa (AC#3).\n//\n// Inline styles only (plus the .vellum-* classes injected into the PiP document\n// by useDocumentPip): the PiP document has none of the app's CSS variables, so\n// the TASK-2 ramp is referenced here as literal oklch values.\n\nimport { Mic, MicOff, Pause, Play, Square } from \"lucide-react\";\nimport type { RecorderState } from \"@/lib/recording/recorder\";\nimport { formatElapsed } from \"@/hooks/useRecordingElapsed\";\n\n// TASK-2 monochrome ramp (globals.css), as literals because the PiP document\n// doesn't load globals.css and so has no var(--gray-*) to resolve.\nconst TOKEN = {\n fg: \"oklch(0.985 0 0)\", // --gray-12 foreground\n muted: \"oklch(0.708 0 0)\", // --gray-11 muted foreground\n dim: \"oklch(0.47 0 0)\", // --gray-8 disabled foreground\n ring: \"oklch(0.34 0 0)\", // --gray-6 hollow-ring border (paused dot)\n border: \"oklch(1 0 0 / 8%)\", // --border hairline\n} as const;\n\nexport interface PipRecorderControlsProps {\n recState: RecorderState;\n elapsedMs: number;\n micEnabled: boolean;\n onPauseResume: () => void;\n onStop: () => void;\n onToggleMic: () => void;\n}\n\nexport function PipRecorderControls({\n recState,\n elapsedMs,\n micEnabled,\n onPauseResume,\n onStop,\n onToggleMic,\n}: PipRecorderControlsProps) {\n const isRecording = recState === \"recording\";\n const isPaused = recState === \"paused\";\n const isActive = isRecording || isPaused; // a recording exists (not stopped)\n\n // Mirrors the in-page RecIndicator: bright pulsing dot while recording,\n // hollow ring when paused, dim when idle. Monochrome (ADR-004).\n const dotColor = isRecording ? TOKEN.fg : isPaused ? \"transparent\" : TOKEN.dim;\n const dotBorder = isPaused ? `1.5px solid ${TOKEN.fg}` : \"none\";\n const label = isRecording ? \"REC\" : isPaused ? \"PAUSED\" : \"IDLE\";\n const fg = isActive ? TOKEN.fg : TOKEN.muted;\n\n return (\n <div\n style={{\n boxSizing: \"border-box\",\n width: \"100%\",\n height: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n padding: \"0 14px\",\n }}\n >\n {/* Indicator + elapsed timer */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"9px\", minWidth: 0 }}>\n <span\n className={isRecording ? \"vellum-rec-dot\" : undefined}\n style={{\n width: \"9px\",\n height: \"9px\",\n borderRadius: \"50%\",\n background: dotColor,\n border: dotBorder,\n boxSizing: \"border-box\",\n flexShrink: 0,\n }}\n />\n <span\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n lineHeight: 1.1,\n }}\n >\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 600,\n letterSpacing: \"0.1em\",\n color: fg,\n fontFamily: \"ui-monospace, 'Geist Mono', monospace\",\n }}\n >\n {label}\n </span>\n <span\n style={{\n fontSize: \"19px\",\n fontVariantNumeric: \"tabular-nums\",\n fontFamily: \"ui-monospace, 'Geist Mono', monospace\",\n letterSpacing: \"0.02em\",\n color: fg,\n }}\n >\n {formatElapsed(elapsedMs)}\n </span>\n </span>\n </div>\n\n <span style={{ flex: 1 }} />\n\n {/* Controls — same handlers as the in-page buttons (AC#3) */}\n <button\n type=\"button\"\n className=\"vellum-pip-btn\"\n onClick={onToggleMic}\n aria-label={micEnabled ? \"Mute microphone\" : \"Unmute microphone\"}\n title={micEnabled ? \"Mic on\" : \"Mic off\"}\n style={!micEnabled ? { color: TOKEN.muted } : undefined}\n >\n {micEnabled ? <Mic size={16} strokeWidth={1.75} /> : <MicOff size={16} strokeWidth={1.75} />}\n </button>\n\n <button\n type=\"button\"\n className=\"vellum-pip-btn\"\n onClick={onPauseResume}\n disabled={!isActive}\n aria-label={isPaused ? \"Resume recording\" : \"Pause recording\"}\n title={isPaused ? \"Resume\" : \"Pause\"}\n >\n {isPaused ? <Play size={16} strokeWidth={1.75} /> : <Pause size={16} strokeWidth={1.75} />}\n </button>\n\n <button\n type=\"button\"\n className=\"vellum-pip-btn\"\n data-variant=\"stop\"\n onClick={onStop}\n disabled={!isActive}\n aria-label=\"Stop recording\"\n title=\"Stop\"\n >\n <Square size={15} strokeWidth={2} fill=\"currentColor\" />\n </button>\n </div>\n );\n}\n","// TASK-13 — elapsed *recording* time, paused-aware.\n//\n// Shows ACTIVE recording time, not wall-clock: MediaRecorder.pause() stops\n// capturing, so a pause must not add time — otherwise the timer drifts away\n// from the real duration of the WebM (ARCHITECTURE §Recording defaults).\n//\n// Segment-accumulator model (the accurate one): we sum completed active\n// segments into `accumulatedRef` and, while recording, add the live tail\n// (now - segmentStart). Segment boundaries are captured with performance.now()\n// at the exact moment the recorder state changes — the caller drives that by\n// calling `setState` right where it flips MediaRecorder, so the boundary is\n// precise rather than rounded to the render tick.\n//\n// The recorder's own state ('recording'/'paused'/'inactive') is the source of\n// truth; `setState` mirrors each transition:\n// inactive → recording : fresh recording, reset to 0, open a segment\n// paused → recording : resume, open a new segment (keep accumulated)\n// recording→ paused : close the segment (freeze; pause adds no time)\n// * → inactive : stop, close any open segment, freeze final value\n// A new recording (inactive → recording) is the only thing that resets to 0,\n// so the final duration stays on screen after Stop until the next Record.\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { RecorderState } from \"@/lib/recording/recorder\";\n\n// 200ms keeps the seconds digit honest without busy-looping; the displayed\n// value is always recomputed from timestamps, so the interval only paces\n// repaints — it never accumulates its own rounding error (that was approach B).\nconst TICK_MS = 200;\n\nexport interface RecordingElapsed {\n /** Active recording time in ms. Re-renders while recording; frozen otherwise. */\n elapsedMs: number;\n /** Mirror every recorder transition here, alongside the MediaRecorder call. */\n setState: (next: RecorderState) => void;\n}\n\nexport function useRecordingElapsed(): RecordingElapsed {\n const accumulatedRef = useRef(0); // sum of completed active segments\n const segmentStartRef = useRef<number | null>(null); // performance.now() of open segment, or null\n const statusRef = useRef<RecorderState>(\"inactive\");\n const [elapsedMs, setElapsedMs] = useState(0);\n const [running, setRunning] = useState(false);\n\n const compute = useCallback(\n () =>\n accumulatedRef.current +\n (segmentStartRef.current !== null ? performance.now() - segmentStartRef.current : 0),\n [],\n );\n\n const setState = useCallback(\n (next: RecorderState) => {\n const prev = statusRef.current;\n if (next === prev) return; // idempotent — safe to call freely\n const now = performance.now();\n\n if (next === \"recording\") {\n if (prev === \"inactive\") accumulatedRef.current = 0; // fresh recording resets\n segmentStartRef.current = now; // start or resume opens a segment\n } else if (segmentStartRef.current !== null) {\n // pause or stop closes the open segment; the tail counts up to NOW only\n accumulatedRef.current += now - segmentStartRef.current;\n segmentStartRef.current = null;\n }\n\n statusRef.current = next;\n setElapsedMs(compute());\n setRunning(next === \"recording\");\n },\n [compute],\n );\n\n // Repaint while recording. Cleared on pause/stop, so a paused timer truly\n // stands still rather than re-rendering the same number.\n useEffect(() => {\n if (!running) return;\n const id = window.setInterval(() => setElapsedMs(compute()), TICK_MS);\n return () => window.clearInterval(id);\n }, [running, compute]);\n\n return { elapsedMs, setState };\n}\n\n/** Format active ms as m:ss, widening to h:mm:ss past the hour. */\nexport function formatElapsed(ms: number): string {\n const total = Math.floor(ms / 1000);\n const s = total % 60;\n const m = Math.floor(total / 60) % 60;\n const h = Math.floor(total / 3600);\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return h > 0 ? `${h}:${pad(m)}:${pad(s)}` : `${m}:${pad(s)}`;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { x: '14', y: '3', width: '5', height: '18', rx: '1', key: 'kaeet6' }],\n ['rect', { x: '5', y: '3', width: '5', height: '18', rx: '1', key: '1wsw3u' }],\n];\n\n/**\n * @component @name Pause\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB4PSIxNCIgeT0iMyIgd2lkdGg9IjUiIGhlaWdodD0iMTgiIHJ4PSIxIiAvPgogIDxyZWN0IHg9IjUiIHk9IjMiIHdpZHRoPSI1IiBoZWlnaHQ9IjE4IiByeD0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pause\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pause = createLucideIcon('pause', __iconNode);\n\nexport default Pause;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n];\n\n/**\n * @component @name Square\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Square = createLucideIcon('square', __iconNode);\n\nexport default Square;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19v3', key: 'npa21l' }],\n ['path', { d: 'M19 10v2a7 7 0 0 1-14 0v-2', key: '1vc78b' }],\n ['rect', { x: '9', y: '2', width: '6', height: '13', rx: '3', key: 's6n7sd' }],\n];\n\n/**\n * @component @name Mic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTl2MyIgLz4KICA8cGF0aCBkPSJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMiIgLz4KICA8cmVjdCB4PSI5IiB5PSIyIiB3aWR0aD0iNiIgaGVpZ2h0PSIxMyIgcng9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/mic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mic = createLucideIcon('mic', __iconNode);\n\nexport default Mic;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19v3', key: 'npa21l' }],\n ['path', { d: 'M15 9.34V5a3 3 0 0 0-5.68-1.33', key: '1gzdoj' }],\n ['path', { d: 'M16.95 16.95A7 7 0 0 1 5 12v-2', key: 'cqa7eg' }],\n ['path', { d: 'M18.89 13.23A7 7 0 0 0 19 12v-2', key: '16hl24' }],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n ['path', { d: 'M9 9v3a3 3 0 0 0 5.12 2.12', key: 'r2i35w' }],\n];\n\n/**\n * @component @name MicOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTl2MyIgLz4KICA8cGF0aCBkPSJNMTUgOS4zNFY1YTMgMyAwIDAgMC01LjY4LTEuMzMiIC8+CiAgPHBhdGggZD0iTTE2Ljk1IDE2Ljk1QTcgNyAwIDAgMSA1IDEydi0yIiAvPgogIDxwYXRoIGQ9Ik0xOC44OSAxMy4yM0E3IDcgMCAwIDAgMTkgMTJ2LTIiIC8+CiAgPHBhdGggZD0ibTIgMiAyMCAyMCIgLz4KICA8cGF0aCBkPSJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mic-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MicOff = createLucideIcon('mic-off', __iconNode);\n\nexport default MicOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z',\n key: '10ikf1',\n },\n ],\n];\n\n/**\n * @component @name Play\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSA1YTIgMiAwIDAgMSAzLjAwOC0xLjcyOGwxMS45OTcgNi45OThhMiAyIDAgMCAxIC4wMDMgMy40NThsLTEyIDdBMiAyIDAgMCAxIDUgMTl6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/play\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Play = createLucideIcon('play', __iconNode);\n\nexport default Play;\n","\"use client\";\n\n// TASK-16 — Document Picture-in-Picture lifecycle for the floating recording\n// controls (ADR-007). Opens an always-on-top OS window we render React controls\n// into via a portal, then tears it down cleanly. Chromium-only: callers feature-\n// detect with `isSupported` and fall back to the in-page controls (AC#5).\n//\n// Why a portal (not a separate React root or a moved DOM node): the controls\n// stay part of the opener's React tree, so they read the same recorder ref and\n// state — pause/stop/mic in the PiP window and in-page drive ONE recorder, and\n// state stays in sync both ways for free (AC#3). Styles do NOT cross into the\n// PiP document automatically, so we inject a small base stylesheet here; the\n// widget itself is inline-styled with the TASK-2 tokens.\n\nimport { useCallback, useEffect, useRef, useState, useSyncExternalStore } from \"react\";\n\n// The Document Picture-in-Picture API is not yet in TypeScript's bundled DOM\n// lib, so we declare the minimal surface we use. (CLAUDE.md §6 — typed escape\n// hatch, documented rather than `any`.)\ninterface DocumentPictureInPicture {\n requestWindow(options?: { width?: number; height?: number }): Promise<Window>;\n readonly window: Window | null;\n}\ndeclare global {\n interface Window {\n readonly documentPictureInPicture?: DocumentPictureInPicture;\n }\n}\n\nexport interface DocumentPipHandle {\n /** True only in browsers that expose the Document PiP API (Chromium). */\n isSupported: boolean;\n /** The open PiP window, or null when closed. Drives the React portal. */\n pipWindow: Window | null;\n /** Open the PiP window at the given size; resolves to it (or null on failure). */\n open: (size: { width: number; height: number }) => Promise<Window | null>;\n /** Close the PiP window if open (no-op otherwise). */\n close: () => void;\n}\n\nexport interface UseDocumentPipOptions {\n /** Called when the window closes for ANY reason (user, our close(), nav). */\n onClose?: () => void;\n}\n\nexport function useDocumentPip({ onClose }: UseDocumentPipOptions = {}): DocumentPipHandle {\n const [pipWindow, setPipWindow] = useState<Window | null>(null);\n\n // Feature detection reads `window`, so it's SSR-safe via useSyncExternalStore:\n // the server snapshot is false; the client snapshot checks the real API. The\n // capability never changes after load, so the subscription is a no-op.\n const isSupported = useSyncExternalStore(\n () => () => {},\n () => \"documentPictureInPicture\" in window,\n () => false,\n );\n\n // Keep the latest onClose without re-binding the pagehide listener each render.\n // Written in an effect (not during render) per React's ref rules.\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n });\n\n const open = useCallback(async ({ width, height }: { width: number; height: number }) => {\n const dpip = window.documentPictureInPicture;\n if (!dpip) return null;\n // requestWindow must be called from a user gesture (the caller is a click).\n const pip = await dpip.requestWindow({ width, height });\n\n // The PiP document starts blank — styles are NOT inherited from the opener.\n // Inject app background + the rec-dot keyframes; the widget supplies the rest\n // inline with the TASK-2 tokens.\n const style = pip.document.createElement(\"style\");\n style.textContent = PIP_BASE_CSS;\n pip.document.head.appendChild(style);\n\n // Closing the window (browser control, Window.close(), or navigation) fires\n // pagehide on the PiP window. We clear our state and notify the caller — and\n // deliberately do NOT touch the recorder, so closing PiP never loses the\n // recording (AC#4: closing PiP ≠ stopping the recording).\n pip.addEventListener(\n \"pagehide\",\n () => {\n setPipWindow(null);\n onCloseRef.current?.();\n },\n { once: true },\n );\n\n setPipWindow(pip);\n return pip;\n }, []);\n\n const close = useCallback(() => {\n // Triggers the pagehide handler above, which clears state + calls onClose.\n pipWindow?.close();\n }, [pipWindow]);\n\n // Safety net: if the opener page unmounts while PiP is open, close it so we\n // never orphan a floating window. Unmount-only — reads the live window via a\n // ref kept current in an effect (per React's ref rules).\n const pipWindowRef = useRef<Window | null>(null);\n useEffect(() => {\n pipWindowRef.current = pipWindow;\n }, [pipWindow]);\n useEffect(() => () => pipWindowRef.current?.close(), []);\n\n return { isSupported, pipWindow, open, close };\n}\n\n// Lives in the PiP document only. Base look (dark app background, no body\n// margin) + the rec-dot pulse and the shared button styles. Interaction states\n// (:hover / :active) live here because inline styles can't express them — the\n// widget references these classes (ADR-005: real :active feedback). Colors are\n// the TASK-2 monochrome ramp values from globals.css.\nconst PIP_BASE_CSS = `\n :root { color-scheme: dark; }\n body {\n margin: 0;\n background: oklch(0.145 0 0);\n color: oklch(0.985 0 0);\n font-family: ui-sans-serif, system-ui, sans-serif;\n -webkit-font-smoothing: antialiased;\n }\n @keyframes vellum-rec-pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.35; transform: scale(0.82); }\n }\n .vellum-rec-dot { animation: vellum-rec-pulse 1.6s ease-in-out infinite; }\n\n .vellum-pip-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n padding: 0;\n background: oklch(0.205 0 0);\n color: oklch(0.985 0 0);\n border: 1px solid oklch(1 0 0 / 8%);\n border-radius: 7px;\n cursor: pointer;\n transition: background-color 150ms ease-out, transform 150ms ease-out;\n }\n .vellum-pip-btn:hover { background: oklch(0.245 0 0); }\n .vellum-pip-btn:active { transform: scale(0.95); }\n .vellum-pip-btn:disabled {\n background: oklch(0.205 0 0);\n color: oklch(0.47 0 0);\n cursor: not-allowed;\n }\n /* Stop = high-emphasis (inverted), the primary action of the widget. */\n .vellum-pip-btn[data-variant=\"stop\"] {\n background: oklch(0.985 0 0);\n color: oklch(0.145 0 0);\n border-color: transparent;\n }\n .vellum-pip-btn[data-variant=\"stop\"]:hover { background: oklch(0.9 0 0); }\n`;\n","// TASK-11 — MediaRecorder wrapper.\n//\n// Wraps a combined screen+mic MediaStream (built in TASK-10) in a MediaRecorder\n// configured to Vellum's recording defaults: VP9 video + Opus audio in a WebM\n// container, ~2.5 Mbps target bitrate (ARCHITECTURE §Recording defaults).\n//\n// The seam for TASK-12 (write-to-disk via File System Access) is `onChunk`:\n// every `dataavailable` fires `onChunk(blob)` so the consumer can stream each\n// chunk straight to disk as it arrives. That is the whole point of the\n// timeslice — the full recording is never held in one buffer, which gives both\n// OOM-safety on long recordings and crash-recovery of the partial file\n// (ARCHITECTURE §Error handling: \"recording tab crash\"). This module never\n// accumulates chunks itself; whoever wants the assembled Blob collects it from\n// `onChunk` (the record-test page does this for short verification recordings).\n\n// VP9 + Opus in WebM — best quality/size in Chromium (CLAUDE.md §MediaRecorder).\nexport const VELLUM_MIME = \"video/webm; codecs=vp9,opus\";\n\n// ~2.5 Mbps — UI-text legibility vs file size, ~1.1 GB/hour (ARCHITECTURE\n// §Recording defaults, AC#4). Audio rides Opus at its own default bitrate.\nexport const VELLUM_VIDEO_BITS_PER_SECOND = 2_500_000;\n\n// 1s chunks: small enough that a tab crash loses ≤1s, large enough to keep\n// per-chunk overhead negligible. Passed to MediaRecorder.start(timeslice).\nexport const VELLUM_TIMESLICE_MS = 1000;\n\nexport type RecorderState = \"inactive\" | \"recording\" | \"paused\";\n\nexport interface RecorderHandle {\n start: () => void;\n pause: () => void;\n resume: () => void;\n /**\n * Stops recording; resolves once the final `dataavailable` has fired (so a\n * consumer collecting chunks via `onChunk` has the complete set). Does not\n * return a Blob — assembling one would mean holding the whole recording in\n * memory, the exact thing the timeslice avoids.\n */\n stop: () => Promise<void>;\n state: () => RecorderState;\n}\n\nexport interface CreateRecorderOptions {\n stream: MediaStream;\n /** Fired once per `dataavailable` — the per-chunk seam TASK-12 writes to disk. */\n onChunk: (chunk: Blob) => void;\n /** Optional surfacing of MediaRecorder errors (fail loud, never swallow). */\n onError?: (error: Error) => void;\n}\n\n/**\n * Build a MediaRecorder around `stream`. Throws synchronously if the browser\n * can't record VP9/Opus WebM — we fail loud rather than silently fall back to a\n * codec Gemini or the report pipeline doesn't expect (ARCHITECTURE §Error\n * handling: \"fail loud\").\n */\nexport function createRecorder({\n stream,\n onChunk,\n onError,\n}: CreateRecorderOptions): RecorderHandle {\n if (!MediaRecorder.isTypeSupported(VELLUM_MIME)) {\n throw new Error(`MediaRecorder cannot record \"${VELLUM_MIME}\" in this browser`);\n }\n\n const recorder = new MediaRecorder(stream, {\n mimeType: VELLUM_MIME,\n videoBitsPerSecond: VELLUM_VIDEO_BITS_PER_SECOND,\n });\n\n recorder.addEventListener(\"dataavailable\", (event) => {\n // The final chunk on stop() can be empty; don't forward zero-byte blobs.\n if (event.data.size > 0) onChunk(event.data);\n });\n\n recorder.addEventListener(\"error\", (event) => {\n // MediaRecorderErrorEvent.error is the underlying DOMException.\n const err = (event as unknown as { error?: DOMException }).error;\n onError?.(err ?? new Error(\"MediaRecorder error\"));\n });\n\n return {\n start: () => recorder.start(VELLUM_TIMESLICE_MS),\n pause: () => recorder.pause(),\n resume: () => recorder.resume(),\n stop: () =>\n new Promise<void>((resolve) => {\n recorder.addEventListener(\"stop\", () => resolve(), { once: true });\n recorder.stop();\n }),\n state: () => recorder.state,\n };\n}\n"],"names":["createSessionDir","workspace","now","baseName","formatSessionTimestamp","name","suffix","getDirectoryHandle","err","DOMException","dir","create","Error","d","pad","n","String","padStart","getFullYear","getMonth","getDate","getHours","getMinutes","useDocumentPip","onClose","pipWindow","setPipWindow","isSupported","window","onCloseRef","current","open","width","height","dpip","documentPictureInPicture","pip","requestWindow","style","document","createElement","textContent","PIP_BASE_CSS","head","appendChild","addEventListener","once","close","pipWindowRef","VELLUM_MIME","VELLUM_VIDEO_BITS_PER_SECOND","VELLUM_TIMESLICE_MS","createRecorder","stream","onChunk","onError","MediaRecorder","isTypeSupported","recorder","mimeType","videoBitsPerSecond","event","data","size","error","start","pause","resume","stop","Promise","resolve","state"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,13,14,15,16,17]}
@@ -1,3 +0,0 @@
1
- module.exports=[21436,59539,a=>{"use strict";var b=a.i(72131),c=a.i(26476),d=a.i(54401),e=a.i(57738),f=a.i(76459),g=a.i(54662);let h=b.createContext(void 0);function i(a=!1){let c=b.useContext(h);if(void 0===c&&!a)throw Error((0,g.default)(16));return c}function j(a){return(0,c.isHTMLElement)(a)&&"BUTTON"===a.tagName}a.s(["CompositeRootContext",0,h,"useCompositeRootContext",0,i],59539),a.s(["useButton",0,function(a={}){let{disabled:c=!1,focusableWhenDisabled:g,tabIndex:h=0,native:k=!0,composite:l}=a,m=b.useRef(null),n=i(!0),o=l??void 0!==n,{props:p}=function(a){let{focusableWhenDisabled:c,disabled:d,composite:e=!1,tabIndex:f=0,isNativeButton:g}=a,h=e&&!1!==c,i=e&&!1===c;return{props:b.useMemo(()=>{let a={onKeyDown(a){d&&c&&"Tab"!==a.key&&a.preventDefault()}};return e||(a.tabIndex=f,!g&&d&&(a.tabIndex=c?f:-1)),(g&&(c||h)||!g&&d)&&(a["aria-disabled"]=d),g&&(!c||i)&&(a.disabled=d),a},[e,d,c,h,i,g,f])}}({focusableWhenDisabled:g,disabled:c,composite:o,tabIndex:h,isNativeButton:k}),q=b.useCallback(()=>{let a=m.current;j(a)&&o&&c&&void 0===p.disabled&&a.disabled&&(a.disabled=!1)},[c,p.disabled,o]);return(0,e.useIsoLayoutEffect)(q,[q]),{getButtonProps:b.useCallback((a={})=>{let{onClick:b,onMouseDown:d,onKeyUp:e,onKeyDown:g,onPointerDown:h,...i}=a;return(0,f.mergeProps)({onClick(a){c?a.preventDefault():b?.(a)},onMouseDown(a){c||d?.(a)},onKeyDown(a){var d;if(c||((0,f.makeEventPreventable)(a),g?.(a),a.baseUIHandlerPrevented))return;let e=a.target===a.currentTarget,h=a.currentTarget,i=j(h),l=!k&&(d=h,!!(d?.tagName==="A"&&d?.href)),m=e&&(k?i:!l),n="Enter"===a.key,p=" "===a.key,q=h.getAttribute("role"),r=q?.startsWith("menuitem")||"option"===q||"gridcell"===q;if(e&&o&&p){if(a.defaultPrevented&&r)return;a.preventDefault(),l||k&&i?(h.click(),a.preventBaseUIHandler()):m&&(b?.(a),a.preventBaseUIHandler());return}m&&(!k&&(p||n)&&a.preventDefault(),!k&&n&&b?.(a))},onKeyUp(a){c||(((0,f.makeEventPreventable)(a),e?.(a),a.target===a.currentTarget&&k&&o&&j(a.currentTarget)&&" "===a.key)?a.preventDefault():!a.baseUIHandlerPrevented&&(a.target!==a.currentTarget||k||o||" "!==a.key||b?.(a)))},onPointerDown(a){c?a.preventDefault():h?.(a)}},k?{type:"button"}:{role:"button"},p,i)},[c,p,o,k]),buttonRef:(0,d.useStableCallback)(a=>{m.current=a,q()})}}],21436)},20840,a=>{"use strict";var b=a.i(72131),c=a.i(21436),d=a.i(26184);let e=b.forwardRef(function(a,b){let{render:e,className:f,disabled:g=!1,focusableWhenDisabled:h=!1,nativeButton:i=!0,style:j,...k}=a,{getButtonProps:l,buttonRef:m}=(0,c.useButton)({disabled:g,focusableWhenDisabled:h,native:i});return(0,d.useRenderElement)("button",a,{state:{disabled:g},ref:[b,m],props:[k,l]})});a.s(["Button",0,e])},187,a=>{"use strict";var b=a.i(98621);let c=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,d=b.clsx;a.s(["cva",0,(a,b)=>e=>{var f;if((null==b?void 0:b.variants)==null)return d(a,null==e?void 0:e.class,null==e?void 0:e.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==e?void 0:e[a],d=null==h?void 0:h[a];if(null===b)return null;let f=c(b)||c(d);return g[a][f]}),j=e&&Object.entries(e).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return d(a,i,null==b||null==(f=b.compoundVariants)?void 0:f.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==e?void 0:e.class,null==e?void 0:e.className)}])},99570,a=>{"use strict";var b=a.i(87924),c=a.i(20840),d=a.i(187),e=a.i(68114);let f=(0,d.cva)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});a.s(["Button",0,function({className:a,variant:d="default",size:g="default",...h}){return(0,b.jsx)(c.Button,{"data-slot":"button",className:(0,e.cn)(f({variant:d,size:g,className:a})),...h})}])},50381,a=>{"use strict";var b=a.i(72131);a.s(["useControlled",0,function({controlled:a,default:c,name:d,state:e="value"}){let{current:f}=b.useRef(void 0!==a),[g,h]=b.useState(c),i=b.useCallback(a=>{f||h(a)},[]);return[f?a:g,i]}])},31973,a=>{"use strict";var b=a.i(72131),c=a.i(54184),d=a.i(36069),e=a.i(24715),f=a.i(40014),g=a.i(61813),h=a.i(14209),i=a.i(94552),j=a.i(7436);a.s(["useClick",0,function(a,k={}){let{enabled:l=!0,event:m="click",toggle:n=!0,ignoreMouse:o=!1,stickIfOpen:p=!0,touchOpenDelay:q=0,reason:r=j.REASONS.triggerPress}=k,s="rootStore"in a?a.rootStore:a,t=s.context.dataRef,u=b.useRef(void 0),v=(0,c.useAnimationFrame)(),w=(0,d.useTimeout)(),x=b.useMemo(()=>{function a(a,b,c,d){let e=(0,i.createChangeEventDetails)(r,b,c);a&&"touch"===d&&q>0?w.start(q,()=>{s.setOpen(!0,e)}):s.setOpen(a,e)}function b(a,b,c){let d=t.current.openEvent,e=s.select("domReferenceElement")!==b;return!!a&&!!e||!a||!n||!!d&&!!p&&!c(d.type)}return{onPointerDown(a){u.current=a.pointerType},onMouseDown(c){let d=u.current,e=c.nativeEvent,i=s.select("open");if(0!==c.button||"click"===m||(0,h.isMouseLikePointerType)(d,!0)&&o)return;let j=b(i,c.currentTarget,a=>"click"===a||"mousedown"===a),k=(0,f.getTarget)(e);if((0,g.isTypeableElement)(k))return void a(j,e,k,d);let l=c.currentTarget;v.request(()=>{a(j,e,l,d)})},onClick(c){if("mousedown-only"===m)return;let d=u.current;if("mousedown"===m&&d){u.current=void 0;return}(0,h.isMouseLikePointerType)(d,!0)&&o||a(b(s.select("open"),c.currentTarget,a=>"click"===a||"mousedown"===a||"keydown"===a||"keyup"===a),c.nativeEvent,c.currentTarget,d)},onKeyDown(){u.current=void 0}}},[t,m,o,r,s,p,n,v,w,q]);return b.useMemo(()=>l?{reference:x}:e.EMPTY_OBJECT,[l,x])}])},1230,27576,a=>{"use strict";var b,c=a.i(54662),d=a.i(72131),e=a.i(24715);let f=((b={}).disabled="data-disabled",b.valid="data-valid",b.invalid="data-invalid",b.touched="data-touched",b.dirty="data-dirty",b.filled="data-filled",b.focused="data-focused",b),g={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},h={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},i={disabled:!1,...h};a.s(["DEFAULT_FIELD_ROOT_STATE",0,i,"DEFAULT_FIELD_STATE_ATTRIBUTES",0,h,"DEFAULT_VALIDITY_STATE",0,g,"fieldValidityMapping",0,{valid:a=>null===a?null:a?{[f.valid]:""}:{[f.invalid]:""}}],27576);let j={invalid:void 0,name:void 0,validityData:{state:g,errors:[],error:"",value:"",initialValue:null},setValidityData:e.NOOP,disabled:void 0,touched:h.touched,setTouched:e.NOOP,dirty:h.dirty,setDirty:e.NOOP,filled:h.filled,setFilled:e.NOOP,focused:h.focused,setFocused:e.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:i,markedDirtyRef:{current:!1},registerFieldControl:e.NOOP,validation:{getValidationProps:(a,b=e.EMPTY_OBJECT)=>b,inputRef:{current:null},registerInput:e.NOOP,commit:async()=>{},change:e.NOOP}},k=d.createContext(j);a.s(["FieldRootContext",0,k,"useFieldRootContext",0,function(a=!0){let b=d.useContext(k);if(b.setValidityData===e.NOOP&&!a)throw Error((0,c.default)(28));return b}],1230)},58589,a=>{"use strict";var b=a.i(72131),c=a.i(57738),d=a.i(1230);a.s(["useRegisterFieldControl",0,function(a,e,f,g,h=!0,i){let{registerFieldControl:j}=(0,d.useFieldRootContext)(),k=b.useRef(null);k.current||(k.current=Symbol()),(0,c.useIsoLayoutEffect)(()=>{let b=k.current;if(b&&h)return j(b,{controlRef:a,getValue:g,id:e,name:i,value:f}),()=>{j(b,void 0)}},[a,h,g,e,i,j,f])}])},77260,a=>{"use strict";var b=a.i(72131),c=a.i(24715);let d=b.createContext({controlId:void 0,registerControlId:c.NOOP,labelId:void 0,setLabelId:c.NOOP,messageIds:[],setMessageIds:c.NOOP,getDescriptionProps:a=>a});a.s(["LabelableContext",0,d,"useLabelableContext",0,function(){return b.useContext(d)}])},69476,a=>{"use strict";var b=a.i(72131),c=a.i(57738),d=a.i(54401),e=a.i(79549),f=a.i(26476),g=a.i(24715),h=a.i(557),i=a.i(77260);a.s(["useLabelableId",0,function(a={}){let{id:j,implicit:k=!1,controlRef:l}=a,{controlId:m,registerControlId:n}=(0,i.useLabelableContext)(),o=(0,h.useBaseUiId)(j),p=k?m:void 0,q=(0,e.useRefWithInit)(()=>Symbol("labelable-control")),r=b.useRef(!1),s=b.useRef(null!=j),t=(0,d.useStableCallback)(()=>{r.current&&n!==g.NOOP&&(r.current=!1,n(q.current,void 0))});return(0,c.useIsoLayoutEffect)(()=>{let a;if(n!==g.NOOP){if(k){let b=l?.current;a=(0,f.isElement)(b)&&null!=b.closest("label")?j??null:p??o}else if(null!=j)s.current=!0,a=j;else{if(!s.current)return void t();a=o}if(void 0===a)return void t();r.current=!0,n(q.current,a)}},[j,l,p,n,k,o,q,t]),b.useEffect(()=>t,[t]),m??o}])},41302,a=>{"use strict";var b=a.i(72131),c=a.i(24715);let d=b.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:c.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});a.s(["useFormContext",0,function(){return b.useContext(d)}])},29752,64072,a=>{"use strict";var b=a.i(72131),c=a.i(54401),d=a.i(51086),e=a.i(57738);function f(a,d){let f=b.useRef(a),g=(0,c.useStableCallback)(d);(0,e.useIsoLayoutEffect)(()=>{f.current!==a&&g(f.current)},[a,g]),(0,e.useIsoLayoutEffect)(()=>{f.current=a},[a])}function g(a,e){var f;let g,h,{onClick:i,onPointerDown:j}=(f=(0,c.useStableCallback)((b,c)=>{("function"==typeof a?a():a)||e(c||(d.platform.os.ios?"touch":""))}),g=b.useRef(""),h=b.useCallback(a=>{a.defaultPrevented||(g.current=a.pointerType,f(a,a.pointerType))},[f]),{onClick:b.useCallback(a=>{0===a.detail?f(a,"keyboard"):("pointerType"in a?f(a,a.pointerType):f(a,g.current),g.current="")},[f]),onPointerDown:h});return b.useMemo(()=>({onClick:i,onPointerDown:j}),[i,j])}a.s(["useValueChanged",0,f],64072),a.s(["useOpenInteractionType",0,function(a){let[c,d]=b.useState(null),e=g(a,d);return f(a,b=>{b&&!a&&d(null)}),b.useMemo(()=>({openMethod:c,triggerProps:e}),[c,e])},"useOpenMethodTriggerProps",0,g],29752)},89481,a=>{"use strict";var b=a.i(26476),c=a.i(87828),d=a.i(54401),e=a.i(40014),f=a.i(57738),g=a.i(557),h=a.i(77260);a.s(["useLabel",0,function(a={}){let i,{id:j,fallbackControlId:k,native:l=!1,setLabelId:m,focusControl:n}=a,{controlId:o,setLabelId:p}=(0,h.useLabelableContext)(),q=(0,d.useStableCallback)(a=>{p(a),m?.(a)}),r=(i=(0,g.useBaseUiId)(j),(0,f.useIsoLayoutEffect)(()=>(q(i),()=>{q(void 0)}),[i,q]),i),s=o??k;function t(a){let d=(0,e.getTarget)(a.nativeEvent);d?.closest("button,input,select,textarea")||(!a.defaultPrevented&&a.detail>1&&a.preventDefault(),l||function(a){if(n)return n(a,s);if(!s)return;let d=(0,c.ownerDocument)(a.currentTarget).getElementById(s);(0,b.isHTMLElement)(d)&&d.focus({focusVisible:!0})}(a))}return l?{id:r,htmlFor:s??void 0,onMouseDown:t}:{id:r,onClick:t,onPointerDown(a){a.preventDefault()}}}],89481)},30076,a=>{"use strict";var b=a.i(72131),c=a.i(87924);let d=b.forwardRef(function(a,b){let d,{cutout:e,...f}=a;if(e){let a=e.getBoundingClientRect();d=`polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${a.left}px ${a.top}px,${a.left}px ${a.bottom}px,${a.right}px ${a.bottom}px,${a.right}px ${a.top}px,${a.left}px ${a.top}px)`}return(0,c.jsx)("div",{ref:b,role:"presentation","data-base-ui-inert":"",...f,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:d}})});a.s(["InternalBackdrop",0,d])},13259,a=>{"use strict";var b=a.i(26476),c=a.i(68536),d=a.i(51086),e=a.i(87828),f=a.i(44530),g=a.i(57738),h=a.i(36069),i=a.i(54184),j=a.i(24715);let k={},l={},m="";class n{lockCount=0;restore=null;timeoutLock=h.Timeout.create();timeoutUnlock=h.Timeout.create();acquire(a){return this.lockCount+=1,1===this.lockCount&&null===this.restore&&this.timeoutLock.start(0,()=>this.lock(a)),this.release}release=()=>{this.lockCount-=1,0===this.lockCount&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{0===this.lockCount&&this.restore&&(this.restore?.(),this.restore=null)};lock(a){let g,h,n,o,p;if(0===this.lockCount||null!==this.restore)return;let q=(0,e.ownerDocument)(a).documentElement,r=(0,f.ownerWindow)(q).getComputedStyle(q).overflowY;if("hidden"===r||"clip"===r){this.restore=j.NOOP;return}let s=d.platform.os.ios||!function(a){if("u"<typeof document)return!1;let b=(0,e.ownerDocument)(a);return(0,f.ownerWindow)(b).innerWidth-b.documentElement.clientWidth>0}(a);this.restore=s?(h=(g=(0,e.ownerDocument)(a)).documentElement,n=g.body,p={overflowY:(o=(0,b.isOverflowElement)(h)?h:n).style.overflowY,overflowX:o.style.overflowX},Object.assign(o.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(o.style,p)}):function(a){let g=(0,e.ownerDocument)(a),h=g.documentElement,j=g.body,n=(0,f.ownerWindow)(h),o=0,p=0,q=!1,r=i.AnimationFrame.create();if(d.platform.engine.webkit&&(n.visualViewport?.scale??1)!==1)return()=>{};function s(){let c=n.getComputedStyle(h),d=n.getComputedStyle(j),f=(c.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";o=h.scrollTop,p=h.scrollLeft,k={scrollbarGutter:h.style.scrollbarGutter,overflowY:h.style.overflowY,overflowX:h.style.overflowX},m=h.style.scrollBehavior,l={position:j.style.position,height:j.style.height,width:j.style.width,boxSizing:j.style.boxSizing,overflowY:j.style.overflowY,overflowX:j.style.overflowX,scrollBehavior:j.style.scrollBehavior};let g=h.scrollHeight>h.clientHeight,i=h.scrollWidth>h.clientWidth,r="scroll"===c.overflowY||"scroll"===d.overflowY,s="scroll"===c.overflowX||"scroll"===d.overflowX,t=Math.max(0,n.innerWidth-j.clientWidth),u=Math.max(0,n.innerHeight-j.clientHeight),v=parseFloat(d.marginTop)+parseFloat(d.marginBottom),w=parseFloat(d.marginLeft)+parseFloat(d.marginRight),x=(0,b.isOverflowElement)(h)?h:j;if(q=function(a){if(!("u">typeof CSS&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||"u"<typeof document)return!1;let c=(0,e.ownerDocument)(a),d=c.documentElement,f=c.body,g=(0,b.isOverflowElement)(d)?d:f,h=g.style.overflowY,i=d.style.scrollbarGutter;d.style.scrollbarGutter="stable",g.style.overflowY="scroll";let j=g.offsetWidth;g.style.overflowY="hidden";let k=g.offsetWidth;return g.style.overflowY=h,d.style.scrollbarGutter=i,j===k}(a)){h.style.scrollbarGutter=f,x.style.overflowY="hidden",x.style.overflowX="hidden";return}Object.assign(h.style,{scrollbarGutter:f,overflowY:"hidden",overflowX:"hidden"}),(g||r)&&(h.style.overflowY="scroll"),(i||s)&&(h.style.overflowX="scroll"),Object.assign(j.style,{position:"relative",height:v||u?`calc(100dvh - ${v+u}px)`:"100dvh",width:w||t?`calc(100vw - ${w+t}px)`:"100vw",boxSizing:"border-box",overflow:"hidden",scrollBehavior:"unset"}),j.scrollTop=o,j.scrollLeft=p,h.setAttribute("data-base-ui-scroll-locked",""),h.style.scrollBehavior="unset"}function t(){Object.assign(h.style,k),Object.assign(j.style,l),q||(h.scrollTop=o,h.scrollLeft=p,h.removeAttribute("data-base-ui-scroll-locked"),h.style.scrollBehavior=m)}s();let u=(0,c.addEventListener)(n,"resize",function(){t(),r.request(s)});return()=>{r.cancel(),t(),"function"==typeof n.removeEventListener&&u()}}(a)}}let o=new n;a.s(["useScrollLock",0,function(a=!0,b=null){(0,g.useIsoLayoutEffect)(()=>{if(a)return o.acquire(b)},[a,b])}])},50687,3889,a=>{"use strict";var b=a.i(72131),c=a.i(26476),d=a.i(68536),e=a.i(43074),f=a.i(1811),g=a.i(89862),h=a.i(54401),i=a.i(57738),j=a.i(36069),k=a.i(51086),l=a.i(54184),m=a.i(87828),n=a.i(44530),o=a.i(61394),p=a.i(40014),q=a.i(61813),r=a.i(14209),s=a.i(56498),t=a.i(87084),u=a.i(96e3),v=a.i(94552),w=a.i(7436),x=a.i(80362),y=a.i(24715);let z=0;function A(a,b={}){let{preventScroll:c=!1,sync:d=!1,shouldFocus:e}=b;function f(){(!e||e())&&a?.focus({preventScroll:c})}if(cancelAnimationFrame(z),d)return f(),y.NOOP;let g=requestAnimationFrame(f);return z=g,()=>{z===g&&(cancelAnimationFrame(g),z=0)}}a.s(["enqueueFocus",0,A],3889);let B={inert:new WeakMap,"aria-hidden":new WeakMap},C="data-base-ui-inert",D={inert:new WeakSet,"aria-hidden":new WeakSet},E=new WeakMap,F=0,G=(a,b)=>b.map(b=>{if(a.contains(b))return b;let d=function a(b){return b?(0,c.isShadowRoot)(b)?b.host:a(b.parentNode):null}(b);return a.contains(d)?d:null}).filter(a=>null!=a),H=a=>{let b=new Set;return a.forEach(a=>{let c=a;for(;c&&!b.has(c);)b.add(c),c=c.parentNode}),b},I=(a,b,d)=>{let e=[],f=a=>{!a||d.has(a)||Array.from(a.children).forEach(a=>{"script"!==(0,c.getNodeName)(a)&&(b.has(a)?f(a):e.push(a))})};return f(a),e};function J(a,b={}){let{ariaHidden:c=!1,inert:d=!1,mark:e=!0}=b,f=(0,m.ownerDocument)(a[0]).body;return function(a,b,c,d,{mark:e=!0}){let f=null;d?f="inert":c&&(f="aria-hidden");let g=null,h=null,i=G(b,a),j=e?I(b,H(i),new Set(i)):[],k=[],l=[];if(f){let a=B[f],c=D[f];h=c,g=a;let d=G(b,Array.from(b.querySelectorAll("[aria-live]"))),e=i.concat(d);I(b,H(e),new Set(e)).forEach(b=>{let d=b.getAttribute(f),e=null!==d&&"false"!==d,g=(a.get(b)||0)+1;a.set(b,g),k.push(b),1===g&&e&&c.add(b),e||b.setAttribute(f,"inert"===f?"":"true")})}return e&&j.forEach(a=>{let b=(E.get(a)||0)+1;E.set(a,b),l.push(a),1===b&&a.setAttribute(C,"")}),F+=1,()=>{g&&k.forEach(a=>{let b=(g.get(a)||0)-1;g.set(a,b),b||(!h?.has(a)&&f&&a.removeAttribute(f),h?.delete(a))}),e&&l.forEach(a=>{let b=(E.get(a)||0)-1;E.set(a,b),b||a.removeAttribute(C)}),(F-=1)||(B.inert=new WeakMap,B["aria-hidden"]=new WeakMap,D.inert=new WeakSet,D["aria-hidden"]=new WeakSet,E=new WeakMap)}}(a,f,c,d,{mark:e})}var K=a.i(54098),L=a.i(25123),M=a.i(82204),N=a.i(80326),O=a.i(87924);let P=[];function Q(){P=P.filter(a=>a.deref()?.isConnected)}function R(a){Q(),a&&"body"!==(0,c.getNodeName)(a)&&(P.push(new WeakRef(a)),P.length>20&&(P=P.slice(-20)))}function S(){return Q(),P[P.length-1]?.deref()}function T(a){if(a.hasAttribute("tabindex")&&!a.hasAttribute("data-tabindex")||!a.getAttribute("role")?.includes("dialog"))return;let b=(0,s.focusable)(a).filter(a=>{let b=a.getAttribute("data-tabindex")||"";return(0,s.isTabbable)(a)||a.hasAttribute("data-tabindex")&&!b.startsWith("-")}),c=a.getAttribute("tabindex");0===b.length?"0"!==c&&(a.setAttribute("tabindex","0"),a.setAttribute("data-tabindex","0")):("-1"!==c||a.hasAttribute("data-tabindex")&&"-1"!==a.getAttribute("data-tabindex"))&&(a.setAttribute("tabindex","-1"),a.setAttribute("data-tabindex","-1"))}a.s(["FloatingFocusManager",0,function(a){let{context:y,children:z,disabled:B=!1,initialFocus:C=!0,returnFocus:D=!0,restoreFocus:E=!1,modal:F=!0,closeOnFocusOut:G=!0,openInteractionType:H="",nextFocusableElement:I,previousFocusableElement:P,beforeContentFocusGuardRef:U,externalTree:V,getInsideElements:W}=a,X="rootStore"in y?y.rootStore:y,Y=X.useState("open"),Z=X.useState("domReferenceElement"),$=X.useState("floatingElement"),{events:_,dataRef:aa}=X.context,ab=(0,h.useStableCallback)(()=>aa.current.floatingContext?.nodeId),ac=(0,q.isTypeableCombobox)(Z)&&!1===C,ad=(0,g.useValueAsRef)(C),ae=(0,g.useValueAsRef)(D),af=(0,g.useValueAsRef)(H),ag=(0,g.useValueAsRef)(Y),ah=(0,L.useFloatingTree)(V),ai=(0,K.usePortalContext)(),aj=b.useRef(!1),ak=b.useRef(!1),al=b.useRef(!1),am=b.useRef(null),an=b.useRef(""),ao=b.useRef(""),ap=b.useRef(null),aq=b.useRef(null),ar=(0,f.useMergedRefs)(ap,U,ai?.beforeInsideRef),as=(0,f.useMergedRefs)(aq,ai?.afterInsideRef),at=(0,j.useTimeout)(),au=(0,j.useTimeout)(),av=(0,l.useAnimationFrame)(),aw=null!=ai,ax=(0,q.getFloatingFocusElement)($),ay=(0,h.useStableCallback)((a=ax)=>a?(0,s.tabbable)(a):[]),az=(0,h.useStableCallback)(()=>W?.().filter(a=>null!=a)??[]);b.useEffect(()=>{if(B||!F)return;let a=(0,m.ownerDocument)(ax);return(0,d.addEventListener)(a,"keydown",function(a){"Tab"===a.key&&(0,p.contains)(ax,(0,p.activeElement)((0,m.ownerDocument)(ax)))&&0===ay().length&&!ac&&(0,r.stopEvent)(a)})},[B,ax,F,ac,ay]),b.useEffect(()=>{if(B||!Y)return;let a=(0,m.ownerDocument)(ax);function b(){al.current=!1}return(0,e.mergeCleanups)((0,d.addEventListener)(a,"pointerdown",function(a){let b=(0,p.getTarget)(a),c=az();al.current=!((0,p.contains)($,b)||(0,p.contains)(Z,b)||(0,p.contains)(ai?.portalNode,b)||c.some(a=>a===b||(0,p.contains)(a,b))),ao.current=a.pointerType||"keyboard",b?.closest(`[${M.CLICK_TRIGGER_IDENTIFIER}]`)&&(ak.current=!0,au.start(0,()=>{ak.current=!1}))},!0),(0,d.addEventListener)(a,"pointerup",b,!0),(0,d.addEventListener)(a,"pointercancel",b,!0),(0,d.addEventListener)(a,"keydown",function(){ao.current="keyboard"},!0),b)},[B,$,Z,ax,Y,ai,au,az]),b.useEffect(()=>{if(B||!G)return;let a=(0,m.ownerDocument)(ax);function b(b){let d=b.relatedTarget,e=b.currentTarget,f=(0,p.getTarget)(b);F&&null==d&&null!=f&&(0,p.contains)($,f)&&R(f),queueMicrotask(()=>{let g=ab(),h=X.context.triggerElements,i=az(),j=d?.hasAttribute((0,x.createAttribute)("focus-guard"))&&[ap.current,aq.current,ai?.beforeInsideRef.current,ai?.afterInsideRef.current,ai?.beforeOutsideRef.current,ai?.afterOutsideRef.current,(0,N.resolveRef)(P),(0,N.resolveRef)(I)].includes(d),k=!((0,p.contains)(Z,d)||(0,p.contains)($,d)||(0,p.contains)(d,$)||(0,p.contains)(ai?.portalNode,d)||i.some(a=>a===d||(0,p.contains)(a,d))||null!=d&&h.hasElement(d)||h.hasMatchingElement(a=>(0,p.contains)(a,d))||j||ah&&((0,t.getNodeChildren)(ah.nodesRef.current,g).find(a=>(0,p.contains)(a.context?.elements.floating,d)||(0,p.contains)(a.context?.elements.domReference,d))||(0,t.getNodeAncestors)(ah.nodesRef.current,g).find(a=>[a.context?.elements.floating,(0,q.getFloatingFocusElement)(a.context?.elements.floating)].includes(d)||a.context?.elements.domReference===d)));if(e===Z&&ax&&T(ax),E&&e!==Z&&!(0,u.isElementVisible)(f)&&(0,p.activeElement)(a)===a.body){if((0,c.isHTMLElement)(ax)&&(ax.focus(),"popup"===E))return void av.request(()=>{ax.focus()});let a=ay(),b=am.current,d=(b&&a.includes(b)?b:null)||a[a.length-1]||ax;(0,c.isHTMLElement)(d)&&d.focus()}if(aa.current.insideReactTree){aa.current.insideReactTree=!1;return}(ac||!F)&&d&&k&&!ak.current&&(ac||d!==S())&&(aj.current=!0,X.setOpen(!1,(0,v.createChangeEventDetails)(w.REASONS.focusOut,b)))})}let f=(0,c.isHTMLElement)(Z)?Z:null;if($||f)return(0,e.mergeCleanups)(f&&(0,d.addEventListener)(f,"focusout",b),f&&(0,d.addEventListener)(f,"pointerdown",function(){ak.current=!0,au.start(0,()=>{ak.current=!1})}),$&&(0,d.addEventListener)($,"focusin",function(a){let b=(0,p.getTarget)(a);(0,s.isTabbable)(b)&&(am.current=b)}),$&&(0,d.addEventListener)($,"focusout",b),$&&ai&&(0,d.addEventListener)($,"focusout",function(){al.current||(aa.current.insideReactTree=!0,at.start(0,()=>{aa.current.insideReactTree=!1}))},!0))},[B,Z,$,ax,F,ah,ai,X,G,E,ay,ac,ab,aa,at,au,av,I,P,az]),b.useEffect(()=>{if(B||!$||!Y)return;let a=Array.from(ai?.portalNode?.querySelectorAll(`[${(0,x.createAttribute)("portal")}]`)||[]),b=ah?(0,t.getNodeAncestors)(ah.nodesRef.current,ab()):[],c=b.find(a=>(0,q.isTypeableCombobox)(a.context?.elements.domReference||null))?.context?.elements.domReference,d=J([$,...a,ap.current,aq.current,ai?.beforeOutsideRef.current,ai?.afterOutsideRef.current,...az(),c,(0,N.resolveRef)(P),(0,N.resolveRef)(I),ac?Z:null].filter(a=>null!=a),{ariaHidden:F||ac,mark:!1}),e=J([$,...a].filter(a=>null!=a));return()=>{e(),d()}},[Y,B,Z,$,F,ai,ac,ah,ab,I,P,az]),(0,i.useIsoLayoutEffect)(()=>{if(!Y||B||!(0,c.isHTMLElement)(ax))return;let a=(0,m.ownerDocument)(ax),b=(0,p.activeElement)(a);queueMicrotask(()=>{let c,d=ad.current,e="function"==typeof d?d(af.current||""):d;if(void 0===e||!1===e||(0,p.contains)(ax,b))return;let f=null,g=()=>(null==f&&(f=ay(ax)),f[0]||ax);c=(c=!0===e||null===e?g():(0,N.resolveRef)(e))||g();let h=(0,p.contains)(ax,(0,p.activeElement)(a));A(c,{preventScroll:c===ax,shouldFocus(){if(!ag.current)return!1;if(h)return!0;let b=(0,p.activeElement)(a);return!(b!==c&&(0,p.contains)(ax,b))}})})},[B,Y,ax,ay,ad,af,ag]),(0,i.useIsoLayoutEffect)(()=>{if(B||!ax)return;let a=(0,m.ownerDocument)(ax),b=(0,p.activeElement)(a),d=null==af.current;function e(a){var b,c;let d;if(a.open||(b=a.nativeEvent,c=ao.current,d=(0,n.ownerWindow)((0,p.getTarget)(b)),an.current=b instanceof d.KeyboardEvent?"keyboard":b instanceof d.FocusEvent?c||"keyboard":"pointerType"in b?b.pointerType||"keyboard":"touches"in b?"touch":b instanceof d.MouseEvent?c||(0===b.detail?"keyboard":"mouse"):""),a.reason===w.REASONS.triggerHover&&"mouseleave"===a.nativeEvent.type&&(aj.current=!0),a.reason===w.REASONS.outsidePress)if(a.nested)aj.current=!1;else if((0,r.isVirtualClick)(a.nativeEvent)||(0,r.isVirtualPointerEvent)(a.nativeEvent))aj.current=!1;else{let a=!1;(0,m.ownerDocument)(ax).createElement("div").focus({get preventScroll(){return a=!0,!1}}),a?aj.current=!1:aj.current=!0}}return R(b),_.on("openchange",e),()=>{_.off("openchange",e);let f=(0,p.activeElement)(a),g=az(),h=(0,p.contains)($,f)||g.some(a=>a===f||(0,p.contains)(a,f))||ah&&(0,t.getNodeChildren)(ah.nodesRef.current,ab(),!1).some(a=>(0,p.contains)(a.context?.elements.floating,f)),i=ae.current,j=function(){let a=ae.current,e="function"==typeof a?a(an.current):a;if(void 0===e||!1===e)return null;null===e&&(e=!0);let f=Z?.isConnected?Z:null,g=b?.isConnected&&"body"!==(0,c.getNodeName)(b)?b:null,h=d?g||f:f||g;return(h||(h=S()||null),"boolean"==typeof e)?h:(0,N.resolveRef)(e)||h||null}();queueMicrotask(()=>{let b=j?(0,s.isTabbable)(j)?j:(0,s.tabbable)(j)[0]||j:null;i&&!aj.current&&(0,c.isHTMLElement)(b)&&("boolean"!=typeof i||b===f||f===a.body||h)&&b.focus({preventScroll:!0}),aj.current=!1})}},[B,$,ax,ae,af,_,ah,Z,ab,az]),(0,i.useIsoLayoutEffect)(()=>{if(!k.platform.engine.webkit||Y||!$)return;let a=(0,p.activeElement)((0,m.ownerDocument)($));(0,c.isHTMLElement)(a)&&(0,q.isTypeableElement)(a)&&(0,p.contains)($,a)&&a.blur()},[Y,$]),(0,i.useIsoLayoutEffect)(()=>{if(!B&&ai)return ai.setFocusManagerState({modal:F,closeOnFocusOut:G,open:Y,onOpenChange:X.setOpen,domReference:Z}),()=>{ai.setFocusManagerState(null)}},[B,ai,F,Y,X,G,Z]),(0,i.useIsoLayoutEffect)(()=>{if(!B&&ax)return T(ax),()=>{queueMicrotask(Q)}},[B,ax]);let aA=!B&&(!F||!ac)&&(aw||F);return(0,O.jsxs)(b.Fragment,{children:[aA&&(0,O.jsx)(o.FocusGuard,{"data-type":"inside",ref:ar,onFocus:a=>{if(F){let a=ay();A(a[a.length-1])}else if(ai?.portalNode)if(aj.current=!1,(0,s.isOutsideEvent)(a,ai.portalNode)){let a=(0,s.getNextTabbable)(Z);a?.focus()}else(0,N.resolveRef)(P??ai.beforeOutsideRef)?.focus()}}),z,aA&&(0,O.jsx)(o.FocusGuard,{"data-type":"inside",ref:as,onFocus:a=>{if(F)A(ay()[0]);else if(ai?.portalNode)if(G&&(aj.current=!0),(0,s.isOutsideEvent)(a,ai.portalNode)){let a=(0,s.getPreviousTabbable)(Z);a?.focus()}else(0,N.resolveRef)(I??ai.afterOutsideRef)?.focus()}})]})}],50687)},69649,a=>{"use strict";var b=a.i(26476);let c="ArrowUp",d="ArrowDown",e="ArrowLeft",f="ArrowRight",g="Home",h=new Set([e,f]),i=new Set([e,f,g,"End"]),j=new Set([c,d]),k=new Set([c,d,g,"End"]),l=new Set([...h,...j]),m=new Set([...l,g,"End"]),n=new Set(["Shift","Control","Alt","Meta"]);function o(a,b,c){let d="left"===c?"offsetLeft":"offsetTop",e=0;for(;b.offsetParent&&(e+=b[d],b.offsetParent!==a);)b=b.offsetParent;return e}function p(a){let b=getComputedStyle(a);return{scrollMarginTop:parseFloat(b.scrollMarginTop)||0,scrollMarginRight:parseFloat(b.scrollMarginRight)||0,scrollMarginBottom:parseFloat(b.scrollMarginBottom)||0,scrollMarginLeft:parseFloat(b.scrollMarginLeft)||0,scrollPaddingTop:parseFloat(b.scrollPaddingTop)||0,scrollPaddingRight:parseFloat(b.scrollPaddingRight)||0,scrollPaddingBottom:parseFloat(b.scrollPaddingBottom)||0,scrollPaddingLeft:parseFloat(b.scrollPaddingLeft)||0}}a.s(["ARROW_DOWN",0,d,"ARROW_KEYS",0,l,"ARROW_LEFT",0,e,"ARROW_RIGHT",0,f,"ARROW_UP",0,c,"COMPOSITE_KEYS",0,m,"END",0,"End","HOME",0,g,"HORIZONTAL_KEYS",0,h,"HORIZONTAL_KEYS_WITH_EXTRA_KEYS",0,i,"MODIFIER_KEYS",0,n,"VERTICAL_KEYS",0,j,"VERTICAL_KEYS_WITH_EXTRA_KEYS",0,k,"isNativeInput",0,function(a){return!!((0,b.isHTMLElement)(a)&&"INPUT"===a.tagName&&null!=a.selectionStart||(0,b.isHTMLElement)(a)&&"TEXTAREA"===a.tagName)},"scrollIntoViewIfNeeded",0,function(a,b,c,d){if(!a||!b||!b.scrollTo)return;let e=a.scrollLeft,f=a.scrollTop,g=a.clientWidth<a.scrollWidth,h=a.clientHeight<a.scrollHeight;if(g&&"vertical"!==d){let d=o(a,b,"left"),f=p(a),g=p(b);"ltr"===c&&(d+b.offsetWidth+g.scrollMarginRight>a.scrollLeft+a.clientWidth-f.scrollPaddingRight?e=d+b.offsetWidth+g.scrollMarginRight-a.clientWidth+f.scrollPaddingRight:d-g.scrollMarginLeft<a.scrollLeft+f.scrollPaddingLeft&&(e=d-g.scrollMarginLeft-f.scrollPaddingLeft)),"rtl"===c&&(d-g.scrollMarginRight<a.scrollLeft+f.scrollPaddingLeft?e=d-g.scrollMarginLeft-f.scrollPaddingLeft:d+b.offsetWidth+g.scrollMarginRight>a.scrollLeft+a.clientWidth-f.scrollPaddingRight&&(e=d+b.offsetWidth+g.scrollMarginRight-a.clientWidth+f.scrollPaddingRight))}if(h&&"horizontal"!==d){let c=o(a,b,"top"),d=p(a),e=p(b);c-e.scrollMarginTop<a.scrollTop+d.scrollPaddingTop?f=c-e.scrollMarginTop-d.scrollPaddingTop:c+b.offsetHeight+e.scrollMarginBottom>a.scrollTop+a.clientHeight-d.scrollPaddingBottom&&(f=c+b.offsetHeight+e.scrollMarginBottom-a.clientHeight+d.scrollPaddingBottom)}a.scrollTo({left:e,top:f,behavior:"auto"})}])},18816,a=>{"use strict";var b=a.i(72131),c=a.i(26184);let d=b.forwardRef(function(a,b){let{className:d,render:e,orientation:f="horizontal",style:g,...h}=a;return(0,c.useRenderElement)("div",a,{state:{orientation:f},ref:b,props:[{role:"separator","aria-orientation":f},h]})});a.s(["Separator",0,d])},3497,23689,12765,29302,83603,a=>{"use strict";a.s([],3497);var b=a.i(72131),c=a.i(54662);let d=b.createContext(!1),e=b.createContext(void 0);function f(a){let d=b.useContext(e);if(!1===a&&void 0===d)throw Error((0,c.default)(27));return d}a.s(["DialogRootContext",0,e,"IsDrawerContext",0,d,"useDialogRootContext",0,f],23689);var g=a.i(26184),h=a.i(75633),i=a.i(81735);let j={...h.popupStateMapping,...i.transitionStatusMapping},k=b.forwardRef(function(a,b){let{render:c,className:d,style:e,forceRender:h=!1,...i}=a,{store:k}=f(),l=k.useState("open"),m=k.useState("nested"),n=k.useState("mounted"),o=k.useState("transitionStatus");return(0,g.useRenderElement)("div",a,{state:{open:l,transitionStatus:o},ref:[k.context.backdropRef,b],stateAttributesMapping:j,props:[{role:"presentation",hidden:!n,style:{userSelect:"none",WebkitUserSelect:"none"}},i],enabled:h||!m})});a.s(["DialogBackdrop",0,k],12765);var l=a.i(21436),m=a.i(94552),n=a.i(7436);let o=b.forwardRef(function(a,b){let{render:c,className:d,style:e,disabled:h=!1,nativeButton:i=!0,...j}=a,{store:k}=f(),o=k.useState("open"),{getButtonProps:p,buttonRef:q}=(0,l.useButton)({disabled:h,native:i});return(0,g.useRenderElement)("button",a,{state:{disabled:h},ref:[b,q],props:[{onClick:function(a){o&&k.setOpen(!1,(0,m.createChangeEventDetails)(n.REASONS.closePress,a.nativeEvent))}},j,p]})});a.s(["DialogClose",0,o],29302);var p=a.i(557);let q=b.forwardRef(function(a,b){let{render:c,className:d,style:e,id:h,...i}=a,{store:j}=f(),k=(0,p.useBaseUiId)(h);return j.useSyncedValueWithCleanup("descriptionElementId",k),(0,g.useRenderElement)("p",a,{ref:b,props:[{id:k},i]})});a.s(["DialogDescription",0,q],83603)},49670,86070,a=>{"use strict";var b,c,d=a.i(72131),e=a.i(50687),f=a.i(23689),g=a.i(26184),h=a.i(75633),i=a.i(81735);let j=((b={}).nestedDialogs="--nested-dialogs",b),k=((c={})[c.open=h.CommonPopupDataAttributes.open]="open",c[c.closed=h.CommonPopupDataAttributes.closed]="closed",c[c.startingStyle=h.CommonPopupDataAttributes.startingStyle]="startingStyle",c[c.endingStyle=h.CommonPopupDataAttributes.endingStyle]="endingStyle",c.nested="data-nested",c.nestedDialogOpen="data-nested-dialog-open",c);var l=a.i(54662);let m=d.createContext(void 0);function n(){let a=d.useContext(m);if(void 0===a)throw Error((0,l.default)(26));return a}a.s(["DialogPortalContext",0,m,"useDialogPortalContext",0,n],86070);var o=a.i(5687),p=a.i(69649),q=a.i(84204),r=a.i(87924);let s={...h.popupStateMapping,...i.transitionStatusMapping,nestedDialogOpen:a=>a?{[k.nestedDialogOpen]:""}:null},t=d.forwardRef(function(a,b){let{render:c,className:d,style:h,finalFocus:i,initialFocus:k,...l}=a,{store:m}=(0,f.useDialogRootContext)(),t=m.useState("descriptionElementId"),u=m.useState("disablePointerDismissal"),v=m.useState("floatingRootContext"),w=m.useState("popupProps"),x=m.useState("modal"),y=m.useState("mounted"),z=m.useState("nested"),A=m.useState("nestedOpenDialogCount"),B=m.useState("open"),C=m.useState("openMethod"),D=m.useState("titleElementId"),E=m.useState("transitionStatus"),F=m.useState("role"),G=v.useState("floatingId"),H=l.id??G;n(),(0,o.useOpenChangeComplete)({open:B,ref:m.context.popupRef,onComplete(){B&&m.context.onOpenChangeComplete?.(!0)}});let I=void 0===k?(0,q.createDefaultInitialFocus)(m.context.popupRef):k,J=m.useStateSetter("popupElement"),K=(0,g.useRenderElement)("div",a,{state:{open:B,nested:z,transitionStatus:E,nestedDialogOpen:A>0},props:[w,{id:H,"aria-labelledby":D??void 0,"aria-describedby":t??void 0,role:F,...q.FOCUSABLE_POPUP_PROPS,hidden:!y,onKeyDown(a){p.COMPOSITE_KEYS.has(a.key)&&a.stopPropagation()},style:{[j.nestedDialogs]:A}},l],ref:[b,m.context.popupRef,J],stateAttributesMapping:s});return(0,r.jsx)(e.FloatingFocusManager,{context:v,openInteractionType:C,disabled:!y,closeOnFocusOut:!u,initialFocus:I,returnFocus:i,modal:!1!==x,restoreFocus:"popup",children:K})});a.s(["DialogPopup",0,t],49670)},91034,a=>{"use strict";var b=a.i(72131),c=a.i(54125),d=a.i(54098),e=a.i(23689),f=a.i(86070),g=a.i(30076),h=a.i(87924);let i=b.forwardRef(function(a,b){let{keepMounted:i=!1,...j}=a,{store:k}=(0,e.useDialogRootContext)(),l=k.useState("mounted"),m=k.useState("modal"),n=k.useState("open");return l||i?(0,h.jsx)(f.DialogPortalContext.Provider,{value:i,children:(0,h.jsxs)(d.FloatingPortal,{ref:b,...j,children:[l&&!0===m&&(0,h.jsx)(g.InternalBackdrop,{ref:k.context.internalBackdropRef,inert:(0,c.inertValue)(!n)}),a.children]})}):null});a.s(["DialogPortal",0,i])},18836,4066,20594,73343,a=>{"use strict";var b,c=a.i(72131),d=a.i(23689),e=a.i(28693),f=a.i(13259),g=a.i(24715),h=a.i(38939),i=a.i(40014),j=a.i(94552),k=a.i(7436),l=a.i(84204);function m({store:a,parentContext:b,isDrawer:d}){let e=a.useState("open"),j=a.useState("disablePointerDismissal"),k=a.useState("modal"),n=a.useState("popupElement"),o=a.useState("floatingRootContext"),[p,q]=c.useState(0),[r,s]=c.useState(0),t=0===p,u=(0,h.useDismiss)(o,{outsidePressEvent:()=>a.context.internalBackdropRef.current||a.context.backdropRef.current?"intentional":{mouse:"trap-focus"===k?"sloppy":"intentional",touch:"sloppy"},outsidePress(b){if(!a.context.outsidePressEnabledRef.current||"button"in b&&0!==b.button||"touches"in b&&1!==b.touches.length)return!1;let c=(0,i.getTarget)(b);return!!t&&!j&&(!k||!a.context.internalBackdropRef.current&&!a.context.backdropRef.current||a.context.internalBackdropRef.current===c||a.context.backdropRef.current===c||(0,i.contains)(c,n)&&!c?.hasAttribute("data-base-ui-portal"))},escapeKey:t});(0,f.useScrollLock)(e&&!0===k,n),a.useContextCallback("onNestedDialogOpen",(a,b)=>{q(a),s(b)}),a.useContextCallback("onNestedDialogClose",()=>{q(0),s(0)}),c.useEffect(()=>(b?.onNestedDialogOpen&&e&&b.onNestedDialogOpen(p+1,r+ +!!d),b?.onNestedDialogClose&&!e&&b.onNestedDialogClose(),()=>{b?.onNestedDialogClose&&e&&b.onNestedDialogClose()}),[d,e,p,r,b]);let v=u.reference??g.EMPTY_OBJECT,w=u.trigger??g.EMPTY_OBJECT,x=u.floating??g.EMPTY_OBJECT;return(0,l.usePopupInteractionProps)(a,{activeTriggerProps:v,inactiveTriggerProps:w,popupProps:x,nestedOpenDialogCount:p,nestedOpenDrawerCount:r}),null}var n=a.i(64074),o=a.i(17498),p=a.i(17017),q=a.i(51943);let r={...p.popupStoreSelectors,modal:(0,n.createSelector)(a=>a.modal),nested:(0,n.createSelector)(a=>a.nested),nestedOpenDialogCount:(0,n.createSelector)(a=>a.nestedOpenDialogCount),nestedOpenDrawerCount:(0,n.createSelector)(a=>a.nestedOpenDrawerCount),disablePointerDismissal:(0,n.createSelector)(a=>a.disablePointerDismissal),openMethod:(0,n.createSelector)(a=>a.openMethod),descriptionElementId:(0,n.createSelector)(a=>a.descriptionElementId),titleElementId:(0,n.createSelector)(a=>a.titleElementId),viewportElement:(0,n.createSelector)(a=>a.viewportElement),role:(0,n.createSelector)(a=>a.role)};class s extends o.ReactStore{constructor(a,b,d=!1){const e=new q.PopupTriggerMap,f=function(a={}){return{...(0,p.createInitialPopupStoreState)(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...a}}(a);f.floatingRootContext=(0,p.createPopupFloatingRootContext)(e,b,d),super(f,{popupRef:c.createRef(),backdropRef:c.createRef(),internalBackdropRef:c.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0},r)}setOpen=(a,b)=>{if(b.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},a||null!=b.trigger||null==this.state.activeTriggerId||(b.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(a,b),b.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(a,b);let c={open:a};(0,l.setPopupOpenState)(c,a,b.trigger),this.update(c)};static useStore(a,b){return(0,l.usePopupStore)(a,(a,c)=>new s(b,a,c),!0).store}}a.s(["DialogStore",0,s],4066);var t=a.i(87924);a.s(["DialogRoot",0,function(a){return function(a,b="dialog"){let{children:f,open:g,defaultOpen:h=!1,onOpenChange:i,onOpenChangeComplete:n,disablePointerDismissal:o=!1,modal:p=!0,actionsRef:q,handle:r,triggerId:u,defaultTriggerId:v=null}=a,w="alert-dialog"===b,x=(0,d.useDialogRootContext)(!0),y={modal:!!w||p,disablePointerDismissal:w||o,nested:!!x,role:w?"alertdialog":"dialog"},z=s.useStore(r?.store,{open:h,openProp:g,activeTriggerId:v,triggerIdProp:u,...y});(0,e.useOnFirstRender)(()=>{let a=void 0===g&&!1===z.state.open&&!0===h?{open:!0,activeTriggerId:v}:null;w?z.update(a?{...y,...a}:y):a&&z.update(a)}),z.useControlledProp("openProp",g),z.useControlledProp("triggerIdProp",u),z.useSyncedValues(y),z.useContextCallback("onOpenChange",i),z.useContextCallback("onOpenChangeComplete",n);let A=z.useState("open"),B=z.useState("mounted"),C=z.useState("payload");!function(a){let{store:b,actionsRef:d}=a,e=b.useState("open");(0,l.usePopupRootSync)(b,e),(0,l.useImplicitActiveTrigger)(b);let{forceUnmount:f}=(0,l.useOpenStateTransitions)(e,b),g=c.useCallback(()=>{b.setOpen(!1,(0,j.createChangeEventDetails)(k.REASONS.imperativeAction))},[b]);c.useImperativeHandle(d,()=>({unmount:f,close:g}),[f,g])}({store:z,actionsRef:q});let D=c.useMemo(()=>({store:z}),[z]);return(0,t.jsx)(d.IsDrawerContext.Provider,{value:!1,children:(0,t.jsxs)(d.DialogRootContext.Provider,{value:D,children:[(A||B)&&(0,t.jsx)(m,{store:z,parentContext:x?.store.context,isDrawer:"drawer"===b}),"function"==typeof f?f({payload:C}):f]})})}(a,c.useContext(d.IsDrawerContext)?"drawer":"dialog")}],18836);var u=a.i(26184),v=a.i(75633),w=a.i(81735),x=a.i(86070);let y=((b={})[b.open=v.CommonPopupDataAttributes.open]="open",b[b.closed=v.CommonPopupDataAttributes.closed]="closed",b[b.startingStyle=v.CommonPopupDataAttributes.startingStyle]="startingStyle",b[b.endingStyle=v.CommonPopupDataAttributes.endingStyle]="endingStyle",b.nested="data-nested",b.nestedDialogOpen="data-nested-dialog-open",b),z={...v.popupStateMapping,...w.transitionStatusMapping,nested:a=>a?{[y.nested]:""}:null,nestedDialogOpen:a=>a?{[y.nestedDialogOpen]:""}:null},A=c.forwardRef(function(a,b){let{render:c,className:e,style:f,children:g,...h}=a,i=(0,x.useDialogPortalContext)(),{store:j}=(0,d.useDialogRootContext)(),k=j.useState("open"),l=j.useState("nested"),m=j.useState("transitionStatus"),n=j.useState("nestedOpenDialogCount"),o=j.useState("mounted"),p=j.useStateSetter("viewportElement");return(0,u.useRenderElement)("div",a,{enabled:i||o,state:{open:k,nested:l,transitionStatus:m,nestedDialogOpen:n>0},ref:[b,p],stateAttributesMapping:z,props:[{role:"presentation",hidden:!o,style:{pointerEvents:k?void 0:"none"},children:g},h]})});a.s(["DialogViewport",0,A],20594);var B=a.i(557);let C=c.forwardRef(function(a,b){let{render:c,className:e,style:f,id:g,...h}=a,{store:i}=(0,d.useDialogRootContext)(),j=(0,B.useBaseUiId)(g);return i.useSyncedValueWithCleanup("titleElementId",j),(0,u.useRenderElement)("h2",a,{ref:b,props:[{id:j},h]})});a.s(["DialogTitle",0,C],73343)},94203,a=>{"use strict";a.i(3497);var b=a.i(12765),c=a.i(29302),d=a.i(83603),e=a.i(49670),f=a.i(91034),g=a.i(18836),h=a.i(20594),i=a.i(73343),j=a.i(54662),k=a.i(72131),l=a.i(23689),m=a.i(21436),n=a.i(26184),o=a.i(75633),p=a.i(82204),q=a.i(84204),r=a.i(557),s=a.i(31973),t=a.i(29752);let u=k.forwardRef(function(a,b){let{render:c,className:d,style:e,disabled:f=!1,nativeButton:g=!0,id:h,payload:i,handle:u,...v}=a,w=(0,l.useDialogRootContext)(!0),x=u?.store??w?.store;if(!x)throw Error((0,j.default)(79));let y=(0,r.useBaseUiId)(h),z=x.useState("floatingRootContext"),A=x.useState("isOpenedByTrigger",y),B=x.useState("triggerPopupId",y),C=k.useRef(null),{registerTrigger:D,isMountedByThisTrigger:E}=(0,q.useTriggerDataForwarding)(y,C,x,{payload:i}),{getButtonProps:F,buttonRef:G}=(0,m.useButton)({disabled:f,native:g}),H=(0,s.useClick)(z,{enabled:null!=z}),I=(0,t.useOpenMethodTriggerProps)(()=>x.select("open"),a=>{x.set("openMethod",a)}),J=x.useState("triggerProps",E);return(0,n.useRenderElement)("button",a,{state:{disabled:f,open:A},ref:[G,b,D,C],props:[H.reference,J,I,{[p.CLICK_TRIGGER_IDENTIFIER]:"",id:y,"aria-haspopup":"dialog","aria-expanded":A,"aria-controls":B},v,F],stateAttributesMapping:o.triggerOpenStateMapping})});var v=a.i(4066),w=a.i(94552),x=a.i(7436);class y{constructor(a){this.store=a??new v.DialogStore}open(a){let b=a?this.store.context.triggerElements.getById(a):void 0;this.store.setOpen(!0,(0,w.createChangeEventDetails)(x.REASONS.imperativeAction,void 0,b))}openWithPayload(a){this.store.set("payload",a),this.store.setOpen(!0,(0,w.createChangeEventDetails)(x.REASONS.imperativeAction,void 0,void 0))}close(){this.store.setOpen(!1,(0,w.createChangeEventDetails)(x.REASONS.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}}a.s(["Backdrop",()=>b.DialogBackdrop,"Close",()=>c.DialogClose,"Description",()=>d.DialogDescription,"Handle",0,y,"Popup",()=>e.DialogPopup,"Portal",()=>f.DialogPortal,"Root",()=>g.DialogRoot,"Title",()=>i.DialogTitle,"Trigger",0,u,"Viewport",()=>h.DialogViewport,"createHandle",0,function(){return new y}],17953);var z=a.i(17953);a.s(["Dialog",0,z],94203)},76965,a=>{"use strict";let b=(0,a.i(64831).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["default",0,b])},23251,a=>{"use strict";var b=a.i(76965);a.s(["XIcon",()=>b.default])},88529,a=>{"use strict";var b=a.i(72131);a.s([],32795),a.i(32795);var c=a.i(57738),d=a.i(54401),e=a.i(1230),f=a.i(27576),g=a.i(54662);let h=b.createContext(void 0);var i=a.i(41302),j=a.i(79549),k=a.i(557),l=a.i(77260),m=a.i(87924);let n=function(a){let c=(0,k.useBaseUiId)(),e=void 0===a.controlId?c:a.controlId,[f,g]=b.useState(e),[h,i]=b.useState(a.labelId),[n,o]=b.useState([]),p=(0,j.useRefWithInit)(()=>new Map),{messageIds:q}=(0,l.useLabelableContext)(),r=(0,d.useStableCallback)((a,b)=>{let c=p.current;void 0===b?c.delete(a):(c.set(a,b),g(a=>{let b;if(0!==c.size){for(let d of c.values()){if(void 0!==a&&d===a)return a;void 0===b&&(b=d)}return b}}))}),s=b.useCallback(a=>{let b=a["aria-describedby"]?a["aria-describedby"].split(" "):[];return b.push(...q,...n),{...a,"aria-describedby":Array.from(new Set(b)).join(" ")||void 0}},[q,n]),t=b.useMemo(()=>({controlId:f,registerControlId:r,labelId:h,setLabelId:i,messageIds:n,setMessageIds:o,getDescriptionProps:s}),[f,r,h,i,n,o,s]);return(0,m.jsx)(l.LabelableContext.Provider,{value:t,children:a.children})};var o=a.i(26184),p=a.i(24715),q=a.i(36069),r=a.i(76459);function s(a,b){return{...a,state:{...a.state,valid:!b&&a.state.valid}}}let t=Object.keys(f.DEFAULT_VALIDITY_STATE);function u(a,b){let c=!1;for(let d of b)d.setCustomValidity(""),c||=d===a;c||a.setCustomValidity("")}let v=b.forwardRef(function(a,k){let{errors:n,validationMode:v,submitAttemptedRef:w}=(0,i.useFormContext)(),{render:x,className:y,validate:z,validationDebounceTime:A=0,validationMode:B=v,name:C,disabled:D=!1,invalid:E,dirty:F,touched:G,actionsRef:H,style:I,...J}=a,K=function(a=!1){let c=b.useContext(h);if(!c&&!a)throw Error((0,g.default)(86));return c}(!0)?.disabled,L=(0,d.useStableCallback)(z||(()=>null)),M=K||D,[N,O]=b.useState(!1),[P,Q]=b.useState(!1),[R,S]=b.useState(!1),[T,U]=b.useState(!1),V=F??P,W=G??N,X=b.useRef(V),Y=b.useRef(void 0),[Z,$]=b.useState(),_=C??Z;(0,c.useIsoLayoutEffect)(()=>{void 0!==F&&(X.current=F)},[F]);let aa=b.useCallback(()=>Y.current,[]),ab=b.useCallback(a=>{Y.current=a},[]),ac=(0,d.useStableCallback)(a=>{void 0===F&&(a&&(X.current=!0),Q(a))}),ad=(0,d.useStableCallback)(a=>{void 0===G&&O(a)}),ae=(0,d.useStableCallback)(()=>"onChange"===B||"onSubmit"===B&&w.current),af=_&&Object.hasOwn(n,_)?n[_]:null,ag=!!(Array.isArray(af)?af.length:af),ah=!0===E||ag,[ai,aj]=b.useState({state:f.DEFAULT_VALIDITY_STATE,error:"",errors:[],value:null,initialValue:null}),ak=M?null:!ah&&ai.state.valid,al=b.useMemo(()=>({disabled:M,touched:W,dirty:V,valid:ak,filled:R,focused:T}),[M,W,V,ak,R,T]),am=function(a){let{formRef:c}=(0,i.useFormContext)(),{setValidityData:e,validate:g,validityData:h,validationDebounceTime:k,invalid:m,markedDirtyRef:n,state:o,shouldValidateOnChange:v,getRegisteredFieldId:w}=a,{controlId:x,getDescriptionProps:y}=(0,l.useLabelableContext)(),z=(0,q.useTimeout)(),A=b.useRef(null),B=(0,j.useRefWithInit)(()=>new Set).current,C=b.useRef(0),D=b.useCallback(a=>{if(a)return B.add(a),()=>{B.delete(a)}},[B]),E=(0,d.useStableCallback)(async(a,b=!1)=>{let d,i=function(a){let b=null;for(let c of a)if(!c.disabled){if(!c.validity.valid)return c;b??=c}return b}(B)??A.current;if(!i)return;C.current+=1;let j=C.current;function k(a,b=m){let d=w()??x;if(null==d)return;let e=c.current.fields.get(d);if(!e)return;let f=s(a,b);c.current.fields.set(d,{...e,validityData:f})}if(b){if(!1!==o.valid)return;let b=i.validity;if(!b.valueMissing){let b={value:a,state:{...f.DEFAULT_VALIDITY_STATE,valid:!0},error:"",errors:[],initialValue:h.initialValue};u(i,B),k(b,!1),e(b);return}let c=t.reduce((a,c)=>(a[c]=b[c],a),{});if(!c.valid&&!function(a){if(!a||a.valid||!a.valueMissing)return!1;let b=!1;for(let c of t)"valid"!==c&&("valueMissing"===c?b=a[c]:a[c]&&(b=!1));return b}(c))return}z.clear();let l=null,p=[],q=function(a){let b=t.reduce((b,c)=>(b[c]=a.validity[c],b),{}),c=!1;for(let a of t)if("valid"!==a){if("valueMissing"===a&&b[a])c=!0;else if(b[a])return b}return c&&!n.current&&(b.valid=!0,b.valueMissing=!1),b}(i),r=v();if(i.validationMessage&&!r)d=i.validationMessage,p=[i.validationMessage];else{let b=g(a,Array.from(c.current.fields.values()).reduce((a,b)=>(b.name&&(a[b.name]=b.getValue()),a),{}));if("object"==typeof b&&null!==b&&"then"in b){if(l=await b,j!==C.current)return}else l=b;null!==l?(q.valid=!1,q.customError=!0,Array.isArray(l)?(p=l,i.setCustomValidity(l.join("\n"))):l&&(p=[l],i.setCustomValidity(l))):r&&(u(i,B),q.customError=!1,i.validationMessage?(d=i.validationMessage,p=[i.validationMessage]):i.validity.valid&&!q.valid&&(q.valid=!0))}let y={value:a,state:q,error:d??(Array.isArray(l)?l[0]:l??""),errors:p,initialValue:h.initialValue};k(y),e(y)}),F=(0,d.useStableCallback)(a=>{z.clear();let b=v();b&&""!==a&&k?(C.current+=1,z.start(k,()=>{E(a)})):E(a,!b)}),G=b.useCallback((a,b={})=>(0,r.mergeProps)(y(b),!1!==o.valid||o.disabled||a?p.EMPTY_OBJECT:{"aria-invalid":!0}),[y,o.disabled,o.valid]);return b.useMemo(()=>({getValidationProps:G,inputRef:A,registerInput:D,commit:E,change:F}),[G,D,E,F])}({setValidityData:aj,validate:L,validityData:ai,validationDebounceTime:A,invalid:ah,markedDirtyRef:X,state:al,shouldValidateOnChange:ae,getRegisteredFieldId:aa}),[an,ao]=function(a){let{commit:e,invalid:f,markedDirtyRef:g,name:h,setRegisteredFieldName:j,setRegisteredFieldId:k,setValidityData:l,validityData:m}=a,{formRef:n}=(0,i.useFormContext)(),o=b.useRef(null),p=b.useRef(null),q=b.useRef(null),r=(0,d.useStableCallback)(()=>{let a=p.current;if(a)return a.getValue?a.getValue():a.value});function t(a){return void 0===a.value?r():a.value}let u=(0,d.useStableCallback)(()=>{let a=p.current;(g.current=!0,a)?e(t(a)):e(m.value)});function v(a=p.current?.id){a&&n.current.fields.delete(a)}(0,c.useIsoLayoutEffect)(()=>{let a=p.current;a&&a.id&&(j(h?void 0:a.name),n.current.fields.set(a.id,{getValue:r,name:h??a.name,controlRef:a.controlRef??q,validityData:s(m,f),validate:u}))},[n,r,f,h,j,u,m]),(0,c.useIsoLayoutEffect)(()=>{let a=n.current.fields;return()=>{let b=p.current?.id;b&&a.delete(b)}},[n]);let w=(0,d.useStableCallback)((a,b)=>{let c;if(!b){o.current===a&&(o.current=null,v(),p.current=null,j(void 0),k(void 0));return}let d=p.current?.id;o.current=a,p.current=b,h||j(b.name),k(b.id),d&&d!==b.id&&v(d),function(){let a=p.current;if(!a)return;let b=t(a);null===m.initialValue&&null!==b&&l(a=>({...a,initialValue:b}))}(),(c=p.current)&&c.id&&n.current.fields.set(c.id,{getValue:r,name:h??c.name,controlRef:c.controlRef??q,validityData:s(m,f),validate:u})});return[u,w]}({commit:am.commit,invalid:ah,markedDirtyRef:X,name:C,setRegisteredFieldName:$,setRegisteredFieldId:ab,setValidityData:aj,validityData:ai});b.useImperativeHandle(H,()=>({validate:an}),[an]);let ap=b.useMemo(()=>({invalid:ah,name:_,validityData:ai,setValidityData:aj,disabled:M,touched:W,setTouched:ad,dirty:V,setDirty:ac,filled:R,setFilled:S,focused:T,setFocused:U,validate:L,validationMode:B,validationDebounceTime:A,shouldValidateOnChange:ae,state:al,markedDirtyRef:X,registerFieldControl:ao,validation:am}),[ah,_,ai,M,W,ad,V,ac,R,S,T,U,L,B,A,ae,al,ao,am]),aq=(0,o.useRenderElement)("div",a,{ref:k,state:al,props:J,stateAttributesMapping:f.fieldValidityMapping});return(0,m.jsx)(e.FieldRootContext.Provider,{value:ap,children:aq})}),w=b.forwardRef(function(a,b){return(0,m.jsx)(n,{children:(0,m.jsx)(v,{...a,ref:b})})});var x=a.i(89481);let y=b.createContext({disabled:!1});function z(){return b.useContext(y)}let A=b.forwardRef(function(a,c){let{render:d,className:g,style:h,id:i,nativeLabel:j=!0,...k}=a,m=(0,e.useFieldRootContext)(!1),n=z(),{labelId:p}=(0,l.useLabelableContext)(),q={...m.state,disabled:m.disabled||n.disabled},r=b.useRef(null),s=(0,x.useLabel)({id:p??i,native:j});return(0,o.useRenderElement)("label",a,{ref:[c,r],state:q,props:[s,k],stateAttributesMapping:f.fieldValidityMapping})});var B=a.i(5687),C=a.i(81735),D=a.i(48250);let E={...f.fieldValidityMapping,...C.transitionStatusMapping},F=b.forwardRef(function(a,d){let{render:f,id:g,className:h,match:j,style:n,...p}=a,q=(0,k.useBaseUiId)(g),{validityData:r,state:s,name:t}=(0,e.useFieldRootContext)(!1),{setMessageIds:u}=(0,l.useLabelableContext)(),{errors:v}=(0,i.useFormContext)(),w=t&&Object.hasOwn(v,t)?v[t]:null,x=!!(Array.isArray(w)?w.length:w),y="string"==typeof j,z=!1;z=!0===j||!s.disabled&&(y?!!r.state[j]:x||!1===r.state.valid);let{mounted:A,transitionStatus:C,setMounted:F}=(0,D.useTransitionStatus)(z);(0,c.useIsoLayoutEffect)(()=>{if(z&&q)return u(a=>a.concat(q)),()=>{u(a=>a.filter(a=>a!==q))}},[z,q,u]);let G=b.useRef(null),[H,I]=b.useState(null),[J,K]=b.useState(null),L=r.error;!y&&x?L=w:r.errors.length>1&&(L=r.errors);let M=L??"";Array.isArray(L)&&(M=L.length>1?(0,m.jsx)("ul",{children:L.map(a=>(0,m.jsx)("li",{children:a},a))}):L[0]??"");let N=Array.isArray(L)?JSON.stringify(L):L;z&&N!==J&&(K(N),I(M)),(0,B.useOpenChangeComplete)({open:z,ref:G,onComplete(){z||F(!1)}});let O={...s,transitionStatus:C},P=(0,o.useRenderElement)("div",a,{ref:[d,G],state:O,props:[{id:q,children:z?M:H},p],stateAttributesMapping:E,enabled:A});return A?P:null}),G=b.forwardRef(function(a,b){let{render:d,id:g,className:h,style:i,...j}=a,m=(0,k.useBaseUiId)(g),n=(0,e.useFieldRootContext)(!1),p=z(),{setMessageIds:q}=(0,l.useLabelableContext)(),r={...n.state,disabled:n.disabled||p.disabled};return(0,c.useIsoLayoutEffect)(()=>{if(m)return q(a=>a.concat(m)),()=>{q(a=>a.filter(a=>a!==m))}},[m,q]),(0,o.useRenderElement)("p",a,{ref:b,state:r,props:[{id:m},j],stateAttributesMapping:f.fieldValidityMapping})});var H=a.i(50381),I=a.i(87828),J=a.i(58589),K=a.i(69476),L=a.i(94552),M=a.i(7436),N=a.i(40014);let O=b.forwardRef(function(a,g){let{render:h,className:j,id:k,name:m,value:n,disabled:p=!1,onValueChange:q,defaultValue:r,autoFocus:s=!1,style:t,...u}=a,{state:v,name:w,disabled:x,setTouched:y,setDirty:z,validityData:A,setFocused:B,setFilled:C,validationMode:D,validation:E}=(0,e.useFieldRootContext)(),{clearErrors:F}=(0,i.useFormContext)(),G=x||p,O=w??m,P={...v,disabled:G},{labelId:Q}=(0,l.useLabelableContext)(),R=(0,K.useLabelableId)({id:k});(0,c.useIsoLayoutEffect)(()=>{let a=null!=n;E.inputRef.current?.value||a&&""!==n?C(!0):a&&""===n&&C(!1)},[E.inputRef,C,n]);let S=b.useRef(null);(0,c.useIsoLayoutEffect)(()=>{s&&S.current===(0,N.activeElement)((0,I.ownerDocument)(S.current))&&B(!0)},[s,B]);let[T]=(0,H.useControlled)({controlled:n,default:r,name:"FieldControl",state:"value"}),U=void 0!==n,V=U?T:void 0,W=(0,d.useStableCallback)(()=>E.inputRef.current?.value);return(0,J.useRegisterFieldControl)(E.inputRef,R,V,W,!G,m),(0,o.useRenderElement)("input",a,{ref:[g,S],state:P,props:[{id:R,disabled:G,name:O,ref:E.inputRef,"aria-labelledby":Q,autoFocus:s,...U?{value:V}:{defaultValue:r},onChange(a){let b=a.currentTarget.value;q?.(b,(0,L.createChangeEventDetails)(M.REASONS.none,a.nativeEvent)),z(b!==A.initialValue),C(""!==b),a.nativeEvent.defaultPrevented||(F(O),E.change(b))},onFocus(){B(!0)},onBlur(a){y(!0),B(!1),"onBlur"===D&&E.commit(a.currentTarget.value)},onKeyDown(a){"INPUT"===a.currentTarget.tagName&&"Enter"===a.key&&(y(!0),E.commit(a.currentTarget.value))}},u,a=>E.getValidationProps(G,a)],stateAttributesMapping:f.fieldValidityMapping})}),P=b.createContext(void 0),Q=b.forwardRef(function(a,c){let{render:d,className:h,style:i,disabled:j=!1,...k}=a,{state:l,disabled:p}=(0,e.useFieldRootContext)(!1),q=p||j,r={...l,disabled:q},s=function(a=!0){let c=b.useContext(P);if(void 0===c&&!a)throw Error((0,g.default)(3));return c}(),t=s?.allValues!==void 0?s?.parent.id:void 0,u=b.useMemo(()=>({disabled:q}),[q]),v=(0,o.useRenderElement)("div",a,{ref:c,state:r,props:k,stateAttributesMapping:f.fieldValidityMapping});return(0,m.jsx)(n,{controlId:t,children:(0,m.jsx)(y.Provider,{value:u,children:v})})});a.s(["Control",0,O,"Description",0,G,"Error",0,F,"Item",0,Q,"Label",0,A,"Root",0,w,"Validity",0,function(a){let{children:c}=a,{validityData:d,invalid:f}=(0,e.useFieldRootContext)(!1),g=b.useMemo(()=>s(d,f),[d,f]),h=!1===g.state.valid,{transitionStatus:i}=(0,D.useTransitionStatus)(h),j=b.useMemo(()=>({...g,validity:g.state,transitionStatus:i}),[g,i]);return(0,m.jsx)(b.Fragment,{children:c(j)})}],17324);var R=a.i(17324),R=R;let S=b.forwardRef(function(a,b){return(0,m.jsx)(R.Control,{ref:b,...a})});a.s(["Input",0,S],88529)},5084,a=>{"use strict";var b=a.i(87924),c=a.i(18816),d=a.i(68114);a.s(["Separator",0,function({className:a,orientation:e="horizontal",...f}){return(0,b.jsx)(c.Separator,{"data-slot":"separator",orientation:e,className:(0,d.cn)("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",a),...f})}])}];
2
-
3
- //# sourceMappingURL=_0kw6yq_._.js.map